我的交换机和客户端之间物理上有一个 Raspberry Pi。交换机使用带有半径服务器的 802.1x 身份验证。
如果我将 Raspberry 设置为透明桥接模式,一切正常。我可以通过路由器验证我的客户端并访问 Internet。
但现在我也想访问覆盆子,冒充客户。
因此,我给了我的网桥一个 IP (192.254.66.66),为我的网络 192.168.x.0/24 添加了路由,并添加了默认网关 192.168.x.254。
我还在 SNAT 中添加了 ebtable 和 iptable 条目,以使传出流量看起来来自客户端:
ebtables -t nat -A POSTROUTING -s(来自 eth0 的 Mac)-o eth0 -j snat --to-src(来自我的客户端的 Mac)
iptables -t nat -A POSTROUTING -o br0 -s 192.254.66.66 -p tcp -j SNAT --to (来自我的客户端 192.168.x.17 的 IP,具有高端口,主要是未使用的端口)
iptables -t nat -A POSTROUTING -o br0 -s 192.254.66.66 -p udp -j SNAT --to(来自我的客户端 192.168.x.17 的 IP,具有高端口,大部分未使用的端口)
iptables -t nat -A POSTROUTING -o br0 -s 192.254.66.66 -p icmp -j SNAT --to (IP 来自我的客户端 192.168.x.17)
如果我尝试 ping google.com,则会收到错误消息:ping: unkown host google.com
如果我尝试 ping 我的网关 192.168.x.254,我可以在 tcpdump 中看到 ECMP 回显请求和回复,但它们(当然)是针对 192.168.x.17 的,因此我的 Raspberry 没有意识到答案是针对他。iptables 不应该跟踪连接并决定是否转发来自客户端的数据包或如果它们来自网桥则接收它们?