Rinnova l'IP con dhclient su diverse interfacce


16

Ho due interfacce sul mio computer eth0e eth1.

Entrambe le sottoreti hanno un server DHCP su di esse. Come posso utilizzare dhclientper rinnovare l'indirizzo IP per entrambe le interfacce?

Se lo faccio:

dhclient -r && dhclient eth0

Rinnova l'IP acceso eth0. Quindi, se voglio solo fare:

dhclient eth1

Non riesce con errore:

dhclient(22421) is already running - exiting.

Posso fare:

dhclient -r && dhclient eth1

Ma la dhclient -rparte rilascia il contratto di locazione e anch'io perdo l'indirizzo IP eth0.

Per ora, l'unico modo sono riuscito a fare quello che voglio è quello di eseguire dhclientper eth0, brutalmente uccidere, ed eseguirlo su eth1: io alla fine con una rinnovata IP su entrambe le interfacce.

Ho anche provato con dhclient -xinvece di dhclient -r, senza fortuna.

Sicuramente, questa non è la strada da percorrere!

MODIFICARE:

Due risposte suggeriscono di fare dhclient -r eth0 eth1 && dhclient eth0 eth1 Questo, in effetti, limita le chiamate broadcast a queste interfacce. Ma il primo server DHCP a cui rispondere sarà l'unico utilizzato, risultando quindi in un nuovo IP su una singola interfaccia e non su entrambi. Vedi qui, possiamo vedere le DHCPDISCOVERchiamate su entrambe le interfacce, ma DHCPREQUESTè fatta solo su eth0, prima interfaccia attraverso la quale è stato trovato un server DHCP:

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.

Risposte:


11

O

dhclient -r && dhclient

o

dhclient -r eth0 eth1 && dhclient eth0 eth1

Modifica 1:

Prossimo tentativo: probabilmente è possibile eliminare l'errore "dhclient (22421) è già in esecuzione - in uscita" facendo in modo che una delle istanze utilizzi file diversi. Utilizzare PATH_DHCLIENT_PIDe le PATH_DHCLIENT_DBvariabili (o le opzioni della riga di comando eqivalent, vedere la pagina man) per separarle.


Il problema è che con questo, dhclient invia i pacchetti per scoprire il server dhcp come trasmesso su entrambe le interfacce, ma si ferma con il PRIMO server ricevuto. Voglio usare il primo server ricevuto tramite eth0 per eth0 ip e il primo server ricevuto tramite eth1 per eth1 ip.
Noé Malzieu,

Se non ero chiaro: invia DHCPDISCOVER su entrambe le interfacce ma invia DHCPREQUEST solo sulle prime interfacce su cui riceve una risposta da un server dhcp
Noé Malzieu,

@ NoéMalzieu Dovresti comunque mettere queste informazioni nella tua domanda. Un po 'divertente: hai ottenuto una risposta inutile "vale 11K rep"; ciò non accade tutti i giorni :-)
Hauke ​​Laging,

@HaukeLaging - chi è la risposta che stai chiamando inutile Cool.
slm

@ NoéMalzieu Vedi la mia modifica.
Hauke ​​Laging,

4

Idea n. 1: prova a passare 2 interfacce a dhclient

Se guardi la pagina man per dhclientnoterai che alla fine dell'esempio usa il bit [ if0 [ ...ifN ]. Ciò implicherebbe che è possibile eseguire dhcliente passare più interfacce su cui si desidera eseguire.

estratto dalla pagina man dhclient

dhclient [-4 | -6] [-S] [-N [-N ...]] [-T [-T ...]] [-P [-P ...]] [-p port] [-d] [ -e VAR = valore] [-q] [-1] [-r | -x] [-lf lease-file] [-pf file pid] [-cf file di configurazione] [-sf script-file] [-s server] [-g relay] [-n] [-nc] [ -nw] [-w] [-B] [-I dhcp-client-identifier] [-H nome-host] [-F fqdn.fqdn] [-V identificatore-classe-fornitore] [-R richiesta-opzione- elenco] [-out timeout] [-v] [--version] [if0 [... ifN]]

Quindi dovresti essere in grado di dhclientrilasciare su più interfacce e connetterti anche su di esse.

dhclient -r eth0 eth1
dhclient eth0 eth1

Idea n. 2: guarda come funziona NetworkManager

Ecco come NetworkManager si configura dhclientsul mio sistema. Potresti provare a chiamare esplicitamente il secondo dhclient con argomenti.

/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

Grazie per la tua risposta. Tuttavia, per favore controlla il mio commento sulla risposta di @HaukeLaging
Noé Malzieu,

@ NoéMalzieu - Possiamo vedere un output dettagliato dal secondo dhclient? dhclient -r && dhclient eth0 && dhclient -v eth1
slm

Con questo, il secondo cliente dicedhclient(1155) is already running - exiting.
Noé Malzieu

Sì, sta facendo la cosa del sam anche per me.
slm
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.