桥接时 SNAT 包到错误的目的地

网络工程 鼻涕虫
2022-03-04 08:15:42

我的交换机和客户端之间物理上有一个 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 不应该跟踪连接并决定是否转发来自客户端的数据包或如果它们来自网桥则接收它们?

1个回答

我希望您需要使用 ebtables 中的重定向目标将数据包拉出网桥并进入 IP 路由,以便 NAT 机器可以看到它们。

但我实际上并没有尝试过,所以我不知道它是否会起作用,或者如果有任何陷阱怎么办。