Come avviare la rete su un'interfaccia cablata prima dell'accesso in Ubuntu Desktop Edition


17

Problema

Ubuntu 9.10 Desktop Edition (e forse anche versioni precedenti, non le ho ancora testate) non ha connessioni di rete dopo l'avvio fino a quando almeno 1 utente accede. Ciò significa che tutti i servizi che richiedono reti (ad esempio openssh-server) non sono disponibili fino a qualcuno accede localmente tramite gdm, kdm o TTY.

sfondo

Ubuntu 9.10 Desktop Edition utilizza il servizio NetworkManager per prendere i comandi dall'app nm in Gnome (o suo equivalente in KDE). A quanto ho capito, mentre NetworkManager è in esecuzione all'avvio, non viene emesso alcun comando per connettersi fino a quando non si accede per la prima volta perché nm-applet non è in esecuzione fino a quando non si accede e non viene avviata la sessione di Gnome (o simile per KDE). Non sono sicuro di cosa richieda a NetworkManager di connettersi alla rete quando si accede tramite un TTY.

Esistono diverse variabili rilevanti coinvolte nell'avvio delle connessioni di rete, tra cui:

  • Wired vs Wireless (e relativi driver, SSID, password e priorità)
  • Statico vs DHCP
  • Interfacce multiple

vincoli

  • Supporta Ubuntu 9.10 Karmic Koala (punti bonus per ulteriori versioni supportate)
  • Supporta l'interfaccia eth0 cablata
  • Ricevi un indirizzo IP tramite DHCP
  • Ricevi informazioni DNS via DHCP (ovviamente il server DHCP deve fornire queste informazioni)
  • Abilita la rete al momento giusto (ad es. Un po 'di tempo dopo il caricamento dei file system, ma prima dell'avvio di servizi di rete come ssh)
  • Il passaggio da distro o versioni (ad es. A Server Edition) non è una soluzione accettabile
  • Il passaggio a una configurazione IP statica non è una soluzione accettabile

Domanda

  • Come avviare la rete su un'interfaccia cablata prima dell'accesso in Ubuntu Desktop Edition?

Guarda anche

Riferimenti

Risposte:


9

Per configurare automaticamente l'interfaccia di rete tramite DHCP all'avvio, aggiungere le seguenti righe a /etc/network/interfaces:

auto eth0
iface eth0 inet dhcp

Questo dovrebbe far apparire l'interfaccia anche senza NetworkManager in esecuzione. Puoi anche rimuovere il pacchetto network-manager, se vuoi.


Ahh, era solo un errore di battitura quando ho fatto la domanda, ma è quello che ho provato. Detto questo, facendo /etc/init.d/networking restart si ottiene: "* Riconfigurazione delle interfacce di rete ..." ma l'interfaccia non viene visualizzata, tanto meno ottiene un IP. L'esecuzione di un riavvio non fa apparire l'interfaccia con queste impostazioni.
Burly,

Suppongo che: auth eth0 invece di: auto eth0 nel tuo post sia ancora un refuso che hai fatto solo nel post, giusto?
goedson,

Ho appena eseguito una nuova installazione di Ubuntu 9.10, modificato / etc / network / interfacce come notato sopra, e l'emissione ha sudo /etc/init.d/networking restartfatto sì che eth0 fosse configurato e configurato tramite DHCP.
goedson,

Oh mio, Mega-fail! : facepalm: non avevo il refuso originale che hai citato, ma ho la 'auth' invece di 'auto' sulla prima riga. Credo che tu debba modificare la tua risposta per poter cambiare il mio voto perché è passato troppo tempo (wth?). Ho rimosso la sezione "Cosa ho provato" dalla domanda per evitare confusione, dal momento che ho sbagliato a scrivere. Forse aggiungi qualcosa del tipo: "Aggiungi quanto segue /etc/network/interfacesper impedire a NetworkManager di gestire l'interfaccia e visualizzarla tramite dhcp" Devo controllare e vedere se questa correzione lo porterà all'avvio con NM installato ...
Burly

Ho cambiato la risposta, quindi è chiaro qual è la soluzione.
Goedson,

1

Debian / Ubuntu ha il suo programma per gestire i server all'avvio.

Provare update-rc.d STARTUP-SCRIPT defaults

Cerca lo script specifico per eth0 e abilitalo con questo.

Puoi sempre creare il tuo script, posizionarlo in init.d e l'esecuzione del comando precedente lo farà caricare all'avvio.

o semplicemente metti quei comandi (ifconfig up, dhcpcd) in /etc/rc.local (questo file viene letto ogni volta all'avvio)


Ho usato update-rc.d prima, ma il problema è individuare lo STARTUP-SCRIPT specifico per eth0. Almeno in Ubuntu 9.10 DE, non ce n'è. C'è solo lo script /etc/init.d/networking, che in realtà sta solo chiamando un lavoro di avvio (/ lib / init / update-job start è ciò che chiama in modo specifico). Come notato sopra, chiamare /etc/init.d/networking start, / lib / init / update-job networking start e / o service network start / restart non visualizzano l'interfaccia molto meno per ottenere un IP. Potrei scrivere la mia sceneggiatura, ma speravo in una soluzione più elegante.
Burly,

Mettere dhclient eth0 in rc.local potrebbe essere la mia unica opzione. Devo provare questo per vedere se funziona. Il problema nel metterlo qui è che altri servizi di avvio non possono davvero dipendere da esso (come ssh) perché rc.local non viene eseguito fino a quando non sono stati avviati tutti i servizi di sistema.
Burly,

1
Torna all'inizio Workaround: L'aggiunta dhclient eth0a /etc/rc.local consente di visualizzare correttamente l'interfaccia eth0 all'avvio e di ottenere un IP tramite DHCP. Almeno per me, SSH è disponibile anche prima che qualcuno acceda localmente ora poiché openssh-server è impostato per iniziare ai runlevel 233. Non so se Tutti i servizi abilitati alla rete funzioneranno correttamente con l'interfaccia visualizzata in rc.local ( es. ntpdate), tuttavia, perché rc.local viene eseguito dopo i servizi di sistema.
Burly,
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.