GNU/Linux >> Tutoriales Linux >  >> Debian

Solución alternativa de Debian 838871:¿Configuración de la red DHCP sin bloquear el proceso de arranque?

¿Hay alguna solución para el error de Debian n.º 838871?

Problema:Quiero tener una configuración de red en Debian con las siguientes propiedades:

  • Interfaz de red activada automáticamente cuando se conecta un cable
  • arranca sin bloquearse durante mucho tiempo cuando no hay ningún cable conectado en el arranque
  • no cambiar mi sistema de inicio

La forma estándar de hacer esto sería el siguiente fragmento en /etc/network/interfaces :

allow-hotplug eth0
iface eth0 inet dhcp

Sin embargo, esto conduce al problema descrito en el informe de error vinculado:el proceso de arranque se bloquea durante>1 minuto cuando no hay ningún cable de red conectado con el siguiente mensaje:

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

Una solución dada en esta pregunta parece estar cambiando allow-hotplug a auto :

auto eth0
iface eth0 inet dhcp

Esto efectivamente hace que el mensaje de bloqueo de arranque desaparezca, sin embargo, el sistema ahora bloquea justo antes de que se muestre un aviso de inicio de sesión en tty1. Esta vez, dhclient está bloqueando porque intenta obtener una respuesta de dhcp en eth0, que no está conectado, y espera varios intentos de tiempo de espera. El indicador de inicio de sesión solo aparece después de que se agote el tiempo de espera de dhclient.

Para los usuarios con un DE gráfico, esto podría no ser un problema, ya que no necesitan iniciar sesión en tty1, sino que su DE arranca y nunca ven el mensaje dhclient.

Otra solución probablemente sería usar network-manager . Idealmente, preferiría no usar el administrador de red, pero como último recurso, lo intenté. Sin embargo, en Debian Buster, la cadena de dependencia del administrador de red entra en conflicto con sysvinit-core , que es mi sistema de inicio.

La última alternativa que me viene a la mente es no configurar eth0 en interfaces(5). Esto hace que todos los bloqueos de arranque desaparezcan, sin embargo, necesito ifup eth0 manualmente. después de conectar un cable ethernet.

¿Alguna idea mejor?

ACTUALIZACIÓN:para abordar la cita de @sourcejedi, se especifica "permitir conexión en caliente" para "iniciar la interfaz cuando el kernel detecta un evento de conexión en caliente desde la interfaz" en los documentos de Debian en la red de Debian. Preguntas relacionadas:¿Buena explicación detallada de la sintaxis de /etc/network/interfaces? y ¿Qué es un evento hotplug desde la interfaz?

Respuesta aceptada:

Antes de network-manager , la conocida forma de "automáticamente ifup la interfaz de red cuando se enchufa un cable” era ifplugd . (Nota del autor original :-P). ifplugd todavía está disponible en Debian. No tengo ninguna experiencia reciente con él.

En primer lugar, eliminaría el auto eth0 o allow hotplug eth0 línea de /etc/network/interfaces . Aún necesitaría su línea iface eth0 inet dhcp . (Esta línea depende del nombre de su interfaz de red y también si desea agregar compatibilidad con ipv6, etc.).

Para configurar ifplugd para abrir la interfaz, edite /etc/default/ifplugd para configurar INTERFACES= para incluir el nombre de su interfaz de red. Alternativamente, sugiere que podría usar el valor auto . no se que tan bien auto funciona en cualquier sistema reciente :-).

Relacionado:¿Establecer tiempo de espera al quedarse dormido antes de que la red se desconecte?

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

Esta característica nunca fue proporcionada por allow-hotplug :

Tenga en cuenta que la verificación del estado del enlace no siempre ha estado allí y, en cualquier caso, solo se realizó en el momento del arranque. Nunca admitió el caso en el que no había ningún cable conectado en el arranque y en el que enchufaste el cable más tarde. — Mensaje #20

Las fuentes que contradicen esto simplemente están equivocadas. Si desea esta función, debe ejecutar un demonio que espera eventos de "enlace de red". [*] El ifupdown de Debian El paquete no incluye ningún demonio. allow-hotplug se basa en el demonio udev, que no lee los eventos de enlace de red necesarios.

El demonio udev solo lee eventos udev "hotplug" ("uevent"). No hay ningún "suceso" cuando un dispositivo Ethernet detecta un cambio de estado de enlace. Puede verificar esto usando udevadm monitor .

Los desarrolladores del kernel de Linux tomaron la decisión deliberada de no proporcionar un "evento" para esto. Ver:Re:Q:netdev:generar kobject uevent en eventos de red.

[*] Pedante:técnicamente ifplugd funciona sondeando el estado del enlace a intervalos regulares. Por lo tanto, no se basa necesariamente en eventos de "enlace de red". Esta distinción es señalada por netplug , que use eventos de "enlace de red". netplug no tiene las mismas funciones que ifplugd .


Debian
  1. Cómo configurar una dirección IP estática en Debian Linux

  2. Configurar red en Debian/Ubuntu/LinuxMint

  3. Debian:¿cómo iniciar Debian en modo de texto sin utilizar la interfaz gráfica de usuario?

  4. Debian:¿cómo ocultar un proceso específico?

  5. Explicación del archivo de configuración de DHCP /etc/dhcp/dhcpd.conf

Instale Debian 9 (Stretch) a través del servidor de arranque de red PXE

Instalar y configurar el servidor DHCP de ISC en Debian 9

Cambie el nombre de red predeterminado (ens33) a eth0 en Debian 10/Debian 9

Configuración de red en Debian 10

Instalar Asterisk en Debian

Cómo instalar Nginx en Debian 10