GNU/Linux >> LINUX-Kenntnisse >  >> Linux

dhcpcd wird nicht ausgeführt, da /etc/network/interfaces einige Schnittstellen definiert, die einen DHCP-Client oder eine statische Adresse verwenden

Frage 1.) Entschuldigung, es sieht so aus, als hätten Sie ein paar Dinge falsch verstanden.

dhcpcd ist ein DHCP-Client Daemon, der normalerweise von NetworkManager oder ifupdown gestartet wird , nicht direkt durch systemd . Es wird die Zuweisung der IP-Adresse für Ihre wlan0 vornehmen .

Sie können Verwenden Sie dhcpcd wie von systemd gestartet Wenn Sie dies wünschen, müssen Sie jedoch die gesamte normale Netzwerkschnittstellen-Konfigurationslogik deaktivieren (z. B. /etc/network/interfaces darf keine Nicht-Kommentarzeilen enthalten) der Distribution und ersetzen Sie sie bei Bedarf durch Ihr eigenes benutzerdefiniertes Skript. Das ist nur für spezielle Zwecke; wenn Sie nicht absolut sicher sind, dass Sie das tun sollten, sollten Sie es nicht tun.

dhcpcd wird niemals IP-Adressen an andere Hosts liefern. Diesen Teil haben Sie zu dhcpcd.conf hinzugefügt sieht so aus, als würde es zur Konfigurationsdatei des ISC-DHCP-Servers gehören Dämon, dhcpd (ja, es ist nur ein Buchstabe Unterschied) stattdessen:

host Accountant {
hardware ethernet 10:60:4b:68:03:21;
fixed-address 192.168.2.83;
}

host Accountant1 {
hardware ethernet 00:0c:29:35:95:ed;
fixed-address 192.168.2.66;
}
host Accountant3 {
hardware ethernet 30:85:A9:1B:C4:8B;
fixed-address 192.168.2.70;
}

Aber wenn Sie dem von Ihnen erwähnten YouTube-Tutorial folgen, haben Sie möglicherweise nicht einmal dhcpd installiert, seit dnsmasq soll diesen Job machen.

Soweit ich das beurteilen kann, die äquivalente Syntax für dnsmasq.conf wäre:

dhcp-host=10:60:4b:68:03:21,192.168.2.83,Accountant
dhcp-host=00:0c:29:35:95:ed,192.168.2.66,Accountant1
dhcp-host=30:85:A9:1B:C4:8B,192.168.2.70,Accountant3

Haftungsausschluss:Ich habe dnsmasq nicht wirklich verwendet , also basiert dies auf einem schnellen Googeln der Manpage.

Frage 2.) In dem von Ihnen erwähnten Tutorial dnsmasq sollte als DHCP-Server auf eth0 fungieren . Sie haben nichts darüber gesagt, daher weiß ich nicht, ob es lief oder nicht. Wenn nicht, könnte der eine Client, der immer dieselbe IP erhielt, einfach auf eine zuvor empfangene alte DHCP-Lease zurückgegriffen haben, die noch nicht abgelaufen war. Ja, DHCP-Clients können eine DHCP-Lease dauerhaft speichern und weiterverwenden, wenn in einem Netzwerk anscheinend kein funktionierender DHCP-Server verfügbar ist.

Frage 3.):/etc/network/interfaces ist eine Konfigurationsdatei für Netzwerkschnittstellen im klassischen Debian/Ubuntu-Stil. Verwenden Sie man interfaces um die Dokumentation dafür zu sehen, oder schauen Sie hier.

In Debian, *Ubuntu, Raspbian usw. hat NetworkManager ein Plug-In, das lesen wird /etc/network/interfaces aber nicht schreiben dazu.

Wenn NetworkManager-Konfigurationstools wie nmcli , nmtui oder GUI-basierte NetworkManager-Konfigurationstools Ihrer bevorzugten Desktop-Umgebung verwendet werden, wird die Konfiguration in Dateien in /etc/NetworkManager/system-connections/ gespeichert Verzeichnis statt.

Wenn NetworkManager nicht installiert ist, wird der /etc/network/interfaces Datei wird von ifupdown verwendet Paket, das die Befehle ifup enthält und ifdown . Das Paket enthält auch ein Systemstartskript, das ifup -a ausführt beim Booten alle Netzwerkschnittstellen aktivieren, die auto <interface name> haben in /etc/network/interfaces . Es gibt auch eine udev-Regel, die ifup <interface name> ausführt wenn ein Treiber für eine neue Netzwerkschnittstelle automatisch geladen wird und /etc/network/interfaces hat einen allow-hotplug <interface name> Zeile dafür.


Ich habe den Grund für diesen "Fehler" gefunden.

dhcpcd verwendet eine Art "Neuling/Neuling-Schutz", der einen sicheren Umgang mit der Netzwerkverwaltung garantiert, falls ein "Neuling/Neuling" versuchen sollte, beide dhcpcd zu verwenden und /etc/interfaces .

dhcpcd überprüft den /etc/interfaces mit folgendem Shell-Skript /usr/lib/dhcpcd5/dhcpcd :

#!/bin/sh -e

DHCPCD=/sbin/dhcpcd
INTERFACES=/etc/network/interfaces

if grep -q -E "^[[:space:]]*iface[[:space:]]*.*[[:space:]]*inet[[:space:]]*(dhcp|static)" \
                $INTERFACES; then
        echo "Not running dhcpcd because $INTERFACES"
        echo "defines some interfaces that will use a"
        echo "DHCP client or static address"
        exit 6
fi

exec $DHCPCD [email protected]

Ich habe einfach die Zeile gewechselt

if grep -q -E "^[[:space:]]*iface[[:space:]]*.*[[:space:]]*inet[[:space:]]*(dhcp|static)" \

durch Entfernen des |static Argument, zu

if grep -q -E "^[[:space:]]*iface[[:space:]]*.*[[:space:]]*inet[[:space:]]*(dhcp)" \

und die letzte Echozeile angepasst auf:

echo "DHCP client"

PS Stellen Sie sicher, dass Sie einen denyinterfaces "NAME OF YOUR STATIC INTERFACE, WHICH SHALL BE CONTROLLED ONLY BY /etc/interfaces" hinzufügen , zum Beispiel denyinterfaces eth0 zu Ihrem /etc/dhcpcd.conf .


Linux
  1. Wie behandelt Linux mehrere aufeinanderfolgende Pfadtrennzeichen (/home////username///file)?

  2. Warum sind Netzwerkschnittstellen nicht wie andere Geräte in /dev?

  3. Wie wird /etc/motd aktualisiert?

  4. DHCP-Konfigurationsdatei /etc/dhcp/dhcpd.conf erklärt

  5. Wann sollte ich /dev/shm/ verwenden und wann sollte ich /tmp/?

/etc/network/interfaces, um Ubuntu mit einem drahtlosen Netzwerk zu verbinden

CentOS / RHEL:So stellen Sie eine gelöschte /etc/passwd-Datei wieder her

Django static_root in /var/www/... - keine Berechtigungen für collectstatic

Gibt es eine Möglichkeit, den DHCP-Client in Raspbian Linux auf einem Rasperry Pi zu deaktivieren?

Was macht source /etc/network/interfaces.d/* am Anfang der Datei /etc/network/interfaces?

Linux weist einer Schnittstelle eine fe80::/64-Adresse zu. Sollte das nicht fe80::/10 sein?