桥接虚拟接口到物理网络吗?

桥接虚拟接口到物理网络吗?

如下图所示,物理网络为 192.168.99.0/24。veth0位于单独的网络命名空间内。我希望它直接连接到物理网络,这样node1veth0可以通过物理网络相互通信,而无需任何 NAT。

在此处输入图片描述

我尝试过的是:

  • 创建 Linux 桥接器 br0
  • 将 veth1 连接到 br0
  • 将 eth0(node2 的物理网卡)连接到 br0

事实证明,如果我们从 192.168.99.3 ping 到 192.168.99.1,那么arp数据包来自veth0,穿过veth1br0然后广播到node2eth0最后被node1接收eth0

然而,当node1回复时,发往的 mac 地址的数据包veth0将不会被节点 2 接收eth0(我猜是 mac 不匹配),因此veth0不会收到 arp 回复数据包并且 ping 失败。

因此,如果我没有理解错的话,有人能给我提供一些关于如何实现这个桥梁网络的想法吗?

更新

我在裸机上重建了这个测试环境,结果一切正常。可能是 VirtualBox 网络出了问题。

答案1

你想做的事情听起来是正确的,但是有很多重要的小细节(清理以前的配置,启动所有接口,创建一个新的网络命名空间,从中可以使用网络的一端韦特对),我不确定你是否做对了所有事情。特别是,我不知道你是否意识到你需要DHCP服务(如果您不使用静态 IP 地址)韦特在新的网络命名空间内进行配对。

因此,为了向您提供完整的细节,我将告诉您如何使用韦特's: 首先我清理当前配置,

# systemctl stop network-manager
# ip link set dev usb0 down   
# ip addr flush dev usb0

然后我创建韦特配对,然后我将以太网接口(这里称为usb0)和一端韦特成桥接br1

# ip link add veth-a1 type veth peer name veth-b1
# ip link set veth-a1 up
# ip link add br1 type bridge
# ip link set veth-a1 master br1
# ip link set usb0 master br1
# ip link set usb0 up
# ip link set br1 up

注意,将不同的接口向上;然后我开始桥上的 dhclient

# dhclient br1
.....
bound to 192.168.11.98 -- renewal in 16650 seconds.

现在我把另一端韦特与新的网络命名空间配对,称为ns1并创建一个终端在新的网络命名空间内:

# ip netns add ns1
# ip link set veth-b1 netns ns1
# ip netns exec ns1 xterm &

因此,从终端我可以把另一端韦特配对并开始dh客户端在上面。

# ip link set dev veth-b1 up
# dhclient veth-b1

要测试这一点,只需ping www.debian.org,您将检查连接以及 DNS 是否已从您的主网络命名空间自动导入。

如果有麦克维兰, 尽管..,

相关内容