具有 /24 例外的 /16 子网的 iptables

具有 /24 例外的 /16 子网的 iptables

简单地说,我想使用这些规则:

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

相关内容