Ubuntu 16.04 - uruchomienie systemu czeka na powiedzenie „Podniesienie interfejsów sieciowych”

42

Mam system Ubuntu 16.04 z dwoma interfejsami - eth0 skonfigurowany z DHCP i eth1 skonfigurowany ze statycznymi adresami IP.

Plik / etc / network / interfaces ma następującą konfigurację

# 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

Problem polega na tym, że gdy serwer DHCP nie jest dostępny na łączu eth0 lub jeśli łącze eth0 jest wyłączone, system zawiesza się przez 5 minut, co znacznie spowalnia proces uruchamiania.

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

Próbowałem skrócić czas w pliku /etc/systemd/system/network-online.target.wants/networking.service, dzięki czemu system uruchamia się szybciej bez czekania na usługę sieciową, jednak nie ładuje wirtualnych interfejsów na eth1.

Czy istnieje prostszy sposób, aby system uruchomił się bez pełnej konfiguracji sieci na interfejsie eth0 i nadal ładował całą statyczną konfigurację sieci na eth1?

jana
źródło

Odpowiedzi:

51

Wygląda na to, że ktoś był paranoikiem, gdy klient nie dostał DHCP na czas.

Edytuj ten plik /etc/dhcp/dhclient.confi ustaw timeoutrozsądną wartość, np

timeout 15

Domyślna wartość 300 sekund jest zdecydowanie za wysoka. Sugerowana wartość zastępcza 15 została przetestowana i działa dobrze.

boutch55555
źródło
3
Dziękuję Ci. W tej chwili zabijało mnie sprawdzanie DNS / DHCP i 5 minut oczekiwania.
Ashley Hughes,
1
Ubuntu ma wiele dziwnych domyślnych konfiguracji. To było interesujące ...
William T Froggard
Wow, będzie to naprawdę przydatne w dalszych konfiguracjach.
David Tabernero M.
1
To nie działa na Ubuntu 18, ale ta odpowiedź działa.
xinthose
Po tylu latach wciąż jest to dla mnie ważne :)
Wajih
27

Więc /etc/network/interfaceszmień to w swoim :

# The primary network interface
auto eth0
iface eth0 inet dhcp

do tego:

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

Spowoduje to uruchomienie interfejsu, eth0gdy jądro wykryje zdarzenie hotplug z interfejsu (tj. Po podłączeniu kabla), zamiast uruchamiać je przy rozruchu.

Jonathan Walter
źródło
1
To podejście działa dobrze na sprzęcie fizycznym, ale nie działa w środowiskach zwirtualizowanych (wypróbowano vmware i virtualbox). Wygląda na to, że zwirtualizowane jądro nie generuje odpowiednich zdarzeń.
dtoubelis,
To podejście rozwiązało również moje problemy po zainstalowaniu nowej karty sieciowej 10G w pudełku, który wcześniej miał tylko wbudowaną kartę 1G. Ubuntu był w stanie zobaczyć kartę i załadować sterowniki, ale boot wciąż zwlekał z oczekiwaniem na Raise Network Interfaces. Dostosowanie nazwy urządzenia z eth0 odpowiednio go naprawiło.
Joseph Jaramillo,
2

Jak wspomniano w , możesz zmienić wartość limitu czasu dla podniesienia interfejsu sieciowego (jeśli jest uruchomiony systemd):

Otwórz okno terminala i wprowadź polecenie:

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

Następnie zmień linię TimeoutStartSec=5minna wybraną wartość. Zapisz plik, naciskając Ctrl+, oa następnie Ctrl+ x.

Na koniec zrestartuj demona:

sudo systemctl daemon-reload
Mikrofon
źródło
4
Generalnie kiepskim pomysłem jest uruchomienie programu GUI przy użyciu sudo ... Zmodyfikowałem twoją odpowiedź, aby korzystać z narzędzi, które zachowują się nieco lepiej.
Charles Green
To jest dla mnie poprawna odpowiedź. Mój komputer nie zawsze jest podłączony do sieci podczas uruchamiania. Nie chcę czekać 5 minut, aż Ubuntu się zorientuje.
Yitz
2
Chciałbym wiedzieć, kim jest ten idiota, który pomyślał, że przerwa 5 minut jest „dobrym pomysłem”.
Clayton Dukes,