
Ich habe ein Ubuntu 16.04-System mit zwei Schnittstellen – eth0 mit DHCP konfiguriert und eth1 mit statischen IP-Adressen konfiguriert.
Die Datei /etc/network/interfaces hat die folgende Konfiguration
# 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
Das Problem besteht darin, dass das System 5 Minuten lang hängt, wenn auf der eth0-Verbindung kein DHCP-Server verfügbar ist oder die eth0-Verbindung ausgefallen ist, was den Startvorgang erheblich verlangsamt.
violet@ubuntu-xenial:~$ systemd-analyze blame
5min 241ms networking.service
1.529s nmbd.service
1.524s winbind.service
Ich habe versucht, die Zeit in der Datei /etc/systemd/system/network-online.target.wants/networking.service zu reduzieren, wodurch das System schneller bootet, ohne auf den Netzwerkdienst warten zu müssen. Das Laden der virtuellen Schnittstellen auf eth1 schlägt jedoch fehl.
Gibt es eine sauberere Möglichkeit, das System ohne vollständige Netzwerkkonfiguration auf der eth0-Schnittstelle zu booten und trotzdem die gesamte statische Netzwerkkonfiguration auf eth1 zu laden?
Antwort1
Offenbar hatte jemand Angst, dass ein Client seinen DHCP-Zugriff nicht rechtzeitig erhält.
Bearbeiten Sie diese Datei /etc/dhcp/dhclient.conf
und legen Sie timeout
einen sinnvollen Wert fest, etwa
timeout 15
Der Standardwert von 300 Sekunden ist viel zu hoch. Der vorgeschlagene Ersatzwert von 15 wurde getestet und funktioniert einwandfrei.
Antwort2
Ändern Sie also in Ihrem /etc/network/interfaces
Folgendes:
# The primary network interface
auto eth0
iface eth0 inet dhcp
dazu:
# The primary network interface
allow-hotplug eth0
iface eth0 inet dhcp
Dadurch wird die Schnittstelle gestartet eth0
, wenn der Kernel ein Hotplug-Ereignis von der Schnittstelle erkennt (d. h. wenn Sie ein Kabel anschließen), anstatt sie beim Booten zu starten.
Antwort3
Wie erwähnt inSie können den Timeout-Wert zum Hochfahren der Netzwerkschnittstelle ändern (sofern ausgeführt systemd
):
Öffnen Sie ein Terminalfenster und geben Sie den folgenden Befehl ein:
sudo nano /etc/systemd/system/network-online.target.wants/networking.service
Ändern Sie dann die Zeile TimeoutStartSec=5min
in einen Wert Ihrer Wahl. Speichern Sie die Datei, indem Sie Ctrl+ ound dann Ctrl+ drücken x.
Starten Sie abschließend den Daemon neu:
sudo systemctl daemon-reload