host1(tap0) <--OpenVPN--> (tap0)host2(eth0) <---> host2 LAN
我需要在不接触主机 2 上的 eth0 设备的情况下建立一个到远程网络的 L2 桥接
我正在尝试通过创建 macvlan 接口并将其放入网桥来做到这一点
@主机2:
ip link add link eth0 type macvlan mode passthru
ip link set dev macvlan0 up
brctl addbr br0
brctl addif br0 macvlan0
brctl addif br0 tap0
ip link set dev br0 up
@主机1:
dhcpcd -T tap0
我期望获得 IP 地址或能够 ping 主机 2 LAN 中的设备,但事实并非如此。 tcpdump 显示两端的广播流量、arp 请求/回复等。我发现 macvlan 接口不会进入 promisc 模式,即使我指定它,所以 dhcp 请求通过 macvlan0,服务器发送响应,但响应被丢弃。我可以在 eth0 上看到它,但在 macvlan 上看不到。
如何在保持 eth0@host2 完好无损的情况下建立这样的桥?任何软件解决方案,例如某些中继守护进程也可以。
谢谢。
答案1
虽然成功地将 MACVLAN netdev 奴役(使用 Linux 内核术语)到虚拟网桥 netdev,但它无法按预期工作。特别是,网桥看不到要转发的流量。Bridge 和 Macvlan 设备的冲突和限制深入研究 Linux 内核源代码,找出什么是、什么不是。