Erneuern Sie IP mit dhclient auf verschiedenen Schnittstellen

16

Ich habe zwei Schnittstellen auf meinem Computer eth0und eth1.

In beiden Subnetzen befindet sich ein DHCP-Server. Wie kann ich dhclientdie IP-Adresse für beide Schnittstellen erneuern?

Wenn ich mache:

dhclient -r && dhclient eth0

Es erneuert die IP an eth0. Dann, wenn ich nur machen will:

dhclient eth1

Es schlägt fehl mit Fehler:

dhclient(22421) is already running - exiting.

Ich kann:

dhclient -r && dhclient eth1

Aber das dhclient -rTeil gibt den Mietvertrag frei und ich verliere auch die IP-Adresse eth0.

Vorerst habe der einzige Weg , ich es geschafft , zu tun , was ich will , ist laufen dhclientfür eth0brutal töten sie, und führen Sie es auf eth1: ich mit einem erneuerten IP auf beiden Schnittstellen enden.

Ich habe auch mit dhclient -xstattdessen dhclient -rkein Glück getestet .

Dies ist sicherlich nicht der richtige Weg!

BEARBEITEN:

Zwei Antworten schlugen vor, dhclient -r eth0 eth1 && dhclient eth0 eth1 dies zu tun. Dies begrenzt in der Tat die Broadcast-Aufrufe an diese Schnittstellen. Der erste DHCP-Server, der antwortet, wird jedoch als einziger verwendet. Dies führt zu einer neuen IP-Adresse an einer einzelnen Schnittstelle und nicht an beiden. Sehen Sie hier, wir können DHCPDISCOVERAnrufe auf beiden Schnittstellen sehen, aber das DHCPREQUESTgeschieht nur auf der eth0ersten Schnittstelle, über die ein DHCP-Server gefunden wurde:

Listening on LPF/eth0/0a:00:27:00:00:00
Sending on   LPF/eth0/0a:00:27:00:00:00
Listening on LPF/eth1/84:8f:69:d3:d4:a1
Sending on   LPF/eth1/84:8f:69:d3:d4:a1
Sending on   Socket/fallback
DHCPDISCOVER on eth0 to 255.255.255.255 port 67 interval 5 (xid=0x170fcb67)
DHCPDISCOVER on eth1 to 255.255.255.255 port 67 interval 4 (xid=0x115a24c3)
DHCPREQUEST on eth0 to 255.255.255.255 port 67 (xid=0x170fcb67)
DHCPOFFER from 192.168.1.1
DHCPACK from 192.168.1.1 (xid=0x170fcb67)
bound to 192.168.1.4 -- renewal in 1710 seconds.
Noé Malzieu
quelle

Antworten:

11

Entweder

dhclient -r && dhclient

oder

dhclient -r eth0 eth1 && dhclient eth0 eth1

Bearbeiten 1:

Nächster Versuch: Möglicherweise können Sie den Fehler "dhclient (22421) wird bereits ausgeführt - Beenden" beheben, indem Sie eine der Instanzen veranlassen, andere Dateien zu verwenden. Verwenden Sie PATH_DHCLIENT_PIDund PATH_DHCLIENT_DB-Variablen (oder die entsprechenden Befehlszeilenoptionen, siehe Manpage), um sie zu trennen.

Hauke ​​Laging
quelle
Das Problem ist, dass dhclient mit diesem Befehl die Pakete sendet, um den DHCP-Server als Broadcast auf beiden Schnittstellen zu erkennen, aber mit dem zuerst empfangenen Server stoppt. Ich möchte den ersten über eth0 empfangenen Server für eth0 ip und den ersten über eth1 empfangenen Server für eth1 ip verwenden.
Noé Malzieu
Wenn mir nicht klar war: es sendet DHCPDISCOVER auf beiden Schnittstellen, aber sendet DHCPREQUEST nur auf den ersten Schnittstellen, auf denen es eine Antwort von einem DHCP-Server erhält
Noé Malzieu
@ NoéMalzieu Du solltest diese Information auf jeden Fall in deine Frage stellen. Ein bisschen lustig: Du hast eine nutzlose Antwort "11K rep wert"; das passiert nicht jeden tag :-)
Hauke ​​Laging
@HaukeLaging - wen nennst du als unbrauchbar? 8-).
SLM
@ NoéMalzieu Siehe meine Bearbeitung.
Hauke ​​Laging
4

Idee 1: Übergeben Sie zwei Schnittstellen an dhclient

Wenn Sie sich die Manpage ansehen, werden dhclientSie feststellen, dass am Ende des Beispiels das Bit verwendet wird[ if0 [ ...ifN ] . Dies würde bedeuten, dass Sie dhclientmehrere Schnittstellen ausführen und übergeben können, auf denen Sie ausgeführt werden möchten.

Auszug aus der Dhclient-Manpage

dhclient [-4 | -6] [-S] [-N [-N ...]] [-T [-T ...]] [-P [-P ...]] [-p Port] [-d] [ -e VAR = Wert] [-q] [-1] [-r | -x] [-lf Lease-Datei] [-pf PID-Datei] [-cf Konfigurationsdatei] [-sf Skript-Datei] [-s Server] [-g Relay] [-n] [-nc] [ -nw] [-w] [-B] [-I DHCP-Client-ID] [-H Host-Name] [-F fqdn.fqdn] [-V Herstellerklassen-ID] [-R Anforderungsoption- list] [-timeout timeout] [-v] [--version] [if0 [... ifN]]

Sie sollten also in der Lage sein, dhclientmehrere Schnittstellen freizugeben und auch eine Verbindung herzustellen.

dhclient -r eth0 eth1
dhclient eth0 eth1

Idee 2: Sehen Sie sich an, wie NetworkManager das macht

So richtet sich NetworkManager dhclientauf meinem System ein. Sie können versuchen, den zweiten dhclient explizit mit Argumenten aufzurufen.

/sbin/dhclient -d -4 \
   -sf /usr/libexec/nm-dhcp-client.action \
   -pf /var/run/dhclient-wlan0.pid \
   -lf /var/lib/dhclient/dhclient-01f0476d-04bf-4ce7-8ced-844fae73f430-wlan0.lease \
   -cf /var/run/nm-dhclient-wlan0.conf wlan0
slm
quelle
Danke für deine Antwort. Bitte überprüfen Sie jedoch meinen Kommentar zu @HaukeLaging answer
Noé Malzieu
@ NoéMalzieu - Können wir die ausführliche Ausgabe des 2. Dhclient sehen? dhclient -r && dhclient eth0 && dhclient -v eth1
slm
Hiermit sagt der zweite Kundedhclient(1155) is already running - exiting.
Noé Malzieu
Ja, es macht das gleiche für mich.
slm