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
.