为什么我的iptables脚本不能正常工作?

我有一个PC惠普2接口在同一子网。 我需要阻止从一个IP到一个接口的所有stream量。 此外,我需要接受来自该子网上的每个接口的连接。

有人能告诉我我做错了吗?

这是我的脚本。

iptables -F iptables -X iptables -Z iptables -t nat -F iptables -P INPUT DROP iptables -P OUTPUT ACCEPT iptables -P FORWARD ACCEPT iptables -A INPUT -i eth0 -s 192.168.8.0/24 -j ACCEPT iptables -A INPUT -i eth1 -s 192.168.8.0/24 -j ACCEPT iptables -A INPUT -i eth1 -s 192.168.8.32 -j DROP 

这是因为如果你使用iptables -A ,你添加的规则被放在链的末尾。 只要一条规则匹配,iptables就会执行操作(DROP,ACCEPT)并停止处理剩下的规则。

在你的情况下,只要IP 192.168.8.32到达iptables,它看到规则192.168.8.0/24 -j ACCEPT ,IP匹配规则,并且它接受连接。 DROP规则永远不会被评估。

您必须先放置DROP规则,然后ACCEPT DROP规则。

首先,你应该在开始的时候放置更精确的DROP规则。 否则,更全面的ACCEPT规则将优先。

其次,如果对同一个子网有两个input接口,那么对于两个input接口都应该有一个DROP规则。

这是我会build议的:

 iptables -F iptables -X iptables -Z iptables -t nat -F iptables -P INPUT DROP iptables -P OUTPUT ACCEPT iptables -P FORWARD ACCEPT iptables -A INPUT -i eth0 -s 192.168.8.32 -j DROP iptables -A INPUT -i eth1 -s 192.168.8.32 -j DROP iptables -A INPUT -i eth0 -s 192.168.8.0/24 -j ACCEPT iptables -A INPUT -i eth1 -s 192.168.8.0/24 -j ACCEPT