Wie man DHCP überspringt, wenn in Debian kein Kabel mit dem Ethernet verbunden ist

12

Mein Bananian Linux verschwendet Zeit bei der Anmeldung, um eine DHCP-Lease für die eth0-Schnittstelle zu erhalten, die nicht verbunden ist. Nun, das Verlängerungskabel ist angeschlossen, aber nichts ist am anderen Ende.

ich habe

auto eth0
iface eth0 inet dhcp 

set in my, /etc/network/interfacesda ich möchte, dass es Ethernet aufnimmt, falls es verbunden ist, aber ich möchte den Start des Systems mit Sicherheit nicht verlangsamen, wenn das Kabel nicht mit Ethernet verbunden ist. Ich ging davon aus, dass das System dies automatisch weiß und nicht versucht, eine DHCP-Lease für die Schnittstelle zu erhalten.

Folgendes sehe ich zum Ladezeitpunkt (siehe die letzten drei Zeilen):

Bildbeschreibung hier eingeben

Wenn Sie wissen, dass der Leasingvertrag nicht zustande kommt, wird der Startvorgang fortgesetzt.

Gibt es eine Möglichkeit, wie ich feststellen kann, dass DHCP nicht funktioniert, wenn kein Kabel angeschlossen ist?

Maxim V. Pavlov
quelle

Antworten:

16

Wenn Sie angeben

allow-hotplug eth0

Anstatt von

auto eth0

In /etc/network/interfaceswird die Verbindung nur dann hergestellt, udevwenn sie ausgelöst wird , und nicht bei jedem Systemstart.

Das könnte ausreichen, um Ihren Fall zu behandeln, aber nicht unbedingt; Die interfacesManpage erwähnt das

(Schnittstellen, die mit "allow-hotplug" markiert sind, werden angezeigt, wenn udev sie erkennt. Dies kann entweder während des Startvorgangs geschehen, wenn die Schnittstelle bereits vorhanden ist, oder zu einem späteren Zeitpunkt, z. B. beim Einstecken einer USB-Netzwerkkarte. Bitte beachten Sie, dass dies der Fall ist nichts mit dem Erkennen eines eingesteckten Netzwerkkabels zu tun haben.)

Möglicherweise müssen Sie /etc/network/if-up.d/00check-network-cableaus dem ifupdown-extraPaket verwenden , um die Schnittstelle zu überspringen, wenn kein Kabel angeschlossen ist.

Stephen Kitt
quelle
Was ist, wenn das Kabel bereits vor dem Booten angeschlossen ist? Wird udevin diesem Fall die Verbindung beim Booten durch ein Ereignis ausgelöst? Prüft mit anderen Worten, udevwelche Geräte bereits an den Anschlüssen des Geräts angeschlossen sind?
Joseph R.
0

Es gibt immer mehr als eine Lösung für das Problem.

Wenn Sie sich mit diesem Computer immer an einem Ort wie zu Hause befinden, ist es am einfachsten, das Paket dhcp-client zu entfernen und die statische IP-Adresse, Maske und das Gateway festzulegen. Angenommen, Sie brauchen es nicht, würden Sie so etwas tun

apt-get remove isc-dhcp-client

Hier erfahren Sie zunächst, ob Abhängigkeiten bestehen. Sobald Sie das Paket deinstalliert haben, müssen Sie nicht länger beim Booten warten.

Dies ist ein Beispiel für das, was Sie in Ihrem einstellen würden /etc/network/interfaces

iface eth0 inet static
    address 192.168.0.2
    netmask 255.255.255.0
    gateway 192.168.0.254

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

LinuxSecurityFreak
quelle
Wie in der Frage erwähnt, möchte ich DHCP verwenden, wenn das Ethernet-Kabel angeschlossen ist. Das Entfernen des DHCP-Clients hilft mir also nicht.
Maxim V. Pavlov
0

Schauen Sie sich an ifplugd:

ifplugd ist ein Linux-Daemon, der Ihr Ethernet-Gerät beim Einstecken eines Kabels automatisch konfiguriert und beim Ziehen des Kabels automatisch dekonfiguriert. Dies ist bei Laptops mit integrierten Netzwerkadaptern hilfreich, da die Schnittstelle nur konfiguriert wird, wenn ein Kabel wirklich angeschlossen ist.

ifplugd ifplugd ist mit den nativen Netzwerkkonfigurationsprogrammen Ihrer Distribution kompatibel.

Einige Eigenschaften:

  • Verwendet die nativen ifup / ifdown-Programme Ihrer Distribution.
  • Möglicherweise ertönt ein Signalton, wenn das Kabel abgezogen oder eingesteckt ist oder die Schnittstellenkonfiguration erfolgreich war oder fehlgeschlagen ist.
  • Unterstützt die Linux-API SIOCETHTOOL (neuere, auch bekannt als ethtool API), SIOCGMIIREG (ältere, auch bekannt als mii-diag / mii-tool API) und SIOCDEVPRIVATE (älteste, auch bekannt als mii-tool API) ioctl (), um den Linkstatus zu erhalten. In Version 0.24 wird die Linkerkennung mit dem Schnittstellenflag IFF_RUNNING unterstützt.
  • Syslog-Unterstützung
  • Kleines Programm - die Binärdatei ist nur 25 KB groß (plus 16 KB für libdaemon).
  • Unterstützung für mehrere Ethernet-Schnittstellen
  • Kann so konfiguriert werden, dass kurze "nicht eingesteckte" Perioden (Option -d) oder kurze "eingesteckte" Perioden (Option -u) ignoriert werden
  • Unterstützung für drahtlose Netzwerke. Immer wenn eine Zuordnung zu einem AP erkannt wird, wird das Netzwerk konfiguriert. Schauen Sie sich waproamd an, wenn Sie eine Funktion zum Konfigurieren von WEP-Schlüsseln benötigen, bevor die AP-Zuordnungen erfolgreich sind.
  • Kompatibilitätsmodus für Netzwerkgeräte, die keine Kabelerkennung unterstützen (Option -F)

Seite zur Debian- Paketsuche : ifplugd .
Offizielle ifplugd Seite

Ein apt-get update && apt-get-install ifpludsollte den Trick machen. Nebenbei bemerkt, der Ersteller von systemd verwaltet dieses Paket.

eyoung100
quelle
2
Ich würde das als "... pflegte dieses Paket" seit der letzten Veröffentlichung vor zehn Jahren bezeichnen ;-). Heute würde Lennart wahrscheinlich empfehlen systemd-networkd... Mit ifplugd, nach der Installation müssen Sie auch Ihr Gerät ( bitte angeben konfigurieren allow-ifplugdin /etc/network/interfaces).
Stephen Kitt
@StephenKitt hast du allow-ifplugdden Code benutzt oder gesehen? Während der Suche habe ich nur bugs.debian.org/cgi-bin/bugreport.cgi?bug=468896 gefunden , was besagt, dass die allow-ifplugdFunktion nicht akzeptiert wurde.
Sourcejedi