我试图阻止所有进出内部 IP 地址的流量(此服务器充当网络的路由器)。到目前为止,我已经尝试了以下操作:iptables -A INPUT -s 192.168.1.111 -j DROP & iptables -A OUTPUT -d 192.168.1.111 -j DROP,其中 192.168.1.111 是我试图阻止流量的 IP 地址。局域网连接到br0。这是我当前的 iptables 设置(我删除了端口转发等以使其更容易通过):
# Generated by iptables-save v1.4.8 on Sat Feb 16 21:21:16 2013
*nat
:PREROUTING ACCEPT [184556:41149689]
:POSTROUTING ACCEPT [13698:835740]
:OUTPUT ACCEPT [77252:6378101]
-A POSTROUTING -o eth0 -j MASQUERADE
COMMIT
# Completed on Sat Feb 16 21:21:16 2013
# Generated by iptables-save v1.4.8 on Sat Feb 16 21:21:16 2013
*filter
:INPUT DROP [10054:2687428]
:FORWARD ACCEPT [1377:76856]
:OUTPUT ACCEPT [0:0]
-A INPUT -s 192.168.1.0/24 -i br0 -j ACCEPT
-A INPUT -m state --state RELATED,ESTABLISHED -j ACCEPT
-A INPUT -p icmp -j ACCEPT
-A INPUT -s 127.0.0.1/32 -j ACCEPT
-A FORWARD -i eth0 -o Br0 -m state --state RELATED,ESTABLISHED -j ACCEPT
-A FORWARD -i br0 -o eth0 -j ACCEPT
-A FORWARD -m state --state RELATED,ESTABLISHED -j ACCEPT
-A OUTPUT -j ACCEPT
-A OUTPUT -s 127.0.0.1/32 -j ACCEPT
COMMIT
# Completed on Sat Feb 16 21:21:16 2013
使用当前设置,我如何才能阻止所有进出 IP 的流量?我不是世界上最好的 iptables,所以任何帮助将不胜感激,谢谢!
INPUT
和OUTPUT
iptables 链适用于发往本地服务器的流量。通过防火墙路由的任何数据包都由FORWARD
链处理。所以在这种情况下,你需要防止数据包被linux路由器转发到使用FORWARD
链的内部客户端。我建议您从 FORWARD 链的默认 DROP 策略开始。因为您当前的设置显示默认情况下您的 FORWARD 策略是 ACCEPT,这不是最安全的设置。因此,从 forward 的丢弃策略开始 -
然后允许数据包转发到内部客户端 -
如果内部客户端在允许的子网内,则设置规则以显式丢弃发往该客户端的数据包 -
您犯的错误是您确实附加 (-A) 192.168.1.111 的阻止规则而不是插入它 (-I),因为如果您注意 INPUT/OUTPUT 中的某些规则确实允许来自 192.168.1.X 段的流量. 所以这样做:
如果 192.168.1.111 使用与路由器相同的服务器而不是将 similra 规则添加到 FORWARD 链
iptables -I FORWARD -d 192.168.1.111 -j DROP