我希望能够在 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 标签的原始流量,enp1s0f0
是enp1s0f1
传输 LACP/802.3ad 流量的原始端口,bond0.395
是没有 VLAN 标签的逻辑网络。显然,正确的 VLAN 编号取决于您的上游配置,395
只是一个例子。