![iptables 源 mac 匹配并不总是匹配?](https://linux22.com/image/682910/iptables%20%E6%BA%90%20mac%20%E5%8C%B9%E9%85%8D%E5%B9%B6%E4%B8%8D%E6%80%BB%E6%98%AF%E5%8C%B9%E9%85%8D%EF%BC%9F.png)
我在 NAT 中的 PREROUTING 链中添加了一些规则。通常在新机器加入网络之初,这些匹配并不总是正确匹配?
我在 OpenWRT Barrier Breaker 上使用 iptables v1.4.21,这是在 Linux 桥上,ebtables 通过 iptables 发送数据包
net.bridge.bridge-nf-call-iptables=1
最简单的形式
-A PREROUTING -m mac --mac-source <my mac> -j ACCEPT
-A PREROUTING -m limit --limit 1/min -j LOG --log-prefix "id=Unknown-Device " --log-level 5
但我收到日志消息显示不匹配。mac 地址绝对正确
id=Unknown-Device IN=br-lan OUT= PHYSIN=wlan0 MAC=<dst>:<src>:08:00 SRC=192.168.0.105 DST=15.72.255.5 LEN=64 TOS=0x00 PREC=0x00 TTL=64 ID=1 DF PROTO=TCP SPT=23058 DPT=80 WINDOW=8688 RES=0x00 SYN URGP=0
答案1
如果我理解正确的话,您的设置是有效的,但有时,当新机器连接时,会出现一些日志。您想了解原因。是这样吗?
尽管我还不能提供答案,但我对您的问题有一些想法。
首先,我想确保有一些“良好”的连接。为了确认这一点,您可以禁用日志规则中每分钟 1 个数据包的限制,并在接受规则之前添加另一个日志规则:
-A PREROUTING -m mac --mac-source <my mac> -j LOG --log-prefix "id=Well-known-Device " --log-level 5
-A PREROUTING -m mac --mac-source <my mac> -j ACCEPT
-A PREROUTING -j LOG --log-prefix "id=Unknown-Device " --log-level 5
为了驳斥某些假设,您能否确认:
- 您没有在 nat 表中使用 DNAT(看起来您没有)
- 数据包正在通过 FORWARD 链(看起来是这样的)
- 它发生在以太网上(看起来是这样的)