我已经看过很多这样的问题,没有明确和理想的答案,所以我自己问。
自从 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
杰伊,我遇到了这个问题,我认为它是在我切换到 18 时开始的。一台机器甚至花了将近 4 分钟 - 起初我认为它根本无法启动。如您所见,没有人提出可行的解决方案,所以我偶然发现了Xubuntu!它应该是一个最小版本,但在 2 年内我还没有发现它缺少什么,它在 30 -45 秒内启动。我使用相同的 Ubuntu 内核。我不是专家用户,但我有一个系统用作媒体播放器(智能电视),而另一个系统仅用于下载。Xubuntu 支持我所有的硬件和软件来满足这些需求。我遇到的唯一问题是图形支持,但这也是 Ubuntu 的一个问题,从未修复过。Xubuntu 20.04.1 确实解决了这个问题并且可以很好地播放视频。希望对您有所帮助 - 下载 20.04.1 ISO 并安装新的(如果可以) - 效果很好。
从问题和评论...
回复:“从 Ubuntu Server 18.04.3 到至少 20.04.1,我的网络无法获得适当的 DHCP IP 地址。启动网络也需要两分钟。我正在使用 netplan。”
建议引导至 Ubuntu Live 21.10 DVD/USB 并重新测试。
回复:“Ubuntu 21.10 似乎解决了所有问题。我尝试更改 VMWare 驱动程序,将我的东西添加到 netplan 以禁用 ipv6,使用 mac 作为 dhcp 标识符,一切正常!ip a 在 21.10 下显示更多信息,这表明被别名的网络设备(altname enps0)。”
在 .yaml 文件中添加 "optional: true" 解决了较长的启动时间。
我相信原来的网络设置一直有问题,或者Ubuntu 21.10中较新版本的netplan解决了这个问题。