Ubuntu 16.04-系统启动等待说“提高网络接口”


42

我有一个具有两个接口的Ubuntu 16.04系统-eth0配置为DHCP和eth1配置为静态IP地址。

/ etc / network / interfaces文件具有以下配置

# The loopback network interface
auto lo
iface lo inet loopback

# The primary network interface
auto eth0
iface eth0 inet dhcp

# The Secondary network interface
auto eth1
iface eth1 inet static
address 10.10.1.10
netmask 255.255.255.0
dns-nameservers 74.82.42.42 4.2.2.2

## Virtual Interfaces for virtual hosts
auto eth1:11
iface eth1:11 inet static
address 10.10.1.11
netmask 255.255.255.0

auto eth1:12
iface eth1:12 inet static
address 10.10.1.12
netmask 255.255.255.0

auto eth1:13
iface eth1:13 inet static
address 10.10.1.13
netmask 255.255.255.0

问题是,当eth0链接上没有DHCP服务器可用时,或者eth0链接断开时,系统将挂起5分钟,这会极大地减慢启动过程。

violet@ubuntu-xenial:~$ systemd-analyze blame
      5min 241ms networking.service
          1.529s nmbd.service
          1.524s winbind.service

我尝试减少/etc/systemd/system/network-online.target.wants/networking.service文件中的时间,这使系统无需等待网络服务就可以更快地启动,但是,这无法在eth1上加载虚拟接口。

有没有一种更干净的方法可以让系统在eth0接口上没有完整的网络配置的情况下引导并仍然在eth1上加载所有静态网络配置?


1
这可能会有所帮助:ubuntuforums.org/showthread.php?t=2323253
Mine

Answers:


51

似乎有人对客户端未及时获取DHCP感到疑惑。

编辑此文件/etc/dhcp/dhclient.conf并设置timeout为合理的值,例如

timeout 15

300秒的默认值太高。建议的替换值15已通过测试,并且效果很好。


3
谢谢。此刻的实验室DNS / DHCP和5分钟的等待使我丧命。
Ashley Hughes

1
Ubuntu有许多奇怪的默认配置。真有趣……
William T Froggard

哇,这在进一步的配置中将非常有用。
David Tabernero M.

1
这在Ubuntu 18上不起作用,但是此答案可以。
xinthose

在所有这些年之后,它对我仍然有效:)
Wajih

27

因此,在您的中/etc/network/interfaces,更改以下内容:

# The primary network interface
auto eth0
iface eth0 inet dhcp

对此:

# The primary network interface
allow-hotplug eth0
iface eth0 inet dhcp

eth0当内核从接口检测到热插拔事件时(即,当您插入电缆时),它将启动接口,而不是在启动时启动它。


1
这种方法在物理硬件上效果很好,但是在虚拟化环境(尝试过的vmware和virtualbox)中却失败了。看来虚拟化内核无法生成适当的事件。
dtoubelis'4

在以前仅内置1G的盒子中安装新的10G网络适配器后,这种方法还解决了我的问题。Ubuntu能够看到卡和加载驱动程序,但是启动一直停滞不前,等待Raise Network Interfaces的出现。从eth0调整设备名称会相应地对其进行修复。
Joseph Jaramillo

2

如前所述,您可以更改超时值以提升网络接口(如果运行systemd):

打开一个终端窗口,然后输入命令:

sudo nano /etc/systemd/system/network-online.target.wants/networking.service

然后将行更改为TimeoutStartSec=5min您选择的值。保存按文件Ctrl+ oCtrl+ x

最后,重新启动守护程序:

sudo systemctl daemon-reload

4
使用sudo启动GUI程序通常是一个糟糕的主意。我已经修改了答案,以利用性能更好的工具。
查尔斯·格林

这对我来说是正确的答案。我的计算机在启动时并不总是连接到网络。我不想等待5分钟让Ubuntu知道。
Yitz

2
我想知道谁是白痴,认为超时5分钟是一个“好主意”。
克莱顿公爵
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.