我正在阅读以下代码(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 网络内部结构
https://doc.lagout.org/operating%20system%20/linux/Understanding%20Linux%20Network%20Internals.pdf第359页