On Thu, Jul 02, 2020 at 12:20:20PM +0200, gustavo panizzo wrote:
Would you accept an upload fixing #961589 [2], #963012 [3], changing the flush mechanism [4] and allowing granular configuration of the save action [5]?
here is the debdiff for those changes Quick test shows that works fine, I'll test it more and report back in a few days cheers -- IRC: gfa GPG: 0x27263FA42553615F904A7EBE2A40A2ECB8DAD8D5 OLD GPG: 0x44BB1BA79F6C6333
diff -Nru iptables-persistent-1.0.11/debian/changelog iptables-persistent-1.0.11+deb10u1/debian/changelog --- iptables-persistent-1.0.11/debian/changelog 2019-02-09 05:36:39.000000000 +0100 +++ iptables-persistent-1.0.11+deb10u1/debian/changelog 2020-07-02 16:26:05.000000000 +0200 @@ -1,3 +1,16 @@ +iptables-persistent (1.0.11+deb10u1) buster; urgency=medium + + * [cdc4a5] Do not load modules. + Thanks to Thorsten Glaser <t...@mirbsd.de> + (Closes: #963012) + * [cdc4a5] Do not call log_action_cont_msg() + Thanks to Synthea <genom...@firemail.cc> + (Closes: #961589) + * [b6e6f9] Backport the logic to flush rules from 1.0.14 + * [60a86f] Allow granular configuration for the save action + + -- gustavo panizzo <g...@zumbi.com.ar> Thu, 02 Jul 2020 14:26:05 +0000 + iptables-persistent (1.0.11) unstable; urgency=medium * [e491d7] Make iptables-persistent to Pre-Depends on iptables. diff -Nru iptables-persistent-1.0.11/debian/netfilter-persistent.default iptables-persistent-1.0.11+deb10u1/debian/netfilter-persistent.default --- iptables-persistent-1.0.11/debian/netfilter-persistent.default 2018-10-10 13:08:41.000000000 +0200 +++ iptables-persistent-1.0.11+deb10u1/debian/netfilter-persistent.default 2020-07-02 16:26:05.000000000 +0200 @@ -2,3 +2,9 @@ # Plugins may extend this file or have their own FLUSH_ON_STOP=0 + +# Set to yes to skip saving rules/sets when netfilter-persistent is called with +# the save parameter +# IPTABLES_SKIP_SAVE=yes +# IP6TABLES_SKIP_SAVE=yes +# IPSET_SKIP_SAVE=yes diff -Nru iptables-persistent-1.0.11/plugins/10-ipset iptables-persistent-1.0.11+deb10u1/plugins/10-ipset --- iptables-persistent-1.0.11/plugins/10-ipset 2019-02-09 03:10:09.000000000 +0100 +++ iptables-persistent-1.0.11+deb10u1/plugins/10-ipset 2020-07-02 16:26:05.000000000 +0200 @@ -17,6 +17,11 @@ PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin +# Source configuration +if [ -f "/etc/default/netfilter-persistent" ]; then + . /etc/default/netfilter-persistent +fi + # Create the ipsets and populate them load_sets () { @@ -31,9 +36,11 @@ # Save current contents of the ipsets to file save_sets () { - touch /etc/iptables/ipsets - chmod 0640 /etc/iptables/ipsets - ipset save > /etc/iptables/ipsets + if [ ! "${IPSET_SKIP_SAVE}x" = "yesx" ]; then + touch /etc/iptables/ipsets + chmod 0640 /etc/iptables/ipsets + ipset save > /etc/iptables/ipsets + fi } # flush sets diff -Nru iptables-persistent-1.0.11/plugins/15-ip4tables iptables-persistent-1.0.11+deb10u1/plugins/15-ip4tables --- iptables-persistent-1.0.11/plugins/15-ip4tables 2019-02-09 03:10:09.000000000 +0100 +++ iptables-persistent-1.0.11+deb10u1/plugins/15-ip4tables 2020-07-02 16:26:05.000000000 +0200 @@ -14,6 +14,11 @@ PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin +# Source configuration +if [ -f "/etc/default/netfilter-persistent" ]; then + . /etc/default/netfilter-persistent +fi + load_rules() { #load IPv4 rules @@ -26,35 +31,29 @@ save_rules() { + if [ ! "${IPTABLES_SKIP_SAVE}x" = "yesx" ]; then #save IPv4 rules - #need at least iptable_filter loaded: - modprobe -b -q iptable_filter || true - if [ ! -f /proc/net/ip_tables_names ]; then - echo "Warning: skipping IPv4 (Kernel support is missing)" - else - touch /etc/iptables/rules.v4 - chmod 0640 /etc/iptables/rules.v4 - iptables-save > /etc/iptables/rules.v4 - fi + touch /etc/iptables/rules.v4 + chmod 0640 /etc/iptables/rules.v4 + iptables-save > /etc/iptables/rules.v4 + fi } flush_rules() { - if [ ! -f /proc/net/ip_tables_names ]; then - log_action_cont_msg "Warning: skipping IPv4 (Kernel support is missing)" - elif [ $(which iptables) ]; then - for chain in INPUT FORWARD OUTPUT - do - iptables -P $chain ACCEPT - done - for param in F Z X; do iptables -$param; done - for table in $(cat /proc/net/ip_tables_names) - do - iptables -t $table -F - iptables -t $table -Z - iptables -t $table -X - done - fi + TABLES=$(iptables-save | sed -E -n 's/^\*//p') + for table in $TABLES + do + CHAINS=$(iptables-save -t $table | sed -E -n 's/^:([A-Z]+).*/\1/p') + for chain in $CHAINS + do + # policy can't be set on user-defined chains + iptables -t $table -P $chain ACCEPT || true + done + iptables -t $table -F + iptables -t $table -Z + iptables -t $table -X + done } case "$1" in diff -Nru iptables-persistent-1.0.11/plugins/25-ip6tables iptables-persistent-1.0.11+deb10u1/plugins/25-ip6tables --- iptables-persistent-1.0.11/plugins/25-ip6tables 2019-02-09 03:10:09.000000000 +0100 +++ iptables-persistent-1.0.11+deb10u1/plugins/25-ip6tables 2020-07-02 16:26:05.000000000 +0200 @@ -14,6 +14,11 @@ PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin +# Source configuration +if [ -f "/etc/default/netfilter-persistent" ]; then + . /etc/default/netfilter-persistent +fi + # Exit fast if IPv6 is disabled test -e /proc/sys/net/ipv6 || exit 0 @@ -29,35 +34,29 @@ save_rules() { + if [ ! "${IPTABLES_SKIP_SAVE}x" = "yesx" ]; then #save IPv6 rules - #need at least ip6table_filter loaded: - modprobe -b -q ip6table_filter || true - if [ ! -f /proc/net/ip6_tables_names ]; then - log_action_cont_msg "Warning: skipping IPv6 (Kernel support is missing)" - else - touch /etc/iptables/rules.v6 - ip6tables-save > /etc/iptables/rules.v6 - chmod 0640 /etc/iptables/rules.v6 - fi + touch /etc/iptables/rules.v6 + ip6tables-save > /etc/iptables/rules.v6 + chmod 0640 /etc/iptables/rules.v6 + fi } flush_rules() { - if [ ! -f /proc/net/ip6_tables_names ]; then - echo "Warning: skipping IPv6 (Kernel support is missing)" - elif [ $(which ip6tables) ]; then - for chain in INPUT FORWARD OUTPUT - do - ip6tables -P $chain ACCEPT - done - for param in F Z X; do ip6tables -$param; done - for table in $(cat /proc/net/ip6_tables_names) - do - ip6tables -t $table -F - ip6tables -t $table -Z - ip6tables -t $table -X - done - fi + TABLES=$(ip6tables-save | sed -E -n 's/^\*//p') + for table in $TABLES + do + CHAINS=$(ip6tables-save -t $table | sed -E -n 's/^:([A-Z]+).*/\1/p') + for chain in $CHAINS + do + # policy can't be set on user-defined chains + ip6tables -t $table -P $chain ACCEPT || true + done + ip6tables -t $table -F + ip6tables -t $table -Z + ip6tables -t $table -X + done } case "$1" in