使用 iptables 允许 LAN 并丢弃未知设备的 WAN

使用 iptables 允许 LAN 并丢弃未知设备的 WAN

我在 stackoverflow 上发布了此内容,但它与主题无关。

我四处寻找,但找不到问题的答案。我使用 Raspberry Pi 作为 LAN 和两个 WAN 之间的互联网网关。这是我在 iptables 中的 FORWARD 链的示例。

链转发(策略接受 541 个数据包,164K 字节)
pkts 字节数 目标 协议 选择加入 退出 源 目标
0 0 wifi.usb 全部 -- * * 0.0.0.0/0 0.0.0.0/0 MAC 00:11:22:33:44:55
0 0 other.dev 全部 -- * * 0.0.0.0/0 0.0.0.0/0 MAC 66:77:88:99:aa:bb
0 0 本地 全部 -- * * 0.0.0.0/0 0.0.0.0/0

这些设备跳转到自己的链进行字节计数并接受。跳转到本地会捕获任何不是来自上述设备的数据包并拒绝 WAN 但允许 LAN。

本地连锁店 (0 篇引用)
pkts 字节数 目标 协议 选择加入 退出 源 目标
0 0 接受全部 -- * * 192.168.100.0/24 192.168.100.0/24
67 698 全部拒绝 -- * * 0.0.0.0/0 0.0.0.0/0 拒绝-icmp端口不可达

所有设备的用户链都跳转到“接受”状态。

Chain wifi.usb (1 个引用)
pkts 字节数 目标 协议 选择加入 退出 源 目标
0 0 接受全部 -- * * 0.0.0.0/0 0.0.0.0/0

但是,在 FORWARD 中跳转到本地规则后,所有互联网流量都会进入本地链并被拒绝。我如何才能继续使用本地链来捕获未知设备而不捕获已知设备?

编辑:我确实忘记提及的一件事是,当我按源 IP 地址过滤时,它可以按我想要的方式工作,但我更喜欢按 MAC 地址过滤。

答案1

我找到了问题所在。它解决了我遇到的两个问题。

我用它来计算用户使用的字节数,然后将其转发到目的地。问题是使用量没有增加,就像上面的问题一样。

我忘记为每条上传规则添加一条下载规则。添加这些规则后,

277K  330M wifi.usb   all  --  *   *   0.0.0.0/0       192.168.100.3
144K   20M wifi.usb   all  --  *   *   192.168.100.3   0.0.0.0/0       MAC 00:11:22:33:44:55
   0     0 Local      all  --  *   *   0.0.0.0/0       0.0.0.0/0

因此,由于无法使用 iptables 指定目标 MAC 地址,因此我仍然必须使用 IP 地址。但修复后,我仍然可以确保 IP 地址与 MAC 地址匹配。

如果有人对此有疑问,我可以尝试进一步解释。

相关内容