我有一台运行 iptables 的 Linux 机器。流量通过它从 wlan0 进入,从 wlan1 出去。我想只允许特定机器通过。我尝试通过 MAC,失败了,然后我尝试通过 IP,令我惊讶的是,它也失败了。
对于这两种情况,我都将 FORWARD 策略设置为 DROP
$ iptables -P FORWARD DROP
然后我就这么做了
$ iptables -A FORWARD -i wlan0 -m mac --mac-source 76:AB:BF:80:4E:B3 -j ACCEPT
当它不起作用时我使用以下命令激活日志:
$ iptables -I FORWARD -i wlan0 -j LOG
kern.log 显示我的源 MAC 地址是 linux wlan0 的 MAC。然后我尝试通过 IP 地址:
$ iptables -A FORWARD -s 192.168.1.10 -j ACCEPT
它也失败了。然后我尝试将策略保留为接受,并在上面的规则之后添加以下内容以删除所有内容:
$ iptables -A FORWARD -j DROP
但它仍然不起作用,因为我的客户端丢包了。它只在策略为“接受”时才起作用(但那时没有过滤)。这让我相信规则与流量不匹配。我做错了什么?
编辑:
我的完整 iptables 链:
$ iptables -L
Chain INPUT (policy ACCEPT)
target prot opt source destination
Chain FORWARD (policy DROP)
target prot opt source destination
ACCEPT all -- anywhere anywhere MAC 76:AB:BF:80:4E:B3
ACCEPT all -- 192.168.1.10 anywhere
Chain OUTPUT (policy ACCEPT)
target prot opt source destination