Differenze tra /etc/dhcpcd.conf e / etc / network / interfaces?


64

Ho questa configurazione in / etc / network / interfaces :

auto lo
iface lo inet loopback

allow-hotplug wlan0
iface wlan0 inet manual
    wpa-conf /etc/wpa_supplicant/wpa_supplicant.conf

allow-hotplug wlan1
iface wlan1 inet manual
    wpa-conf /etc/wpa_supplicant/wpa_supplicant.conf

allow-hotplug wlan0
#iface wlan0 inet dhcp
        iface wlan0 inet static
        address 192.168.0.110
        netmask 255.255.255.0
        network 192.168.0.1
        gateway 192.168.0.1
        wpa-conf /etc/wpa_supplicant/wpa_supplicant.conf
#iface default inet dhcp


iface eth0 inet static
    address 192.168.0.115
    netmask 255.255.255.0
    network 192.168.0.1
    gateway 192.168.0.1

L'IP statico wireless ha funzionato, ma l'eth0 no.

Quindi ho provato a fare la configurazione in /etc/dhcpcd.conf :

interface eth0
static ip_address=192.168.0.115/24
static routers=192.168.0.1
static domain_name_servers=192.168.0.1

E ha funzionato. Sono confuso e qui ci sono diverse domande:

  1. Quando utilizzare quale file?

  2. Perché il wifi ha funzionato con / etc / network / interfaces ma eth0 no?

  3. Fa dhcpcd ha in qualche modo la priorità su / etc / network / interfaccia ?

  4. Come verificare quale servizio ha la priorità o qualcosa del genere? E quale servizio utilizza / etc / network / interface ?


4
Ottima domanda e qualcosa che stavo per chiedere #raspbian. Come amministratore Un * x di molti anni, trovo questo cambiamento fondamentale sconcertante aggravato da un'assoluta carenza di documentazione. Mi è capitato di trovare questa domanda dopo aver trascorso un'ora di tentativi ed errori. Vorrei aver trovato raspberrypi.stackexchange.com/questions/37920/… prima
Alastair McCormack

Penso che la domanda avrebbe dovuto essere posta nei commenti sul fatto che esattamente come l'eth0 ha fallito? Qual è l' ip addroutput e l' systemctl status networkingoutput? Perché se l'OP ha provato a farlo su ssh e usando l'ip eth0 in ssh, l'ip eth0 modificato verrà assegnato come ip secondario a eth0 per mantenere ininterrotta la sessione ssh in corso, ho provato a cambiare l'ip eth0 come OP menzionato ma frugando su wlan0 e funziona e preferisce dhcp, nel mio caso era dhclient su Stretch ma frugando su eth0, si verifica il caso menzionato in precedenza.
Pavel Sayekat, il

E sì, anche dhcpcd è stato testato, nessuno preferisce le /etc/network/interfacesimpostazioni.
Pavel Sayekat,

Risposte:


65

Ci sono buoni punti in tutte le risposte a questa domanda, ma penso che ci sia un certo margine per affrontare direttamente le vostre domande specifiche.

  1. Quando utilizzare quale file?

Presumo che tu stia soffrendo di un livello generale di confusione che si sta verificando in questo momento (nella più ampia comunità Raspberry Pi) con l'introduzione di Debian ' Jessie ' al posto di Debian 'Wheezy'. Questa modifica ha reso un gran numero di tutorial nella peggiore delle ipotesi obsoleti e nella migliore delle ipotesi confusi.

La risposta alla domanda è che quando si utilizza Wheezy era normale apportare modifiche al /etc/network/interfacesfile ai fini della configurazione delle interfacce di rete (vedi figura). Quando si utilizza Jessie, sarà necessario apportare modifiche a '/etc/dhcpcd.conf'. Tuttavia, se si apportano modifiche a una connessione wireless ( wlan0), sarà necessario apportare anche le modifiche a /etc/wpa_supplicant/wpa_supplicant.confcui è necessario aggiungere ssid di rete e password.

  1. Perché il wifi ha funzionato con / etc / network / interfaces ma eth0 no?

Non sono sicuro di come avrebbe potuto funzionare la connessione wifi poiché mancano alcune informazioni dai tuoi file (almeno ssid). Come ha sottolineato janos, la priorità dei dettagli della connessione etho provenienti dai dettagli di wlan0 li ha probabilmente resi operativi (dal momento che sarebbero stati visti per ultimi dal processo che leggeva il file).

  1. Dhcpcd ha in qualche modo priorità su / etc / network / interface?

No, sono diversi e sono progettati per soddisfare diversi scopi in Jessie. Ai fini dell'uso di Jessie in un modo abbastanza semplice, puoi praticamente ignorare il interfacesfile e lavorare con dhcpcd.confe wpa_supplicant.conf.

  1. Come verificare quale servizio ha la priorità o qualcosa del genere? E quale servizio utilizza / etc / network / interface?

Di nuovo, assumerò che la domanda sia più di un ' Quale file devo usare e se devo usare uno che ha la priorità? 'domanda. La risposta è che con il passaggio da Wheezy a Jessie (e in senso lato con l'adozione di systemd ) la configurazione di `dhcpcd.conf 'e' wpa_supplicant.conf 'sarà la norma e il file' interfaces 'rimarrà ai propri dispositivi.

Che cosa significa questo per te?

Bene (di nuovo) supponendo che tu stia tentando di configurare connessioni cablate (eth0) e wireless (wlan0) con indirizzi IP statici, vorresti che il tuo interfacesfile fosse quello predefinito come era inizialmente installato;

# Please note that this file is written to be used with dhcpcd
# For static IP, consult /etc/dhcpcd.conf and 'man dhcpcd.conf'

# Include files from /etc/network/interfaces.d:
source-directory /etc/network/interfaces.d

auto lo
iface lo inet loopback

iface eth0 inet manual

allow-hotplug wlan0
iface wlan0 inet manual
    wpa-conf /etc/wpa_supplicant/wpa_supplicant.conf

allow-hotplug wlan1
iface wlan1 inet manual
    wpa-conf /etc/wpa_supplicant/wpa_supplicant.conf

Vorresti che il tuo dhcpcd.conffile includesse i dettagli di connessione alla fine del file per entrambe le interfacce e che le voci aggiuntive sarebbero probabilmente un po 'così;

# Custom static IP address for eth0.
interface eth0
static ip_address=192.168.0.115/24
static routers=192.168.0.1
static domain_name_servers=192.168.0.1

# Custom static IP address for wlan0.
interface wlan0
static ip_address=192.168.0.115/24
static routers=192.168.0.1
static domain_name_servers=192.168.0.1

Infine, vorrai modificare il tuo wpa_supplicant.conffile in modo che includa lo ssid per la rete wifi e la password. Probabilmente dovrebbe apparire un po 'così;

ctrl_interface=DIR=/var/run/wpa_supplicant GROUP=netdev
update_config=1

network={
    ssid="homenetwork"
    psk="h0mepassw0rd"
}

Spero che lo copra. Esiste la reale possibilità che i miei presupposti siano errati, ma da quando ho recentemente attraversato una curva di apprendimento simile spero che i dati siano utili.

In realtà l'ho scritto e puoi ottenere le informazioni nell'ebook gratuito. Basta abbastanza Raspberry Pi da Leanpub.


1
Non lavorare Se visualizziamo entrambe le interfacce con.eg, ifconfig eth0 up ping verso l'esterno e ssh dall'esterno non funzionano. Se mettiamo una delle interfacce in dhcp tutto funziona.
giuseppe,

Spero che qualcuno sarà in grado di aiutarti con la tua domanda
d3noob,

Non ha funzionato per me, per diversi motivi. Il primo è che la domanda è generale, e se le risposte sono per Jessie, è successo tanto tempo fa e ci siamo spostati per lo più, e proprio questa settimana è stato più intenso. Il mio file delle interfacce non contiene nulla delle cose che stai citando.
Brian Bulkowski l'

6

La priorità ha a che fare con la tua configurazione init o systemd. Per quanto riguarda dhcp: se hai un'interfaccia configurata staticamente o manualmente, e dhcp inizia a richiedere un indirizzo in seguito, sostituirà quello che hai già. Su Debian, dhcp viene avviato per le interfacce per le quali si specifica dhcp, e non solo magicamente da solo. Se si verificano comportamenti imprevisti, è possibile che in background sia in esecuzione un sistema diverso come NetworkManager.

Per punto:

  1. non usare affatto dhcpcd.conf, lascialo stare.
  2. Non hai un eth0 per consentire la linea hotplug.
  3. Se dhcpcd viene avviato dopo la rete e è impostato per assumere un'interfaccia, lo farà.
  4. Controlla l'ordine con cui inizi quei servizi.

4

L'IP statico wireless ha funzionato, ma l'eth0 no.

L' eth0interfaccia probabilmente non è stata visualizzata all'avvio del sistema perché non è elencata sulla autolinea. Da man interfaces:

Le righe che iniziano con la parola "auto" vengono utilizzate per identificare le interfacce fisiche da attivare quando ifup viene eseguito con l'opzione -a. (Questa opzione è utilizzata dagli script di avvio del sistema.) I nomi delle interfacce fisiche devono seguire la parola "auto" sulla stessa riga. Possono esserci più stanze "auto". ifup porta le interfacce nominate nell'ordine elencato.

Cambia questa riga:

auto lo

A questo:

auto lo eth0

E poi dovrebbe funzionare.

Le altre risposte hanno indirizzato le tue altre domande. Spero che questo possa essere d'aiuto.


2
Questa è la risposta. L'OP ha anche altri problemi, ma per le persone come me che hanno seguito altre guide che hanno appena aggiunto le informazioni statiche /etc/network/interfaces, il pezzo mancante era solo auto eth0e riavviare la rete o riavviare!
Adam Kaplan,

2

Vedi Come posso configurare la rete / WiFi / IP statico per i dettagli su come configurare la rete.

Puoi usare il /etc/network/interfacesmetodo più vecchio se vuoi. Purtroppo il file che hai elencato contiene molti errori. È necessario attenersi a una delle configurazioni standard.

Se si desidera veramente utilizzare /etc/network/interfaces (diverso da quello predefinito) è necessario disabilitare dhcpcd.

Una spiegazione dhcpcdè troppo complessa per questo forum, ma il link https://wiki.archlinux.org/index.php/dhcpcd fornisce un buon riassunto.


2

Innanzitutto, /etc/network/interfacesripristina il file alla sua versione originale ...

# interfaces(5) file used by ifup(8) and ifdown(8)
# Please note that this file is written to be used with dhcpcd
# For static IP, consult `/etc/dhcpcd.conf` and `man dhcpcd.conf`

# Include files from `/etc/network/interfaces.d`:
source-directory /etc/network/interfaces.d

auto lo
iface lo inet loopback

iface eth0 inet manual

allow-hotplug wlan0
iface wlan0 inet manual
    wpa-conf /etc/wpa_supplicant/wpa_supplicant.conf

allow-hotplug wlan1
iface wlan1 inet manual
    wpa-conf /etc/wpa_supplicant/wpa_supplicant.conf

Quindi, mantieni le modifiche al /etc/dhcpcd.conffile semplici e solo per il wireless ...

(nella parte inferiore del file ...)

nohook lookup-hostname

interface wlan0
    static ip_address=192.168.0.53/24
    static routers=192.168.0.1
    static domain_name_servers=8.8.8.8

/etc/wpa_supplicant/wpa_supplicant.conf:

ctrl_interface=DIR=/var/run/wpa_supplicant GROUP=netdev
update_config=1
country=US

network={
    ssid="The SSID of your Router"
    psk="daPassword"
    scan_ssid=1
    key_mgmt=WPA-PSK
}

0

Tenere presente che l'ultima versione di Raspbian Jessie (30/12/2016) contiene un difetto nella seconda riga del file delle interfacce. Nella seconda riga manca il simbolo # iniziale per designare la riga come commento. Questo problema fa sì che il file interfacce sia illeggibile dal sistema. Ho trascorso molte ore a provare a far funzionare il mio wifi prima di trovare questo errore.

Per risolverlo, aggiungi semplicemente un simbolo # all'inizio della riga.

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.