GNU/Linux >> Tutoriels Linux >  >> Debian

Solution de contournement Debian 838871 :configuration du réseau DHCP sans bloquer le processus de démarrage ?

Existe-t-il une solution de contournement pour le bogue Debian #838871 ?

Problème :Je souhaite avoir une configuration réseau sur Debian avec les propriétés suivantes :

  • Activer automatiquement l'interface réseau lorsqu'un câble est branché
  • démarre sans bloquer pendant une longue période lorsqu'aucun câble n'est connecté au démarrage
  • ne change pas mon système d'initialisation

La manière standard de le faire serait l'extrait suivant dans /etc/network/interfaces :

allow-hotplug eth0
iface eth0 inet dhcp

Cependant, cela conduit au problème décrit dans le rapport de bogue lié :le processus de démarrage se bloque pendant> 1 min lorsqu'aucun câble réseau n'est branché avec le message suivant :

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

Une solution de contournement donnée dans cette question semble changer allow-hotplug à auto :

auto eth0
iface eth0 inet dhcp

Cela fait effectivement disparaître le message de blocage de démarrage, cependant, le système se bloque maintenant juste avant qu'une invite de connexion ne s'affiche sur tty1. Cette fois, dhclient bloque car il essaie d'obtenir une réponse DHCP sur eth0, qui n'est pas connecté, et attend plusieurs tentatives d'expiration. L'invite de connexion n'apparaît qu'après l'expiration du délai dhclient.

Pour les utilisateurs avec un DE graphique, cela pourrait ne pas être un problème, car ils n'ont pas besoin de se connecter sur tty1, à la place leur DE démarre et ils ne voient jamais le message dhclient.

Une autre solution serait probablement d'utiliser network-manager . Idéalement, je préférerais ne pas utiliser networkmanager, mais en dernier recours, j'ai essayé cela. Cependant, sur Debian buster, la chaîne de dépendance du gestionnaire de réseau entre en conflit avec sysvinit-core , qui est mon système d'initialisation.

La dernière alternative qui me vient à l'esprit est de ne pas configurer eth0 dans interfaces(5). Cela fait disparaître tous les blocs de démarrage, cependant, je dois manuellement ifup eth0 après avoir branché un câble Ethernet.

Avez-vous de meilleures idées ?

MISE À JOUR :Pour répondre à la citation de @sourcejedi, "allow-hotplug" est spécifié pour "démarrer l'interface lorsque le noyau détecte un événement hotplug à partir de l'interface" dans la documentation Debian sous Debian networking. Questions connexes :Bonne explication détaillée de la syntaxe /etc/network/interfaces ? et Qu'est-ce qu'un événement hotplug de l'interface ?

Réponse acceptée :

Avant network-manager , la méthode bien connue pour "automatiquement ifup l'interface réseau lorsqu'un câble est branché" était ifplugd . (Notez l'auteur original :-P). ifplugd est toujours disponible dans Debian. Je n'ai aucune expérience récente avec cela.

Tout d'abord, vous supprimeriez le auto eth0 ou allow hotplug eth0 ligne de /etc/network/interfaces . Vous auriez toujours besoin de votre ligne iface eth0 inet dhcp . (Cette ligne dépend du nom de votre interface réseau, et aussi si vous souhaitez ajouter le support ipv6, etc.).

Pour configurer ifplugd pour afficher l'interface, modifiez /etc/default/ifplugd pour définir INTERFACES= pour inclure le nom de votre interface réseau. Alternativement, cela suggère que vous pouvez utiliser la valeur auto . Je ne sais pas à quel point auto fonctionne sur n'importe quel système récent :-).

En relation :Définir le délai d'attente lors de l'endormissement avant la déconnexion du réseau ?

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

Cette fonctionnalité n'a jamais été fournie par allow-hotplug :

Notez que la vérification de l'état des liens n'a pas toujours été là, et en tout cas n'a été effectuée qu'au démarrage. Il n'a jamais pris en charge le cas où aucun câble n'était connecté au démarrage et où vous avez branché le câble ultérieurement. —Message #20

Les sources qui contredisent cela sont tout simplement fausses. Si vous voulez cette fonctionnalité, vous devez exécuter un démon qui attend les événements "netlink".[*] La Debian ifupdown Le package n'inclut aucun démon. allow-hotplug s'appuie sur le démon udev, qui ne lit pas les événements netlink nécessaires.

Le démon udev ne lit que les événements « hotplug » udev (« uevent »). Il n'y a pas d'"événement" lorsqu'un périphérique Ethernet détecte un changement d'état de liaison. Vous pouvez le vérifier en utilisant udevadm monitor .

Les développeurs du noyau Linux ont pris la décision délibérée de ne pas fournir d'"événement" pour cela. Voir :Re :Q :netdev :génère un uevent kobject sur les événements réseau.

[*] Pédant :techniquement ifplugd fonctionne en interrogeant l'état du lien à intervalles réguliers. Il ne repose donc pas nécessairement sur des événements « netlink ». Cette distinction est soulignée par netplug , ce qui fait utiliser les événements "netlink". netplug n'a pas toutes les mêmes fonctionnalités que ifplugd .


Debian
  1. Comment configurer une adresse IP statique sur Debian Linux

  2. Principes de base de Linux - IP statique et configuration réseau sur Debian Linux

  3. Configurer le réseau dans Debian / Ubuntu / LinuxMint

  4. Debian – Comment masquer un processus spécifique ?

  5. La configuration réseau pour eth0 a été remplacée par DHCP après la mise à niveau de RHEL/CentOS

Installer Debian 9 (Stretch) via le serveur de démarrage réseau PXE

Installer et configurer le serveur DHCP ISC dans Debian 9

Remplacez le nom de réseau par défaut (ens33) par eth0 sur Debian 10 / Debian 9

Configuration réseau dans Debian 10

Installer Asterisk sur Debian

Comment installer Nginx sur Debian 10