简单地说,我想使用这些规则:
iptables -I FORWARD -i br0.105 -d 192.168.0.0/16 -j DROP
iptables -I FORWARD -s 192.168.0.0/16 -i br0.105 -j DROP
但 192.168.99.0/24 子网除外。
-j accept
有没有办法在上面几行中指定这一点?我宁愿不为子网添加例外规则.99
,因为还有其他规则引用该特定子网。
答案1
使用新链条。有多种方法可以做到这一点,我偏爱的是这个:
iptables -N DROP_BAD_HOSTS
iptables -A DROP_BAD_HOSTS -s 192.168.99.0/24 -j RETURN
iptables -A DROP_BAD_HOSTS -i br0.105 -d 192.168.0.0/16 -j DROP
iptables -A DROP_BAD_HOSTS -i br0.105 -s 192.168.0.0/16 -j DROP
iptables -A FORWARD -j DROP_BAD_HOSTS
请注意,如果源是您想要排除的 /24,则第一条规则会执行 RETURN。
另一种方法是这样的,但灵活性较差,因为您将来无法添加另一个要排除的范围:
iptables -N DROP_BAD_HOSTS
iptables -A DROP_BAD_HOSTS -i br0.105 -d 192.168.0.0/16 -j DROP
iptables -A DROP_BAD_HOSTS -s 192.168.0.0/16 -i br0.105 -j DROP
iptables -A FORWARD ! -s 192.168.99.0/24 -j DROP_BAD_HOSTS
答案2
因为还有其他规则也适用
还有什么规则?适用于 .99 子网还是适用于 192.168.0.0/16?
如果它仅适用于 .99 子网,则只需将其上移,高于这两个规则。
答案3
创建新链:
iptables -N subnet1
将异常网络指向新的链:
iptables -I FORWARD -i br0.105 -d 192.168.99.0/24 -j subnet1
对该链中的流量应用其他规则:
iptables -I subnet1 ... -j DROP/ACCEPT