qubes-iptables 1.6 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374
  1. #!/bin/bash
  2. #
  3. # qubes-iptables Start Qubes base iptables firewall
  4. #
  5. # chkconfig: 2345 08 92
  6. # description: Loads iptables firewall
  7. #
  8. # config: /etc/qubes/iptables.rules
  9. # config: /etc/qubes/ip6tables.rules
  10. #
  11. ### BEGIN INIT INFO
  12. # Provides: iptables
  13. # Required-Start:
  14. # Required-Stop:
  15. # Default-Start: 2 3 4 5
  16. # Default-Stop: 0 1 6
  17. # Short-Description: Loads Qubes base iptables firewall
  18. # Description: Loads Qubes base iptables firewall
  19. ### END INIT INFO
  20. IPTABLES=iptables
  21. IPTABLES_DATA_DIR=/etc/qubes
  22. if [ ! -x /sbin/$IPTABLES ]; then
  23. echo $"${IPTABLES}: /sbin/$IPTABLES does not exist."
  24. exit 5
  25. fi
  26. start() {
  27. ipt=$1
  28. IPTABLES_DATA=$IPTABLES_DATA_DIR/${ipt}.rules
  29. ipv6_enabled=
  30. if qubesdb-read /qubes-ip6 >/dev/null 2>&1 || \
  31. qubesdb-read /qubes-netvm-gateway6 >/dev/null 2>&1; then
  32. ipv6_enabled=true
  33. fi
  34. # if IPv6 is enabled, load alternative rules file
  35. if [ "$ipt" = "ip6tables" ] && [ -n "$ipv6_enabled" ]; then
  36. IPTABLES_DATA=$IPTABLES_DATA_DIR/${ipt}-enabled.rules
  37. fi
  38. CMD=$ipt
  39. # Do not start if there is no config file.
  40. [ ! -f "$IPTABLES_DATA" ] && return 6
  41. CMD_ARGS=
  42. if "$CMD-restore" --help 2>&1 | grep -q wait=; then
  43. CMD_ARGS=--wait
  44. fi
  45. echo -n $"${CMD}: Applying firewall rules: "
  46. "$CMD-restore" $CMD_ARGS "$IPTABLES_DATA"
  47. ret="$?"
  48. if [ "$ret" -eq 0 ]; then
  49. echo OK
  50. else
  51. echo FAIL; return 1
  52. fi
  53. return $ret
  54. }
  55. case "$1" in
  56. start)
  57. start iptables && start ip6tables
  58. RETVAL=$?
  59. ;;
  60. *)
  61. echo $"Usage: ${IPTABLES} start"
  62. RETVAL=2
  63. ;;
  64. esac
  65. exit $RETVAL