Package: iptables-persistent
Version: 0.5.1
Severity: wishlist
Hello,
I like the init.d script but sometimes I would like to disable the firewall.
It could be great if the stop argument flushes the rules so as there are no
more filtering.
I attached a patch which is inspired from the RHEL /etc/init.d/iptables that
could do the job.
--- /etc/init.d/iptables-persistent 2011-07-18 21:55:44.000000000 +0200
+++ iptables-persistent 2011-07-18 21:55:32.000000000 +0200
@@ -19,6 +19,9 @@
rc=0
+IPT=/sbin/iptables
+IPT6=/sbin/ip6tables
+
load_rules()
{
log_action_begin_msg "Loading iptables rules"
@@ -52,19 +55,61 @@
if [ -x /sbin/iptables-save ]; then
log_action_cont_msg " IPv4"
iptables-save > /etc/iptables/rules.v4
- if [ $? -ne 0 ]; then
- rc=1
- fi
+ if [ $? -ne 0 ]; then
+ rc=1
+ fi
fi
- #save IPv6 rules
- if [ -x /sbin/ip6tables-save ]; then
- log_action_cont_msg " IPv6"
- ip6tables-save > /etc/iptables/rules.v6
- if [ $? -ne 0 ]; then
- rc=1
- fi
- fi
+ #save IPv6 rules
+ if [ -x /sbin/ip6tables-save ]; then
+ log_action_cont_msg " IPv6"
+ ip6tables-save > /etc/iptables/rules.v6
+ if [ $? -ne 0 ]; then
+ rc=1
+ fi
+ fi
+
+ log_action_end_msg $rc
+}
+
+flush_rules()
+{
+ log_action_begin_msg "Flushing rules"
+ # flush ipv4 rules
+ if [ -x $IPT ]; then
+ log_action_cont_msg " IPv4"
+ $IPT -F
+ $IPT -X
+ $IPT -Z
+ for table in $(</proc/net/ip_tables_names)
+ do
+ $IPT -t $table -F
+ $IPT -t $table -X
+ $IPT -t $table -Z
+ done
+ $IPT -P INPUT ACCEPT
+ $IPT -P OUTPUT ACCEPT
+ $IPT -P FORWARD ACCEPT
+ fi
+
+ # flush ipv6 rules
+ if [ -x $IPT6 ]; then
+ log_action_cont_msg " IPv6"
+ $IPT6 -F
+ $IPT6 -X
+ $IPT6 -Z
+ for table in $(</proc/net/ip6_tables_names)
+ do
+ $IPT6 -t $table -F
+ $IPT6 -t $table -X
+ $IPT6 -t $table -Z
+ done
+ $IPT6 -P INPUT ACCEPT
+ $IPT6 -P OUTPUT ACCEPT
+ $IPT6 -P FORWARD ACCEPT
+ fi
+
+ rc=0
log_action_end_msg $rc
}
@@ -77,11 +122,12 @@
save_rules
;;
stop)
+ flush_rules
;;
*)
- echo "Usage: $0 {start|restart|reload|force-reload|save}" >&2
- exit 1
- ;;
+ echo "Usage: $0 {start|restart|reload|force-reload|save}" >&2
+ exit 1
+ ;;
esac
exit $rc