我有一個 Ubuntu 16.04 系統,有兩個介面 - 配置了 DHCP 的 eth0 和配置了靜態 IP 位址的 eth1。
/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
似乎有人對客戶端無法及時取得 DHCP 感到偏執。
編輯此文件/etc/dhcp/dhclient.conf
並設定timeout
為合理的值,例如
timeout 15
預設值 300 秒太高了。建議的替換值 15 經過測試,效果良好。
答案2
所以在你的中/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
當核心偵測到介面的熱插拔事件時(即插入電纜時),這將啟動接口,而不是在引導時啟動它。
答案3
如中所引用的您可以變更啟動網路介面的逾時值(如果正在執行systemd
):
打開終端機窗口,然後輸入命令:
sudo nano /etc/systemd/system/network-online.target.wants/networking.service
然後將該行變更TimeoutStartSec=5min
為您選擇的值。按Ctrl+儲存文件o,然後按Ctrl+ x。
最後,重新啟動守護程式:
sudo systemctl daemon-reload