GNU/Linux >> Linux Esercitazione >  >> Debian

Soluzione alternativa Debian 838871:Configurazione di rete DHCP senza bloccare il processo di avvio?

Esiste una soluzione per Debian Bug #838871?

Problema:voglio avere una configurazione di rete su Debian con le seguenti proprietà:

  • Aggiorna automaticamente l'interfaccia di rete quando viene collegato un cavo
  • si avvia senza bloccarsi per molto tempo quando nessun cavo è collegato all'avvio
  • non cambio il mio sistema di inizializzazione

Il modo standard per farlo sarebbe il seguente snippet in /etc/network/interfaces :

allow-hotplug eth0
iface eth0 inet dhcp

Tuttavia, questo porta al problema descritto nella segnalazione di bug collegata:il processo di avvio si blocca per>1 minuto quando nessun cavo di rete è collegato con il seguente messaggio:

configuring network interfaces... ifup: waiting for lock on /run/network/ifstate.eth0

Una soluzione fornita in questa domanda sembra cambiare allow-hotplug su auto :

auto eth0
iface eth0 inet dhcp

Ciò fa effettivamente scomparire il messaggio di blocco dell'avvio, tuttavia, il sistema ora si blocca subito prima che venga visualizzata una richiesta di accesso in tty1. Questa volta dhclient si blocca perché tenta di ottenere una risposta dhcp su eth0, che non è connesso, e attende diversi tentativi di timeout. La richiesta di accesso viene visualizzata solo dopo il timeout di dhclient.

Per gli utenti con una DE grafica, questo potrebbe non essere un problema, in quanto non hanno bisogno di accedere su tty1, invece la loro DE si avvia e non vedono mai il messaggio dhclient.

Un'altra soluzione sarebbe probabilmente usare network-manager . Idealmente, preferirei non usare networkmanager, ma come ultima risorsa, l'ho provato. Tuttavia, su Debian Buster, la catena delle dipendenze del gestore di rete è in conflitto con sysvinit-core , che è il mio sistema di inizializzazione.

L'ultima alternativa che mi viene in mente è di non configurare eth0 in interfaces(5). Questo fa sparire tutti i blocchi di avvio, tuttavia, ho bisogno di ifup eth0 manualmente dopo aver collegato un cavo ethernet.

Qualche idea migliore?

AGGIORNAMENTO:per affrontare la citazione di @sourcejedi, "allow-hotplug" è specificato per "avviare l'interfaccia quando il kernel rileva un evento hotplug dall'interfaccia" nei documenti Debian sotto Debian networking. Domande correlate:buona spiegazione dettagliata della sintassi /etc/network/interfaces? e Che cos'è un evento hotplug dall'interfaccia?

Risposta accettata:

Prima di network-manager , il noto metodo per "ifup automaticamente l'interfaccia di rete quando un cavo è collegato” era ifplugd . (Nota l'autore originale :-P). ifplugd è ancora disponibile in Debian. Non ho alcuna esperienza recente in merito.

In primo luogo, rimuoveresti auto eth0 o allow hotplug eth0 riga da /etc/network/interfaces . Avresti comunque bisogno della tua linea iface eth0 inet dhcp . (Questa riga dipende dal nome della tua interfaccia di rete e anche se desideri aggiungere il supporto ipv6, ecc.).

Per configurare ifplugd per visualizzare l'interfaccia, modifica /etc/default/ifplugd per impostare INTERFACES= per includere il nome della tua interfaccia di rete. In alternativa, suggerisce di utilizzare il valore auto . Non so quanto bene auto funziona su qualsiasi sistema recente :-).

Correlati:impostare il timeout quando ci si addormenta prima della disconnessione della rete?

https://manpages.debian.org/buster/ifplugd/ifplugd.conf.5.en.html

Questa funzione non è mai stata fornita da allow-hotplug :

Si noti che il controllo dello stato del collegamento non è sempre stato presente e in ogni caso è stato eseguito solo all'avvio. Non ha mai supportato il caso in cui non fosse collegato alcun cavo all'avvio e in cui il cavo è stato collegato in un secondo momento. — Messaggio n. 20

Le fonti che contraddicono questo sono semplicemente sbagliate. Se vuoi questa funzione, devi eseguire un demone che attenda gli eventi "netlink".[*] La Debian ifupdown il pacchetto non include alcun demone. allow-hotplug si basa sul demone udev, che non legge gli eventi netlink necessari.

Il demone udev legge solo gli eventi udev "hotplug" ("uevent"). Non vi è alcun "uevento" quando un dispositivo Ethernet rileva una modifica dello stato del collegamento. Puoi verificarlo usando udevadm monitor .

Gli sviluppatori del kernel Linux hanno deciso deliberatamente di non fornire un "evento" per questo. Vedi:Re:Q:netdev:genera kobject uevent su eventi di rete.

[*] Pedante:tecnicamente ifplugd funziona interrogando lo stato del collegamento a intervalli regolari. Quindi non si basa necessariamente su eventi "netlink". Questa distinzione è evidenziata da netplug , che fa utilizzare eventi "netlink". netplug non ha tutte le stesse funzionalità di ifplugd .


Debian
  1. Nozioni di base su Linux - IP statico e configurazione di rete su Debian Linux

  2. Debian:come avviare Debian in modalità testo senza utilizzare Gui?

  3. Installa Squid su Debian 6 "Squeeze"

  4. La configurazione di rete per eth0 è stata modificata in DHCP dopo l'aggiornamento di RHEL/CentOS

  5. Spiegazione del file di configurazione DHCP /etc/dhcp/dhcpd.conf

Installa Debian 9 (Stretch) tramite il server di avvio di rete PXE

Installa e configura il server DHCP ISC in Debian 9

Cambia il nome di rete predefinito (ens33) in eth0 su Debian 10 / Debian 9

Configurazione di rete in Debian 10

Installazione di Asterisk su Debian

Come installare Nginx su Debian 10