Linux 使用 ebtables 桥接 SNAT

Linux 使用 ebtables 桥接 SNAT

我正在阅读以下代码(dot1x 桥旁路): https://github.com/mubix/8021xbridge/blob/master/scripts/trans_bridge.prepop

简单描述一下,我们有 2 个接口,第一个连接到交换机 ($SWINT),另一个连接到我们的目标主机。目标是与网络的其余部分进行交互,同时使流量看起来像是由目标主机生成的。

从引用的代码中,我试图弄清楚为什么需要以下两个命令:

# use ebtables to source NAT the $COMPMAC for traffic leaving the device from the bridge mac address
(A)ebtables -t nat -A POSTROUTING -s $SWMAC -o $SWINT -j snat --to-src $COMPMAC
(B)ebtables -t nat -A POSTROUTING -s $SWMAC -o $BRINT -j snat --to-src $COMPMAC

我不明白为什么需要对 $BRINT 的 POSTROUTING 流量进行 SNAT。由于我们的目标是避免将任何帧传输到源 MAC 与目标主机不同的交换机端接口,因此第一个 ebtables 规则是否就足够了?

或者换句话说,$SWINT(交换机端接口)不是任何帧到达交换机的唯一方式吗?根据下图,规则 (B) 看起来是多余的,因为我们只关心流向 eth0 (SWINT) 的帧,并且我们已经将 SNAT 应用于 eth0。

我在桥梁上找到的一些好资源(但仍然没有回答我的问题)是:

了解 Linux 网络内部结构

Linux 桥的剖析

ebtables 与 Linux Bridge

https://doc.lagout.org/operating%20system%20/linux/Understanding%20Linux%20Network%20Internals.pdf 页:359 https://doc.lagout.org/operating%20system%20/linux/Understanding%20Linux%20Network%20Internals.pdf第359页

相关内容