GNU/Linux >> Linux Esercitazione >  >> Linux

Non esegue dhcpcd perché /etc/network/interfaces definisce alcune interfacce che utilizzeranno un client DHCP o un indirizzo statico

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 .


Linux
  1. Buona spiegazione dettagliata della sintassi /etc/network/interfaces?

  2. Modificare l'indirizzo Mac in modo permanente all'interno di /etc/network/interfaces?

  3. CentOS / RHEL:come recuperare dal file /etc/passwd cancellato

  4. Quando dovrei usare /dev/shm/ e quando dovrei usare /tmp/?

  5. Come scoprire da quale cartella è in esecuzione un processo?

/etc/network/interfaces per connettere Ubuntu a una rete wireless

Perché le interfacce di rete non sono in /dev come altri dispositivi?

Come viene aggiornato /etc/motd?

Spiegazione del file di configurazione DHCP /etc/dhcp/dhcpd.conf

Django static_root in /var/www/... - nessuna autorizzazione a collectstatic

Cosa fa source /etc/network/interfaces.d/* nella parte superiore del file /etc/network/interfaces?