来自 2 个子网的 Iptables 欺骗

来自 2 个子网的 Iptables 欺骗

我有来自两个子网的数据包进入我的防火墙 eth1:

10.111.12.0/24 和 10.10.100.0/24

我这样设置 iptables 规则:

 iptables -A INPUT -i eth1 ! -s 10.111.12.0/24 -j DROP
 iptables -A INPUT -i eth1 ! -s 10.10.100.0/24 -j DROP

但是 - 第一规则不允许检查第二规则,因为 10.10.100.0/24 不是 10.111.12.0/24,并且它与第一条规则匹配。如何修复?

答案1

最简单的方法是标记允许的数据包,然后丢弃所有未标记的数据包:

iptables -t mangle -A PREROUTING -i eth1 -s 10.111.12.0/24 -j MARK --set-mark 1
iptables -t mangle -A PREROUTING -i eth1 -s 10.10.100.0/24 -j MARK --set-mark 1
iptables -t mangle -A PREROUTING -i eth1 -m mark ! --mark 1 -j DROP

您应该考虑到可能还有其他您需要/想要传输的数据包。

答案2

链在这里会是一种有用的方法。链的作用有点像子程序或函数。RETURN 只是意味着该数据包的控制权将返回到上一个链,并且规则将继续被评估。

# create a new chain
iptables -t filter -N in_validnet

# all incoming packets on eth1 are evaluated by the chain
iptables -t filter -A INPUT -i eth1 -j in_validnet

# packets from these networks are returned for further evaluation
iptables -A in_validnet -s 10.111.12.0/24 -j RETURN
iptables -A in_validnet -s 10.10.100.0/24 -j RETURN

# everything else gets dropped
iptables -A in_validnet -j DROP

相关内容