![iptables 规则用于阻止互联网但允许设备使用本地网络](https://linux22.com/image/723587/iptables%20%E8%A7%84%E5%88%99%E7%94%A8%E4%BA%8E%E9%98%BB%E6%AD%A2%E4%BA%92%E8%81%94%E7%BD%91%E4%BD%86%E5%85%81%E8%AE%B8%E8%AE%BE%E5%A4%87%E4%BD%BF%E7%94%A8%E6%9C%AC%E5%9C%B0%E7%BD%91%E7%BB%9C.png)
我正在尝试阻止网络上某些设备访问互联网。DD-WRT 有办法做到这一点,但仅限于 WAN 上的设备。该设备连接到 LAN。阻止互联网但允许本地网络的 iptables 规则是什么。类似这样的吗?
iptables FORWARD ????? -j DROP
答案1
回答标题中的问题,你可以通过接口阻止转发。如果你的内部接口是eth1
,而你的外部接口是eth0
,请尝试
iptables -A FORWARD -i eth1 -o eth0 -j REJECT
将规则放在 FORWARD 链中的正确位置取决于您。对于内部客户端,我倾向于选择 REJECT 而不是 DROP,因为它会给他们一个实际的响应,并且明确表示他们不会成功。
处理问题主体中的问题(其中说某些设备,而不仅仅是设备),正如 Ron Maupin 指出的那样,没有简单的方法可以做到这一点,因为可靠地识别网络上的设备需要一个中间步骤。
假设你的开关设备不支持802.1x,运行内部 VPN 可让您向合格设备提供凭证,它们可以使用这些凭证来保护其网络出口。我为此使用 OpenVPN。该问题已得到详细解决在我的技术说明中,虽然是在流量整形和豁免的背景下,而不是流量禁止和豁免,但后者更简单。概括地说,你在防火墙设备上设置一个 OpenVPN 服务器,向合格的设备颁发密钥和证书,然后允许路由器上的流量在 OpenVPN 纯文本接口和互联网之间流动,例如
iptables -A FORWARD -i tun+ -o eth0 -j ACCEPT
不要忘记也允许回程流量。
答案2
回答这个具体问题:“如何阻止 LAN 上的特定 MAC 地址访问互联网,但仍能通过 LAN 本身保持其可访问”:
iptables -I FORWARD 1 -m mac --mac-source be:be:fe:fe:ca:12 -o eth0 -j REJECT
(假设 eth0 是您的互联网)
这会将规则插入到 FORWARD 链的顶部,这对我有用。
我使用它来阻止我的打印机打电话回家,而无需牺牲 wifi 打印。
重要警告:
但这只适用于同一网络,因为 MAC 寻址是链路层特定的,在使用路由时不会被转发。因此,只要设备位于需要路由的不同网络上,这种方法就行不通。