Comment ignorer DHCP si aucun câble n'est connecté à Ethernet dans Debian

12

Mon Bananian Linux perd du temps à la connexion en essayant d'obtenir un bail DHCP pour l'interface eth0 qui n'est pas connectée. Eh bien, le câble d'extension est connecté, mais rien n'est à l'autre extrémité.

j'ai

auto eth0
iface eth0 inet dhcp 

mis dans mon /etc/network/interfacesdepuis que je veux qu'il prenne Ethernet au cas où il serait connecté, mais je ne veux sûrement pas ralentir le démarrage du système si le câble n'est pas connecté à Ethernet. J'ai supposé que le système le savait automatiquement et n'essayait pas d'obtenir un bail DHCP pour l'interface.

Voici ce que je vois au moment du chargement (voir les trois dernières lignes):

entrez la description de l'image ici

Après avoir compris que le bail ne vient pas, il démarre avec le démarrage.

Existe-t-il un moyen de ne pas le dire à DHCP s'il n'y a pas de câble connecté?

Maxim V. Pavlov
la source

Réponses:

16

Si vous spécifiez

allow-hotplug eth0

au lieu de

auto eth0

dans /etc/network/interfaces, alors la connexion ne sera initiée que udevlorsque quelque chose la déclenchera, plutôt qu'à chaque démarrage.

Cela pourrait être suffisant pour traiter votre cas, mais pas nécessairement; la interfacespage de manuel mentionne que

(Les interfaces marquées "allow-hotplug" sont affichées lorsque udev les détecte. Cela peut être pendant le démarrage si l'interface est déjà présente, ou ultérieurement, par exemple lors du branchement d'une carte réseau USB. Veuillez noter que cela ne n'a rien à voir avec la détection d'un câble réseau branché.)

Vous pourriez avoir besoin d'utiliser /etc/network/if-up.d/00check-network-cablede l' ifupdown-extraemballage pour ignorer l'interface si aucun câble est connecté.

Stephen Kitt
la source
Que faire si le câble est déjà connecté avant le démarrage? Un udevévénement déclenchera-t-il la connexion au démarrage dans ce cas? En d'autres termes, udevvérifie quels appareils sont déjà connectés aux ports de la machine?
Joseph R.
0

Il y a toujours plus d'une solution au problème.

Si vous utilisez cette machine toujours au même endroit, comme à la maison, alors le moyen le plus simple serait de vous débarrasser du package dhcp-client et de définir l'adresse IP statique, le masque et la passerelle. Supposons que vous n'en ayez pas besoin, vous feriez quelque chose comme

apt-get remove isc-dhcp-client

Cela vous dira d'abord s'il y a des dépendances. Une fois le package désinstallé, vous n'aurez plus à attendre lors du démarrage.

Ceci est un exemple de ce que vous définiriez dans votre /etc/network/interfaces

iface eth0 inet static
    address 192.168.0.2
    netmask 255.255.255.0
    gateway 192.168.0.254

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

LinuxSecurityFreak
la source
Comme mentionné dans la question, je souhaite utiliser DHCP si le câble Ethernet est connecté. La suppression du client DHCP ne m'aidera donc pas.
Maxim V. Pavlov,
0

Jetez un œil à ifplugd:

ifplugd est un démon Linux qui configure automatiquement votre périphérique Ethernet lorsqu'un câble est branché et le déconfigure automatiquement si le câble est tiré. Ceci est utile sur les ordinateurs portables dotés d'adaptateurs réseau intégrés, car il ne configurera l'interface que lorsqu'un câble est réellement connecté.

ifplugd ifplugd s'interface avec les utilitaires de configuration réseau natifs de votre distribution.

Certaines fonctionnalités:

  • Utilise les programmes natifs ifup / ifdown de votre distribution.
  • Peut émettre un bip lorsque le câble est débranché, branché, la configuration de l'interface a réussi ou échoué.
  • Prend en charge les ioctl () s Linux pour SIOCETHTOOL (plus récent, aka ethtool API), SIOCGMIIREG (plus ancien, aka mii-diag / mii-tool) et SIOCDEVPRIVATE (plus ancien, aka mii-tool API) pour obtenir l'état du lien. La version 0.24 introduit la prise en charge de la détection de liens avec l'indicateur d'interface IFF_RUNNING.
  • Prise en charge de Syslog
  • Petit programme - le binaire ne fait que 25 Ko (plus 16 Ko pour libdaemon).
  • Prise en charge de plusieurs interfaces Ethernet
  • Peut être configuré pour ignorer les courtes périodes "débranchées" (option -d) ou les courtes périodes "branchées" (option -u)
  • Prise en charge des réseaux sans fil. Chaque fois qu'une association à un AP est détectée, le réseau est configuré. Jetez un œil à waproamd si vous avez besoin d'une fonction pour configurer les clés WEP avant que les associations AP réussissent.
  • Mode de compatibilité pour les périphériques réseau qui ne prennent pas en charge la détection de câble (option -F)

Page de recherche de paquets Debian: ifplugd .
Site officiel d'ifplugd

Un apt-get update && apt-get-install ifpluddevrait faire l'affaire. Soit dit en passant, le créateur de systemd gère ce package.

eyoung100
la source
2
Je qualifierais cela de "... utilisé pour maintenir ce paquet" depuis la dernière version il y a dix ans ;-). De nos jours, Lennart recommanderait probablement systemd-networkd... Avec ifplugd, après l'installation, vous devez également configurer votre appareil (spécifiez allow-ifplugddans /etc/network/interfaces).
Stephen Kitt
@StephenKitt avez-vous utilisé allow-ifplugdou vu le code? Lors de la recherche, je n'ai trouvé que bugs.debian.org/cgi-bin/bugreport.cgi?bug=468896 , ce qui indique que la allow-ifplugdfonctionnalité n'a pas été acceptée.
sourcejedi