我已经看过很多这样的问题,没有明确和理想的答案,所以我自己问。
自从 Ubuntu 18.04.3(我认为是 0.3 启动它)到至少 20.04.1 以来,我一直看到启动延迟 2 分钟,等待网络启动。IPv6 未在我们的网络上配置,DHCP 服务器是基于 Windows 的,有 2 个复制服务器和 VLAN 上的 IP 助手——尽管我的 Ubuntu 服务器与 DHCP 服务器在同一个 VLAN 上(我所有的虚拟机都在同一个VLAN)。
netplan 往往会被忽略,因为 dhcp 坚持使用 GUID 作为标识符,即使 /etc/netplan/ 中的 interface.yaml 说要使用 MAC。此外,DHCP 甚至在启动后 10-15 分钟后才尝试获取地址,除非我将接口标记为可选。但是,调用 dhclient 可以立即完美地工作。
根据我的阅读,这种延迟似乎是 IPv6 寻址问题。所以,我在 grub 中禁用了 ipv6。我在 netplan yaml 文件中将接口标记为可选,并将 dhcp6 标记为 false,这解决了 2 分钟的启动延迟,但 dhcp 服务器返回了意外的 IP,因为来自 netplan 的 dhcp-identifier 行正在忽略。Ubuntu 不提供 MAC 地址,而是提供 GUID。
这是我的 01-netcfg.yaml:
network:
version: 2
renderer: networkd
ethernets:
ens160:
dhcp4: true
dhcp6: false
dhcp-identifier: mac
optional: true
link-local: [ ]
一旦我生成并应用网络计划,我就会断开连接,并得到错误的 IP 地址。如果我手动调用sudo dhclient -r; sudo dhclient
,我会立即获得预期的 IPv4 地址。
因此,我能够使服务器立即获得正确地址的唯一方法是按照说明设置接口,然后在启动时运行脚本以手动运行dhclient
.
这似乎是一种相当笨拙的做事方式,因为它似乎是在解决问题而不是解决问题。
有人可以告诉我发生了什么,更重要的是,如何解决它?
提前致谢!
使用新信息进行编辑:如果我让虚拟机坐下,它最终会在登录提示后大约 8.5 分钟获取一个 IP。我猜那是界面出现后的 10 分钟。
另外,我在另一个线程中读到了类似的问题,在网段上有多个 DHCP 服务器会导致另一个用户出现问题。我们在这个网段上确实有 2 个 Windows 2019 DHCP 服务器,用于进行负载平衡(作用域复制)。
EDITsudo netplan --debug generate
输出以下内容:
** (generate:3137): DEBUG: 14:26:01.499: Processing input file /etc/netplan/00-installer-config.yaml
..
** (generate:3137): DEBUG: 14:26:01.501: starting new processing pass
** (generate:3137): DEBUG: 14:26:01.501: We have some netdefs, pass them through a final round of validation
** (generate:3137): DEBUG: 14:26:01.503: ens160: setting default backend to 1
** (generate:3137): DEBUG: 14:26:01.504: Configuration is valid
** (generate:3137): DEBUG: 14:26:01.505: Generating output files..
** (generate:3137): DEBUG: 14:26:01.505: openvswitch: definition ens160 is not for us(backend 1)
** (generate:3137): DEBUG: 14:26:01.506: NetworkManager: definition ens160 is not for us(backend 1)
(generate:3137): GLib-DEBUG: 14:26:01.507: posix_spawn avoided (fd close requested)
(generate:3137): GLib-DEBUG: 14:26:01.511: posix_spawn avoided (fd close requested)
这是输出sudo journalctl | grep ens160
Nov 08 08:45:30 graylog systemd-networkd[846]: ens160: DHCP lease lost
Nov 08 08:45:44 graylog kernel: vmxnet3 0000:03:00.0 ens160: renamed from eth0
Nov 08 08:45:52 graylog kernel: vmxnet3 0000:03:00.0 ens160: intr type 3, mode 0, 5 vectors allocated
Nov 08 08:45:52 graylog kernel: vmxnet3 0000:03:00.0 ens160: NIC Link is Up 10000 Mbps
Nov 08 08:45:52 graylog systemd-networkd[843]: ens160: Link UP
Nov 08 08:45:52 graylog systemd-networkd[843]: ens160: Gained carrier
Nov 08 08:45:53 graylog cloud-init[851]: ci-info: | ens160 | True | . | . | . | 00:50:56:96:c6:b7 |
Nov 08 08:45:53 graylog cloud-init[851]: ci-info: | 2 | multicast | :: | ens160 | U |
Nov 08 08:54:29 graylog systemd-networkd[843]: ens160: DHCPv4 address 10.83.1.5/24 via 10.83.1.1