]> git.ipfire.org Git - people/ms/ipfire-2.x.git/commitdiff
suricata: Store bypass flag in connmark and restore
authorMichael Tremer <michael.tremer@ipfire.org>
Wed, 18 Aug 2021 16:27:29 +0000 (17:27 +0100)
committerMichael Tremer <michael.tremer@ipfire.org>
Wed, 18 Aug 2021 16:27:29 +0000 (17:27 +0100)
Signed-off-by: Michael Tremer <michael.tremer@ipfire.org>
src/initscripts/system/firewall
src/initscripts/system/suricata

index baa39abe13b00461b1f11e2e83b8ecebd3a54a9e..9fe222eab0257ce2672ea05ca2d029c298158419 100644 (file)
@@ -98,6 +98,9 @@ iptables_init() {
        iptables -t raw -N CONNTRACK
        iptables -t raw -A PREROUTING -j CONNTRACK
 
+       # Restore any connection marks
+       iptables -t mangle -A PREROUTING -j CONNMARK --restore-mark
+
        # Fix for braindead ISPs
        iptables -A FORWARD -p tcp --tcp-flags SYN,RST SYN -j TCPMSS --clamp-mss-to-pmtu
 
index 2577621b8f0617e5b01c8bd60ddd8361c3d2572e..72d01b91dab82df662178ec9d36b2c651ecf377d 100644 (file)
@@ -154,10 +154,14 @@ function generate_fw_rules {
                        done
                done
 
-               # Clear repeat bit, so that it does not confuse IPsec or QoS
-               iptables -w -A "${IPS_INPUT_CHAIN}" -j MARK --set-xmark "0x0/${REPEAT_MASK}"
-               iptables -w -A "${IPS_FORWARD_CHAIN}" -j MARK --set-xmark "0x0/${REPEAT_MASK}"
-               iptables -w -A "${IPS_OUTPUT_CHAIN}" -j MARK --set-xmark "0x0/${REPEAT_MASK}"
+               # Add common rules at the end of the chain
+               for chain in "${IPS_INPUT_CHAIN}" "${IPS_FORWARD_CHAIN}" "${IPS_OUTPUT_CHAIN}"; do
+                       # Clear repeat bit
+                       iptables -w -A "${chain}" -j MARK --set-xmark "0x0/${REPEAT_MASK}"
+
+                       # Store bypass bit in CONNMARK
+                       iptables -w -A "${chain}" -m mark --mark "${BYPASS_MARK}/${BYPASS_MASK}" -j CONNMARK --save-mark
+               done
        fi
 }