qubes_netvm 2.4 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102
  1. #!/bin/sh
  2. #
  3. # chkconfig: 2345 99 00
  4. # description: Starts/stops Qubes default netvm
  5. #
  6. ### BEGIN INIT INFO
  7. # Provides: qubes-networking
  8. # Required-Start: qubes-core
  9. # Default-Start: 3 4 5
  10. # Default-Stop: 0 1 2 6
  11. # Default-Enabled: yes
  12. # Short-Description: Start/stop qubes networking
  13. # Description: Starts and stops the qubes networking
  14. ### END INIT INFO
  15. #
  16. # Source function library.
  17. . /etc/rc.d/init.d/functions
  18. NETVM=$(qvm-get-default-netvm)
  19. start()
  20. {
  21. if [ x$NETVM = x ] ; then
  22. echo WARNING: Qubes NetVM not configured!
  23. echo -n $"Doing nothing:"
  24. elif [ $NETVM = "dom0" ] ; then
  25. echo -n $"Setting up net backend in Dom0:"
  26. /etc/init.d/NetworkManager start
  27. brctl addbr br0 || exit 1
  28. ifconfig br0 10.0.0.1 netmask 255.255.0.0 up || exit 1
  29. echo "1" > /proc/sys/net/ipv4/ip_forward || exit 1
  30. /usr/sbin/dnsmasq --listen-address 10.0.0.1 --bind-interfaces || exit 1
  31. iptables -t nat -A POSTROUTING -s 10.0.0.0/16 '!' -d 10.0.0.0/16 -j MASQUERADE || exit 1
  32. iptables -I INPUT 1 -i br0 -s 10.0.0.0/16 -j ACCEPT || exit 1
  33. iptables -I FORWARD 1 -i br0 -s 10.0.0.0/16 -j ACCEPT || exit 1
  34. iptables -I FORWARD 1 -o br0 -d 10.0.0.0/16 -m state --state ESTABLISHED,RELATED -j ACCEPT || exit 1
  35. else
  36. echo -n $"Starting default NetVM:"
  37. /usr/lib/qubes/unbind_all_network_devices || exit 1
  38. qvm-start -q --no-guid $NETVM || exit 1
  39. fi
  40. touch /var/lock/subsys/qubes_netvm
  41. success
  42. echo
  43. return 0
  44. }
  45. stop()
  46. {
  47. if [ x$NETVM = x ] ; then
  48. echo WARNING: Qubes NetVM not configured!
  49. echo -n $"Doing nothing:"
  50. elif [ $NETVM = "dom0" ] ; then
  51. echo -n $"Stopping Qubes networking in Dom0:"
  52. iptables -t nat -D POSTROUTING -s 10.0.0.0/16 '!' -d 10.0.0.0/16 -j MASQUERADE
  53. iptables -D INPUT -i br0 -s 10.0.0.0/16 -j ACCEPT || exit 1
  54. iptables -D FORWARD -i br0 -s 10.0.0.0/16 -j ACCEPT || exit 1
  55. iptables -D FORWARD -o br0 -d 10.0.0.0/16 -m state --state ESTABLISHED,RELATED -j ACCEPT || exit 1
  56. killall dnsmasq
  57. ifconfig br0 down
  58. brctl delbr br0
  59. else
  60. echo -n $"Stopping default NetVM:"
  61. qvm-run -q --shutdown --wait $NETVM
  62. fi
  63. rm -f /var/lock/subsys/qubes_netvm
  64. success
  65. echo
  66. return 0
  67. }
  68. case "$1" in
  69. start)
  70. start
  71. ;;
  72. stop)
  73. stop
  74. ;;
  75. *)
  76. echo $"Usage: $0 {start|stop}"
  77. exit 3
  78. ;;
  79. esac
  80. exit $RETVAL