GNU/Linux >> Znalost Linux >  >> Debian

Řešení Debianu 838871:Konfigurace sítě Dhcp bez blokování procesu spouštění?

Existuje řešení pro chybu Debianu #838871?

Problém:Chci mít v Debianu konfiguraci sítě s následujícími vlastnostmi:

  • Automaticky připojí síťové rozhraní po připojení kabelu
  • spouští se bez blokování po dlouhou dobu, když není připojen žádný kabel,
  • Nepřepínám svůj init systém

Standardní způsob, jak to udělat, by byl následující fragment v /etc/network/interfaces :

allow-hotplug eth0
iface eth0 inet dhcp

To však vede k problému popsanému v připojené zprávě o chybě:Proces spouštění se zablokuje na> 1 minutu, pokud není připojen žádný síťový kabel, s následující zprávou:

configuring network interfaces... ifup: waiting for lock on /run/network/ifstate.eth0

Zdá se, že řešení uvedené v této otázce mění allow-hotplug na auto :

auto eth0
iface eth0 inet dhcp

Tím účinně zmizí zpráva o blokování spouštění, ale systém se nyní zablokuje těsně předtím, než se na tty1 zobrazí výzva k přihlášení. Tentokrát dhclient blokuje, protože se pokouší získat odpověď dhcp na eth0, který není připojen, a čeká na několik pokusů, než vyprší časový limit. Výzva k přihlášení se objeví až po vypršení časového limitu dhclient.

Pro uživatele s grafickým DE to nemusí být problém, protože se nemusí přihlašovat na tty1, místo toho se spouští DE a nikdy neuvidí zprávu dhclient.

Dalším řešením by pravděpodobně bylo použití network-manager . V ideálním případě bych raději nepoužíval správce sítě, ale jako poslední možnost jsem to zkusil. Na Debian busteru je však řetězec závislostí správce sítě v konfliktu s sysvinit-core , což je můj init systém.

Poslední alternativou, která mě napadá, je nekonfigurovat eth0 v interfaces(5). Tím zmizí všechny zaváděcí bloky, ale musím ručně ifup eth0 po připojení ethernetového kabelu.

Nějaké lepší nápady?

AKTUALIZACE:Abychom reagovali na citaci z @sourcejedi, „allow-hotplug“ je specifikováno jako „spustit rozhraní, když jádro detekuje událost hotplug z rozhraní“ v dokumentaci k Debianu v části Debian networking. Související otázky:Dobré podrobné vysvětlení syntaxe /etc/network/interfaces? a Co je hotplug událost z rozhraní?

Přijatá odpověď:

Před network-manager , dobře známý způsob, jak „automaticky ifup síťové rozhraní po připojení kabelu“ bylo ifplugd . (Všimněte si původního autora :-P). ifplugd je stále k dispozici v Debianu. Nemám s tím žádné nedávné zkušenosti.

Nejprve byste odstranili auto eth0 nebo allow hotplug eth0 řádek z /etc/network/interfaces . Stále byste potřebovali svůj řádek iface eth0 inet dhcp . (Tento řádek závisí na názvu vašeho síťového rozhraní a také na tom, zda chcete přidat podporu ipv6 atd.).

Chcete-li nakonfigurovat ifplugd pro zobrazení rozhraní upravte /etc/default/ifplugd nastavte INTERFACES= zadejte název vašeho síťového rozhraní. Případně navrhuje, abyste mohli použít hodnotu auto . Nevím, jak dobře je auto funguje na jakémkoli nejnovějším systému :-).

Související:Nastavit časový limit při usínání před odpojením sítě?

https://manpages.debian.org/buster/ifplugd/ifplugd.conf.5.en.html

Tato funkce nebyla nikdy poskytnuta allow-hotplug :

Všimněte si, že kontrola stavu propojení tam nebyla vždy a v každém případě byla provedena pouze při bootování. Nikdy nepodporoval případ, kdy při spouštění nebyl připojen žádný kabel a kdy jste kabel zapojili později. — Zpráva #20

Zdroje, které tomu odporují, se prostě mýlí. Pokud chcete tuto funkci, musíte spustit démona, který čeká na události „netlink“.[*] The Debian ifupdown balíček neobsahuje žádného démona. allow-hotplug spoléhá na démona udev, který nečte nezbytné události netlink.

Démon udev čte pouze události udev „hotplug“ („uevent“). Neexistuje žádná „uevent“, když ethernetové zařízení detekuje změnu stavu připojení. Můžete to ověřit pomocí udevadm monitor .

Vývojáři linuxového jádra se záměrně rozhodli neposkytovat k tomu „uevent“. Viz:Re:Otázka:netdev:generování události kobject u událostí v síti.

[*] Pedant:technicky ifplugd funguje tak, že se v pravidelných intervalech dotazuje na stav spojení. Nemusí se tedy nutně spoléhat na události „netlink“. Na tento rozdíl poukazuje netplug , což dělá použijte události „netlink“. netplug nemá všechny stejné funkce jako ifplugd .


Debian
  1. Základy Linuxu – Statická IP a konfigurace sítě na Debian Linuxu

  2. Debian – Jak nabootovat Debian do textového režimu bez použití Gui?

  3. Debian – jak skrýt konkrétní proces?

  1. Jak nastavit statickou IP adresu na Debian Linuxu

  2. Nakonfigurujte síť v Debian / Ubuntu / LinuxMint

  3. Nainstalujte Squid na Debian 6 „Squeeze“

  1. Nespravovaná síť na Debian Linux – řešení

  2. Konfigurace sítě pro eth0 se po upgradu RHEL/CentOS změnila na DHCP

  3. Vysvětlení konfiguračního souboru DHCP /etc/dhcp/dhcpd.conf