Domanda 1.) Scusa, sembra che tu abbia frainteso alcune cose.
dhcpcd
è un client DHCP demone, che normalmente viene avviato da NetworkManager o ifupdown
, non direttamente da systemd
. È ciò che gestirà l'assegnazione dell'indirizzo IP per il tuo wlan0
.
Puoi usa dhcpcd
come iniziato da systemd
se lo desideri, tuttavia ciò richiederà la disabilitazione di tutta la normale logica di configurazione dell'interfaccia di rete (ad es. /etc/network/interfaces
deve essere privo di righe non di commento) della distribuzione e sostituendolo con il proprio scripting personalizzato ove necessario. Questo è solo per usi speciali; se non sei assolutamente sicuro di doverlo fare, non dovresti farlo.
dhcpcd
non fornirà mai indirizzi IP a nessun altro host. Questa parte l'hai aggiunta a dhcpcd.conf
sembra appartenere al file di configurazione del server DHCP di ISC demone, dhcpd
(sì, è solo una differenza di una lettera) invece:
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;
}
Ma se stai seguendo il tutorial di YouTube che hai menzionato, potresti anche non avere dhcpd
installato, dal dnsmasq
dovrebbe fare quel lavoro.
Per quanto ne so, la sintassi equivalente per dnsmasq.conf
sarebbe:
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
Dichiarazione di non responsabilità:in realtà non ho utilizzato dnsmasq
, quindi questo si basa su una rapida ricerca su Google della sua pagina man.
Domanda 2.) Nel tutorial che hai citato, dnsmasq
avrebbe dovuto fungere da server DHCP su eth0
. Non hai detto nulla al riguardo, quindi non so se fosse in esecuzione o meno. In caso contrario, l'unico client che riceveva sempre lo stesso IP potrebbe essere semplicemente tornato a un vecchio lease DHCP ricevuto in precedenza che non era ancora scaduto. Sì, i client DHCP possono archiviare un lease DHCP in modo persistente e continuare a utilizzarlo se una rete non sembra avere un server DHCP funzionante disponibile.
Domanda 3.):/etc/network/interfaces
è un classico file di configurazione dell'interfaccia di rete in stile Debian/Ubuntu. Usa man interfaces
per vedere la relativa documentazione, oppure guarda qui.
In Debian, *Ubuntu, Raspbian ecc., NetworkManager avrà un plug-in che leggerà /etc/network/interfaces
ma non scriverà ad esso.
Se gli strumenti di configurazione di NetworkManager come nmcli
, nmtui
o vengono utilizzati gli strumenti di configurazione NetworkManager basati su GUI del tuo ambiente desktop preferito, la configurazione verrà salvata nei file in /etc/NetworkManager/system-connections/
directory invece.
Se NetworkManager non è installato, il file /etc/network/interfaces
viene utilizzato dal ifupdown
pacchetto, che include i comandi ifup
e ifdown
. Il pacchetto include anche uno script di avvio del sistema che eseguirà ifup -a
all'avvio, abilitando tutte le interfacce di rete che hanno auto <interface name>
in /etc/network/interfaces
. C'è anche una regola udev che eseguirà ifup <interface name>
se un driver per una nuova interfaccia di rete viene caricato automaticamente e /etc/network/interfaces
ha un allow-hotplug <interface name>
linea per esso.
Ho trovato il motivo di questo "errore".
dhcpcd
utilizza una sorta di "protezione noob/newbie", che garantisce un modo sicuro per gestire la gestione della rete, nel caso in cui qualche "noob/newbie" tenti di utilizzare entrambi dhcpcd
e /etc/interfaces
.
dhcpcd
controlla il /etc/interfaces
con il seguente script di shell /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]
Ho semplicemente alternato la riga
if grep -q -E "^[[:space:]]*iface[[:space:]]*.*[[:space:]]*inet[[:space:]]*(dhcp|static)" \
rimuovendo il |static
argomento, a
if grep -q -E "^[[:space:]]*iface[[:space:]]*.*[[:space:]]*inet[[:space:]]*(dhcp)" \
e ho regolato l'ultima riga dell'eco su:
echo "DHCP client"
PS assicurati di aggiungere un denyinterfaces "NAME OF YOUR STATIC INTERFACE, WHICH SHALL BE CONTROLLED ONLY BY /etc/interfaces"
, ad esempio denyinterfaces eth0
al tuo /etc/dhcpcd.conf
.