/ 24exception的/ 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子网除外。

有没有在上面的行中指定这个方法? 我更喜欢不添加一个exception规则,用-j accept .99 -subnet,因为还有其他规则指向那个特定的子网。

使用一个新的链。 有多种方法可以做到这一点,我的偏好是这样的:

 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 -s 192.168.0.0/16 -i br0.105 -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 

因为还有其他规则也适用

什么是其他规则? 它申请.99子网或申请192.168.0.0/16?

如果它只是申请.99子网,你只需要把它移到上面这两条规则。

创build一个新的链:

 iptables -N subnet1 

将exceptionnetworking指向新链:

 iptables -I FORWARD -i br0.105 -d 192.168.99.0/24 -j subnet1 

将其他规则应用于该链中的stream量:

 iptables -I subnet1 ... -j DROP/ACCEPT