wlan0 到 eth0 桥接工作正常,但 MAC 地址混淆

wlan0 到 eth0 桥接工作正常,但 MAC 地址混淆

我有一个在 上运行的接入点(hostapdwlan0wlan0并且eth0已桥接​​并eth0连接到路由器。br0已配置为 DHCP 并接收路由器上保留的地址。

让带有接入点的盒子被称为接入点盒。

有时,路由器将显示接入点盒具有设备的 MAC 地址,而不是应有的wlan0MAC地址。eth0

连接到接入点的任何设备都会在路由器的 arp 缓存上显示其各自的 MAC 地址。

路由器具有桥接防火墙规则,强制要求来自接入点盒的 DHCP 保留 IP 地址的所有数据包必须来自 MAC 地址,因此当 MAC 从 变为时eth0,盒子会失去网络连接。当盒子失去连接时,接入点上的所有关联客户端仍然能够使用互联网。eth0wlan0

我可以ebtables在具有的盒子上使用以下命令来绕过路由器的桥接规则wlan0

ebtables -t nat -A PREROUTING -i eth0 -s $WLAN_MAC -j dnat --to-destination $LAN_MAC
ebtables -t nat -A POSTROUTING -o eth0 -s $WLAN_MAC -j snat --to-source $LAN_MAC

ebtables -t nat -A PREROUTING -i eth0 --logical-in br0 -s $WLAN_MAC -j dnat --to-destination $LAN_MAC
ebtables -t nat -A POSTROUTING -o eth0 --logical-out br0 -s $WLAN_MAC -j snat --to-source $LAN_MAC

尽管接入点盒从未失去互联网连接,但路由器的 arp 缓存仍然会混淆 MAC 地址。有没有办法防止这种情况发生?

编辑
我笨拙地通过将的 MAC 地址设置wlan0为与的 MAC地址来解决这个问题eth0。我不喜欢这个解决方案,我想让它工作而不wlan0直接更改的 MAC。

答案1

解决了,我不得不使用 arptables 将包含 wlan0 mac 的数据包分解到 eth0 mac。

相关内容