在 Linux 网络命名空间内绑定 2 个接口

在 Linux 网络命名空间内绑定 2 个接口

我希望能够在 Linux 网络命名空间内绑定/聚合 2 个接口。

我正在使用的配置如下:

  • 在根 Linux 网络堆栈上,我有两个物理以太网接口:
    • eth0
    • eth1
  • 然后我有一个具有两个接口的网络命名空间:
    • 桥接到物理 eth0 的 ethX0
    • 桥接到物理 eth1 的 ethX1

我想在网络命名空间内绑定 ethX0 和 ethX1,使用 802.3ad 或 active-backup。

但是 Linux 上的绑定在物理接口级别上起作用,我似乎无法实现这一点,尽管我不明白为什么(在帧级别)它无法实现?我可以创建一个 net-ns超过债券,但不是债券超过一个网络。

我无法绑定 eth0 和 eth1 物理接口,因为我希望能够为无数其他应用程序分别寻址它们,但我只希望绑定 ethX0 和 ethX1。

知道如何做到这一点吗?

答案1

我发现的答案是使用团队。最近的 Linux API 非常棒,可以在网络命名空间中工作,并且可以从用户空间控制行为。很棒的东西!

答案2

有些人似乎会使用teams它,但实际上这并不是必需的。对于 Ubuntu/Debian 系统,您只需编辑/etc/network/interfaces并执行类似以下操作即可使用本机内核支持:

# The loopback network interface
auto lo
iface lo inet loopback

# 2 x 10 Gbps LACP link:
auto bond0
iface bond0 inet manual
bond-mode 802.3ad
bond-miimon 100
bond-lacp-rate 1
bond-slaves enp1s0f0 enp1s0f1

# 10 Gbps port 1:
auto enp1s0f0
iface enp1s0f0 inet manual
bond-master bond0

# 10 Gbps port 2:
auto enp1s0f1
iface enp1s0f1 inet manual
bond-master bond0

# VLAN 395:
auto bond0.395
iface bond0.395 inet static
address 11.22.33.44
netmask 255.255.255.224
gateway 11.22.33.1
dns-nameservers 11.22.33.1 11.22.33.2
dns-search example.com
vlan-raw-device bond0

这样就可以调试tcpdump任何需要调试的部分。本例中bond0是两个连接上带有 VLAN 标签的原始流量,enp1s0f0enp1s0f1传输 LACP/802.3ad 流量的原始端口,bond0.395是没有 VLAN 标签的逻辑网络。显然,正确的 VLAN 编号取决于您的上游配置,395只是一个例子。

https://wiki.debian.org/Bonding了解详情。

相关内容