GNU/Linux >> Znalost Linux >  >> Linux

Neběží dhcpcd, protože /etc/network/interfaces definuje některá rozhraní, která budou používat klienta DHCP nebo statickou adresu

Otázka 1.) Promiňte, zdá se, že jste pár věcí špatně pochopili.

dhcpcd je klient DHCP démon, který je normálně spouštěn NetworkManagerem nebo ifupdown , nikoli přímo systemd . Je to to, co bude zpracovávat přidělení IP adresy pro váš wlan0 .

můžete použijte dhcpcd jak začalo systemd pokud si to však přejete, bude to vyžadovat deaktivaci veškeré běžné logiky konfigurace síťového rozhraní (tj. /etc/network/interfaces musí obsahovat řádky bez komentářů) distribuce a v případě potřeby je nahradit vlastním skriptem. To je pouze pro speciální použití; pokud si nejste absolutně jisti, že byste to měli udělat, neměli byste.

dhcpcd nikdy nebude poskytovat IP adresy jiným hostitelům. Tuto část jste přidali do dhcpcd.conf vypadá, že by patřil do konfiguračního souboru serveru ISC DHCP démon, dhcpd (ano, je to pouze jednopísmenný rozdíl) místo toho:

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;
}

Ale pokud sledujete výukový program YouTube, který jste zmínil, možná nemáte ani dhcpd nainstalováno od dnsmasq má dělat tuto práci.

Pokud mohu říci, ekvivalentní syntaxe pro dnsmasq.conf by bylo:

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

Prohlášení:Ve skutečnosti jsem dnsmasq nepoužil , takže je to založeno na rychlém googlování jeho manuálové stránky.

Otázka 2.) V uvedeném tutoriálu dnsmasq měl fungovat jako DHCP server na eth0 . Nic jsi o tom neřekl, tak nevím, jestli to běželo nebo ne. Pokud ne, jeden klient, který vždy získával stejnou IP, se mohl jednoduše vrátit k dříve přijaté staré zápůjčce DHCP, která ještě nevypršela. Ano, klienti DHCP mohou trvale ukládat zapůjčení DHCP a nadále jej používat, pokud se zdá, že síť nemá k dispozici funkční server DHCP.

Otázka 3.):/etc/network/interfaces je klasický konfigurační soubor síťového rozhraní ve stylu Debian/Ubuntu. Použijte man interfaces k zobrazení dokumentace nebo se podívejte sem.

V Debianu, *Ubuntu, Raspbian atd. bude mít NetworkManager zásuvný modul, který bude číst /etc/network/interfaces ale nepíše k tomu.

Pokud konfigurační nástroje NetworkManager jako nmcli , nmtui nebo se použijí konfigurační nástroje NetworkManager založené na grafickém uživatelském rozhraní vašeho zvoleného desktopového prostředí, konfigurace bude uložena do souborů v /etc/NetworkManager/system-connections/ místo toho.

Pokud není nainstalován NetworkManager, /etc/network/interfaces soubor používá ifupdown balíček, který obsahuje příkazy ifup a ifdown . Balíček také obsahuje spouštěcí skript systému, který spustí ifup -a při spouštění, povolte všechna síťová rozhraní, která mají auto <interface name> v /etc/network/interfaces . Existuje také pravidlo udev, které spustí ifup <interface name> pokud se automaticky načte ovladač pro nové síťové rozhraní a /etc/network/interfacesallow-hotplug <interface name> řádek pro to.


Našel jsem důvod této "chyby".

dhcpcd používá jakousi "ochranu noob/nováček", která zaručuje bezpečný způsob manipulace se správou sítě, pokud by se nějaký "noob/nováček" pokusil použít obě dhcpcd a /etc/interfaces .

dhcpcd zkontroluje /etc/interfaces s následujícím shell-scriptem /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]

Jednoduše jsem střídal linku

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

odstraněním |static argument, k

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

a upravili poslední řádek echa na:

echo "DHCP client"

PS nezapomeňte přidat denyinterfaces "NAME OF YOUR STATIC INTERFACE, WHICH SHALL BE CONTROLLED ONLY BY /etc/interfaces" , například denyinterfaces eth0 na váš /etc/dhcpcd.conf .


Linux
  1. Jak Linux zpracovává více po sobě jdoucích oddělovačů cest (/home////username///soubor)?

  2. Dobré podrobné vysvětlení syntaxe /etc/network/interfaces?

  3. Jak se aktualizuje /etc/motd?

  1. Změnit Mac adresu trvale uvnitř /etc/network/interfaces?

  2. CentOS / RHEL :Jak obnovit ze smazaného souboru /etc/passwd

  3. Django static_root v /var/www/... - žádná oprávnění ke collectstatic

  1. Proč nejsou síťová rozhraní v /dev jako jiná zařízení?

  2. Kdy mám použít /dev/shm/ a kdy /tmp/?

  3. Jak zjistit, ze které složky běží proces?