我正在尝试使用 Debian 中的 iptables 阻止所有 wifi 连接,但它不起作用,以下是我尝试过的方法
iptables -A INPUT -i wlan0 -j DROP
我也尝试过阻止端口 80 和 443,但没有用
更新:
root@raspberrypi:~# iptables -L FORWARD -v
Chain FORWARD (policy ACCEPT 0 packets, 0 bytes)
pkts bytes target prot opt in out source destination
0 0 DROP all -- wlan0 any anywhere anywhere
更新1:
root@raspberrypi:~# iptables -L -v
Chain INPUT (policy ACCEPT 918 packets, 122K bytes)
pkts bytes target prot opt in out source destination
Chain FORWARD (policy ACCEPT 0 packets, 0 bytes)
pkts bytes target prot opt in out source destination
0 0 DROP all -- wlan0 any anywhere anywhere
Chain OUTPUT (policy ACCEPT 777 packets, 65072 bytes)
pkts bytes target prot opt in out source destination
更新2:
gateway---(wlan0)pi(eth0)----client
更新3: 我的 wlan0 没有配置
答案1
根据您在问题下方的评论,您想要替换INPUT
为FORWARD
:
iptables -A FORWARD -i wlan0 -j DROP
INPUT
过滤发往机器的数据包,但仍允许转发数据包。因此,如果您想要强制门户,则需要使用FORWARD
来捕获否则将被路由的数据包。
提示:对于强制门户,我建议辣椒库瓦因为它的可扩展性非常好。虽然它在小规模上效果很好,但我曾参与过在全国范围内的超大规模网络中实施它。
编辑#1:
您可能希望使用-I
而不是-A
来确保该规则优先于允许其通过的任何其他规则。如果这种情况仍然发生,DROP
请发布 的输出。iptables -L FORWARD -v
编辑#2:
我倾向于认为你的 Pi 并没有充当路由器,因为规则没有捕获任何数据包(如最左边的数字所示)。所以显而易见的问题是,这些数据包要去哪里?请发布 的输出iptables -L -v
。与上一个相同,但现在我们想要所有表,而不仅仅是FORWARD
。
注意:我可以看到你默认为ACCEPT
。确保没有任何东西偷偷溜过去的常用方法是将默认设置为DROP
,明确仅ACCEPT
允许应该允许的事情。
编辑#3:
数据包似乎在OUTPUT
链中退缩了。尝试将规则更改为:iptables -A FORWARD -o wlan0 -j DROP
(wlan0 是输出接口,而不是输入接口?)