Unterschiede zwischen /etc/dhcpcd.conf und / etc / network / interfaces?

63

Ich habe diese Konfiguration 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

Die drahtlose statische IP funktionierte, die eth0 jedoch nicht.

Also habe ich versucht, die Konfiguration in /etc/dhcpcd.conf durchzuführen :

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

Und es hat funktioniert. Ich bin verwirrt und hier sind einige Fragen:

  1. Wann soll welche Datei verwendet werden?

  2. Warum funktionierte das WiFi mit / etc / network / interfaces, aber das eth0 nicht?

  3. Hat dhcpcd irgendwie Vorrang vor / etc / network / interface ?

  4. Wie überprüfe ich, welcher Dienst Priorität hat oder was? Und welcher Dienst verwendet / etc / network / interface ?

CuriousGuy
quelle
4
Tolle Frage und etwas, worüber ich gerade nachfragen wollte #raspbian. Als langjähriger Un * x-Administrator finde ich diese grundlegende Veränderung verwirrend, verbunden mit einem absoluten Mangel an Dokumentation. Ich habe diese Frage zufällig gefunden, nachdem ich eine Stunde lang mit Ausprobieren verbracht hatte. Ich wünschte, ich hätte raspberrypi.stackexchange.com/questions/37920/… früher gefunden
Alastair McCormack
Ich denke, die Frage hätte in Kommentaren gestellt werden sollen, wie genau das eth0 versagt hat? Was ist die ip addrAusgabe und systemctl status networkingAusgabe? Da, wenn das OP versucht hat, dies über ssh zu tun und die eth0-IP für ssh zu verwenden, die geänderte eth0-IP als sekundäre IP an eth0 zugewiesen wird, um die laufende ssh-Sitzung nicht zu unterbrechen, habe ich versucht, die eth0-IP als OP zu ändern erwähnte aber sshing durch wlan0 und es funktioniert und hat Vorrang vor dhcp, in meinem Fall war es dhclient auf Stretch aber sshing durch eth0, der zuvor erwähnte Fall findet statt.
Pavel Sayekat
Und ja, dhcpcd wurde ebenfalls getestet, keiner hat Vorrang vor den /etc/network/interfacesEinstellungen.
Pavel Sayekat

Antworten:

65

In allen Antworten auf diese Frage gibt es gute Punkte, aber ich denke, dass es einen gewissen Spielraum gibt, Ihre spezifischen Fragen direkt zu beantworten.

  1. Wann soll welche Datei verwendet werden?

Ich gehe davon aus, dass Sie unter einem allgemeinen Grad an Verwirrung leiden, der derzeit (in der breiteren Raspberry Pi-Community) mit der Einführung von Debian ' Jessie ' anstelle von Debian 'Wheezy' auftritt. Diese Änderung hat eine große Anzahl von Tutorials im schlimmsten Fall veraltet und bestenfalls verwirrend gemacht.

Die Antwort auf die Frage ist, dass es bei der Verwendung von Wheezy normal war, Änderungen an der /etc/network/interfacesDatei vorzunehmen, um Netzwerkschnittstellen einzurichten (siehe Abbildung). Bei Verwendung von Jessie müssen Änderungen an '/etc/dhcpcd.conf' vorgenommen werden. Wenn Sie jedoch Änderungen an einer drahtlosen Verbindung vornehmen ( wlan0), müssen Sie auch Änderungen vornehmen, an /etc/wpa_supplicant/wpa_supplicant.confder Sie die Netzwerk-SSID und das Kennwort hinzufügen.

  1. Warum funktionierte das WiFi mit / etc / network / interfaces, aber das eth0 nicht?

Ich bin nicht sicher, wie die WLAN-Verbindung funktioniert haben könnte, da in Ihren Dateien einige Informationen fehlen (zumindest ssid). Wie Janos betonte, hat die Priorität der Etho-Verbindungsdetails, die nach den wlan0-Details eingehen, sie wahrscheinlich funktionsfähig gemacht (da sie beim Lesen der Datei zuletzt gesehen worden wären).

  1. Hat dhcpcd irgendwie Vorrang vor / etc / network / interface?

Nein, sie sind unterschiedlich und wurden für unterschiedliche Zwecke unter Jessie entwickelt. Um Jessie auf relativ einfache Weise zu verwenden, können Sie die interfacesDatei so gut wie ignorieren und mit dhcpcd.confund arbeiten wpa_supplicant.conf.

  1. Wie überprüfe ich, welcher Dienst Priorität hat oder was? Und welcher Dienst verwendet / etc / network / interface?

Ich gehe wieder davon aus, dass es sich eher um eine Frage handelt: Welche Datei verwende ich und ob ich eine Datei verwenden muss, die Priorität hat? Frage. Die Antwort ist, dass mit dem Wechsel von Wheezy zu Jessie (und im weiteren Sinne mit der Übernahme von systemd ) die Konfiguration von dhcpcd.conf und wpa_supplicant.conf die Norm ist und die Interface-Datei übrig bleibt zu seinen eigenen Geräten.

Was bedeutet das für Sie?

Wenn Sie (erneut) davon ausgehen, dass Sie versuchen, eine festverdrahtete (eth0) und eine drahtlose (wlan0) Verbindung mit statischen IP-Adressen einzurichten, möchten Sie, dass Ihre interfacesDatei die Standardeinstellung bei der Erstinstallation ist .

# 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

Sie möchten, dass Ihre dhcpcd.confDatei die Verbindungsdetails für beide Schnittstellen am Ende der Datei enthält und die zusätzlichen Einträge wahrscheinlich ungefähr so ​​aussehen.

# 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

Zuletzt möchten Sie Ihre wpa_supplicant.confDatei so bearbeiten , dass sie die SSID für das WLAN-Netzwerk und das Kennwort enthält. Es sollte wahrscheinlich ein bisschen so aussehen;

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

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

Ich hoffe das deckt es ab. Es besteht die sehr reale Möglichkeit, dass meine Annahmen falsch sind, aber da ich kürzlich eine ähnliche Lernkurve durchlaufen habe, hoffe ich, dass die Daten nützlich sind.

Ich habe dies tatsächlich aufgeschrieben und Sie können die Informationen im kostenlosen eBook Just enough Raspberry Pi von Leanpub erhalten.

d3noob
quelle
1
Arbeite nicht Wenn wir beide Schnittstellen mit.eg aufrufen, funktioniert ifconfig eth0 up ping to outside und ssh from outside nicht. Wenn wir eine der Schnittstellen in DHCP setzen, funktionieren alle.
Giuseppe
Hoffentlich kann jemand Ihre Frage beantworten
d3noob
Hat aus mehreren Gründen nicht für mich gearbeitet. Erstens ist die Frage allgemein, und wenn die Antworten für Jessie sind, dann ist das schon lange her und wir sind meistens auf Stretch umgestiegen, und erst diese Woche war es spannender. Meine Interface-Datei enthält nichts von dem, was Sie erwähnen.
Brian Bulkowski
6

Die Priorität hängt von Ihrer Init- oder Systemkonfiguration ab. In Bezug auf DHCP: Wenn Sie eine statisch oder manuell konfigurierte Schnittstelle haben und DHCP danach beginnt, eine Adresse anzufordern, überschreibt es das, was Sie bereits haben. Unter Debian wird dhcp für Schnittstellen gestartet, für die Sie dhcp angeben, und nicht nur magisch für sich. Bei unerwartetem Verhalten wird möglicherweise ein anderes System im Hintergrund ausgeführt als NetworkManager.

Pro Punkt:

  1. benutze gar keine dhcpcd.conf, lass es sein.
  2. Sie haben keine eth0-Hotplug-Leitung.
  3. Wenn dhcpcd nach dem Vernetzen gestartet wird und Sie es so eingestellt haben, dass es eine Schnittstelle übernimmt, wird es ausgeführt.
  4. Überprüfen Sie die Reihenfolge, in der Sie diese Dienste starten.
John Keates
quelle
4

Die drahtlose statische IP funktionierte, die eth0 jedoch nicht.

Die eth0Schnittstelle wurde wahrscheinlich beim Systemstart nicht aufgerufen, da sie nicht in der autoZeile aufgeführt ist. Von man interfaces:

Zeilen, die mit dem Wort "auto" beginnen, werden verwendet, um die physischen Schnittstellen zu identifizieren, die aufgerufen werden sollen, wenn ifup mit der Option -a ausgeführt wird. (Diese Option wird von den Systemstart-Skripten verwendet.) Die Namen der physischen Schnittstelle sollten in derselben Zeile nach dem Wort "auto" stehen. Es kann mehrere "automatische" Zeilengruppen geben. ifup ruft die benannten Schnittstellen in der angegebenen Reihenfolge auf.

Ändern Sie diese Zeile:

auto lo

Dazu:

auto lo eth0

Und dann sollte es klappen.

Die anderen Antworten haben Ihre anderen Fragen beantwortet. Ich hoffe das hilft.

janos
quelle
2
Das ist die Antwort. Das OP hat auch andere Probleme, aber für Leute wie mich, die anderen Leitfäden gefolgt sind, die gerade die statischen Informationen hinzugefügt haben /etc/network/interfaces, war das fehlende Teil nur ein auto eth0Neustart des Netzwerks oder ein Neustart!
Adam Kaplan
2

Weitere Informationen zum Einrichten von Netzwerken finden Sie unter Einrichten von Netzwerken / WLAN / statischer IP .

Sie können die ältere /etc/network/interfacesMethode verwenden, wenn Sie möchten. Leider enthält die aufgeführte Datei viele Fehler. Sie sollten sich an eine der Standardkonfigurationen halten.

Wenn Sie wirklich verwenden möchten /etc/network/interfaces (anders als die Standardeinstellung), müssen Sie deaktivieren dhcpcd.

Eine Erklärung von dhcpcdist für dieses Forum zu komplex, aber der Link https://wiki.archlinux.org/index.php/dhcpcd bietet eine gute Zusammenfassung.

Milliways
quelle
2

Holen Sie sich zunächst die /etc/network/interfacesDatei wieder in die ursprüngliche Version ...

# 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

Dann halten Sie Ihre Änderungen an der /etc/dhcpcd.confDatei einfach und nur für drahtlose ...

(am Ende der Datei ...)

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
}
Greg Oij
quelle
0

Beachten Sie, dass die neueste Version von Raspbian Jessie (30.12.2016) einen Fehler in der zweiten Zeile der Interface-Datei enthält. In der zweiten Zeile fehlt das führende Symbol #, um die Zeile als Kommentar zu kennzeichnen. Dieses Problem führt dazu, dass die Interface-Datei vom System nicht gelesen werden kann. Ich habe viele Stunden damit verbracht, mein WLAN zum Laufen zu bringen, bevor ich diesen Fehler fand.

Um das Problem zu beheben, fügen Sie einfach ein # -Symbol am Zeilenanfang ein.

EVictory
quelle