Bond 无法在 Ubuntu Server 20.04 上获取 DHCP 租约

Bond 无法在 Ubuntu Server 20.04 上获取 DHCP 租约

我最近安装了 Ubuntu Server 20.04 来替换 ESXi 服务器。在安装过程中,我为两个以太网接口配置了一个绑定接口。我将 ZyXel GS1900-8 上的绑定配置为静态 LAG。在设置过程中,链接成功建立并通过 DHCP 租用了一个 IP。

所有后续启动都无法为绑定接口获取 IP 地址。有时,如果我在从属接口上允许 dhcp4,并运行sudo dhclient -r && sudo dhclient,从属接口将租用一个 IP 地址绑定将获得一个 IP 地址。我知道这不合适,因为 dhclient 和 systemd-networkd 不能混合使用。

另外,我想将其配置为 LACP 绑定。我在交换机上启用了优先级为 65535 和“IP/MAC 地址”负载平衡算法的 LACP,将 LAG 从静态切换到 LACP,并更改 netplan 以使用 802.3ad 绑定模式。

请告诉我我在这里做错了什么。我查看了尽可能多的 netplan DHCP bond 帖子,但无济于事。请参阅下面的配置文件和命令输出。

内容/etc/netplan/00-bond.yaml

network:
  version: 2
  renderer: networkd
  ethernets:
    eth0:
      dhcp4: false
    eth1:
      dhcp4: false
  bonds:
    bond0:
      dhcp4: true
      interfaces:
        - eth0
        - eth1
      parameters:
        mode: 802.3ad

输出sudo journalctl -b -u systemd-networkd

Dec 14 08:06:47 lore systemd[1]: Starting Network Service...
Dec 14 08:06:47 lore systemd-networkd[852]: bond0: netdev ready
Dec 14 08:06:47 lore systemd-networkd[852]: Enumeration completed.
Dec 14 08:06:47 lore systemd[1]: Started Network Service.
Dec 14 08:06:47 lore systemd-networkd[852]: bond0: IPv6 successfully enabled
Dec 14 08:06:47 lore systemd-networkd[852]: bond0: Link UP
Dec 14 08:08:53 lore systemd-networkd[852]: rtn1: received neighbor for link '7' we don't know about, ignoring.
Dec 14 08:08:53 lore systemd-networkd[852]: rtn1: received neighbor for link '7' we don't know about, ignoring.
Dec 14 08:08:53 lore systemd-networkd[852]: rtn1: received neighbor for link '7' we don't know about, ignoring.
Dec 14 08:08:53 lore systemd-networkd[852]: rtn1: received neighbor for link '7' we don't know about, ignoring.
Dec 14 08:08:53 lore systemd-networkd[852]: docker0: Link UP

输出sudo ip a

lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN group default qlen 1000
   link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
   inet 127.0.0.1/8 scope host lo
      valid_lft forever preferred lft forever
   inet6 ::1/128 scope host
      valid_lft forever preferred lft forever
eno1: <BROADCAST,MULTICAST> mtu 1500 qdisk noop state DOWN group default qlen 1000
    link/ether 0c:c4:7a:c6:c3:46 brd ff:ff:ff:ff:ff:ff
eno2: <BROADCAST,MULTICAST> mtu 1500 qdisk noop state DOWN group default qlen 1000
    link/ether 0c:c4:7a:c6:c3:47 brd ff:ff:ff:ff:ff:ff
eth0: <BROADCAST,MULTICAST> mtu 1500 qdisc noop state DOWN group default qlen 1000
    link/ether 0c:c4:7a:c6:c6:a2 brd ff:ff:ff:ff:ff:ff
eth1: <BROADCAST,MULTICAST> mtu 1500 qdisc noop state DOWN group default qlen 1000
    link/ether 0c:c4:7a:c6:c6:a3 brd ff:ff:ff:ff:ff:ff
bond0: <NO-CARRIER,BROADCAST,MULTICAST,MASTER,UP> mtu 1500 qdisk noqueue state DOWN group default qlen 1000
    link/ether 52:8b:2c:cc:a0:15 brd ff:ff:ff:ff:ff:ff
docker0: <NO-CARRIER,BROADCAST,MULTICAST,UP> mtu 1500 qdisc noqueue state DOWN group default
    link/ether 02:42:26:1c:1b:39 brd ff:ff:ff:ff:ff:ff
    inet 172.17.0.1/16 brd 172.17.255.255 scope global docker 0
       valid_lft forever preferred_lft forever

内容/run/systemd/network/10-netplan-bond0.netdev

[NetDev]
Name=bond0
Kind=bond

[Bond]
Mode=802.3ad

内容/run/systemd/network/10-netplan-bond0.network

[Match]
Name=bond0

[Network]
DHCP=ipv4
LinkLocalAddressing=ipv6
ConfigureWithoutCarrier=yes

[DHCP]
RouteMetric=100
UseMTU=true

内容/run/systemd/network/10-netplan-eth0.network

[Match]
Name=eth0

[Network]
LinkLocalAddressing=no
Bond=bond0

内容/run/systemd/network/10-netplan-eth1.network

[Match]
Name=eth1

[Network]
LinkLocalAddressing=no
Bond=bond0

内容/proc/net/bonding/bond0

Ethernet Channel Bonding Driver: v3.7.1 (April 27, 2011)

Bonding Mode: IEEE 802.3ad Dynamic link aggregation
Transmit Hash Policy: layer2 (0)
MII Status: down
MII Polling Interval (ms): 100
Up Delay (ms): 0
Down Delay (ms): 0
Peer Notification Delay (ms): 0

802.3ad info
LACP rate: slow
Min links: 0
Aggregator selection policy (ad_select): stable

答案1

发现这是由于命名冲突造成的。我发现dmidecode -t 41我的 MOBO 的 BIOS 错误地将四个 NIC 报告为只有两个类型实例。结果,两个 NIC 被分配给 eno1,两个 NIC 被分配给 eno2。结果是我试图使用的 NIC 在配置过程中被 udev 丢弃。

相关内容