Cómo omitir DHCP si no hay un cable conectado a Ethernet en Debian

12

Mi Bananian Linux está perdiendo el tiempo al iniciar sesión tratando de obtener una concesión de DHCP para la interfaz eth0 que no está conectada. Bueno, el cable extensor está conectado a él, pero no hay nada en el otro extremo.

yo tengo

auto eth0
iface eth0 inet dhcp 

configurado en mi /etc/network/interfacespuesto que quiero que tome ethernet en caso de que esté conectado, pero seguramente no quiero retrasar el inicio del sistema si el cable no está conectado a ethernet. Supuse que el sistema lo sabría automáticamente y no intentaría obtener una concesión de DHCP para la interfaz.

Esto es lo que veo en el momento de la carga (ver las últimas tres líneas):

ingrese la descripción de la imagen aquí

Después de que si comprende que el contrato de arrendamiento no llega, se procede con el arranque.

¿Hay alguna manera de que no le diga a DHCP si no hay un cable conectado?

Maxim V. Pavlov
fuente

Respuestas:

16

Si especificas

allow-hotplug eth0

en lugar de

auto eth0

en /etc/network/interfaces, entonces la conexión solo se iniciará udevcuando algo la active, en lugar de en cada arranque.

Eso podría ser suficiente para manejar su caso, pero no necesariamente; la página de interfacesmanual menciona que

(Las interfaces marcadas como "allow-hotplug" se abren cuando udev las detecta. Esto puede ser durante el arranque si la interfaz ya está presente, o en un momento posterior, por ejemplo, al enchufar una tarjeta de red USB. Tenga en cuenta que esto sí no tiene nada que ver con la detección de un cable de red conectado).

Puede que tenga que utilizar /etc/network/if-up.d/00check-network-cablea partir del ifupdown-extrapaquete de saltarse la interfaz, si no se conecta ningún cable.

Stephen Kitt
fuente
¿Qué pasa si el cable ya está conectado antes del arranque? ¿Un udevevento activará la conexión en el momento del arranque en ese caso? En otras palabras, ¿ udevverifica qué dispositivos ya están conectados a los puertos de la máquina?
Joseph R.
0

Siempre hay más de una solución al problema.

Si está con esta máquina siempre en un lugar, como en casa, entonces la forma más fácil sería deshacerse del paquete dhcp-client y establecer la dirección IP estática, la máscara y la puerta de enlace. Suponiendo que no lo necesitas, harías algo como

apt-get remove isc-dhcp-client

Esto le dirá primero, si hay alguna dependencia. Una vez que haya desinstalado el paquete, ya no tendrá que esperar durante el arranque.

Este es un ejemplo de lo que establecería en su /etc/network/interfaces

iface eth0 inet static
    address 192.168.0.2
    netmask 255.255.255.0
    gateway 192.168.0.254

Fuente: https://wiki.debian.org/DHCP_Client

LinuxSecurityFreak
fuente
Como se mencionó en la pregunta, quiero usar DHCP si el cable de Ethernet está conectado. Por lo tanto, eliminar el cliente DHCP no me ayudará.
Maxim V. Pavlov
0

Echa un vistazo a ifplugd:

ifplugd es un demonio de Linux que configurará automáticamente su dispositivo ethernet cuando se conecta un cable y desconfigurará automáticamente si se tira del cable. Esto es útil en computadoras portátiles con adaptadores de red integrados, ya que solo configurará la interfaz cuando un cable esté realmente conectado.

ifplugd ifplugd interactúa con las utilidades de configuración de red nativas de su distribución.

Algunas caracteristicas:

  • Utiliza los programas nativos ifup / ifdown de su distribución.
  • Puede emitir un pitido cuando el cable está desconectado, enchufado, la configuración de la interfaz se realizó correctamente o falló.
  • Admite Linux SIOCETHTOOL (más reciente, también conocido como ethtool API), SIOCGMIIREG (más antiguo, también conocido como mii-diag / mii-tool API) y SIOCDEVPRIVATE (más antiguo, también conocido como mii-tool API) ioctl () s para obtener el estado del enlace. La versión 0.24 presenta soporte para la detección de enlaces con el indicador de interfaz IFF_RUNNING.
  • Soporte de syslog
  • Pequeño programa: el binario tiene solo 25 KB (más 16 KB para libdaemon).
  • Soporte de interfaz ethernet múltiple
  • Se puede configurar para ignorar períodos cortos "desconectados" (opción -d) o períodos cortos "conectados" (opción -u)
  • Soporte para redes inalámbricas. Cada vez que se detecta una asociación a un AP, la red se configura. Eche un vistazo a waproamd si necesita una instalación para configurar claves WEP antes de que las asociaciones AP tengan éxito.
  • Modo de compatibilidad para dispositivos de red que no admiten detección de cable (opción -F)

Página de búsqueda de paquetes Debian Package: ifplugd .
Sitio oficial de ifplugd

Un apt-get update && apt-get-install ifpluddebería hacer el truco. En una nota al margen, el creador de systemd mantiene este paquete.

eyoung100
fuente
2
Calificaría eso como "... usado para mantener este paquete" ya que la última versión fue hace diez años ;-). Hoy en día, Lennart probablemente recomendaría systemd-networkd... Con ifplugd, después de la instalación, también debe configurar su dispositivo (especificar allow-ifplugden /etc/network/interfaces).
Stephen Kitt
@StephenKitt, ¿ha usado allow-ifplugdo visto el código? Mientras buscaba, solo encontré bugs.debian.org/cgi-bin/bugreport.cgi?bug=468896 , que dice que la allow-ifplugdfunción no fue aceptada.
sourcejedi