有没有办法在Linux机器中配置两个以太网接口作为以太网工作中继器即,一个接口中的内容会立即从另一个接口中传出。我知道有桥接,但我希望有更直接的转发所有流量,包括从 01:80:C2:00:00:00 开始的保留 MAC 地址。
如果 Wireshark 可以捕获所有数据就好了。
答案1
Linux 可以配置为允许转发一些这些地址,但不是全部。
尤其是,您无法启用00
/ 01
/ 02
(STP 和 LACP 帧) 的转发。其余的 (如 LLDP) 可以通过 启用/sys/class/net/br0/bridge/group_fwd_mask
,例如将其设置为 248 以启用除上述三个组之外的所有内容的透明转发。
对于完全转发,您可能需要在用户空间中做一些事情 - 例如,不是使用桥接器,而是运行一个进程来在两个单独的接口之间手动复制帧:
socat interface:eth0 interface:eth1
或者,找到一个支持“L2 协议隧道”的以太网交换机(至少 TP-Link 是这么称呼该功能的)。
我认为 OpenBSD 或 FreeBSD 有一个“TPMR 桥接”模式,可以基本实现这一点。
答案2
下一个 socat 功能版本将添加选项 packet-auxdata 和 iff-promisc。选项 packet-auxdata 还允许复制 VLAN 标签,除非 socat 执行额外工作来获取这些标签,否则 Linux 内核会过滤这些标签。选项 iff-promisc 将接口置于混杂模式,这样硬件就不会过滤未发送到主机的帧。
这些选项在当前 1.7.4.4 版本中尚不可用。
socat INTERFACE:eth0,packet-auxdata,iff-promisc INTERFACE:eth1,packet-auxdata,iff-promisc