Renouveler IP avec dhclient sur différentes interfaces

16

J'ai deux interfaces sur mon ordinateur eth0et eth1.

Les deux sous-réseaux disposent d'un serveur DHCP. Comment pourrais-je utiliser dhclientpour renouveler l'adresse IP pour les deux interfaces?

Si je fais:

dhclient -r && dhclient eth0

Il renouvelle l'IP sur eth0. Ensuite, si je veux juste faire:

dhclient eth1

Il échoue avec une erreur:

dhclient(22421) is already running - exiting.

Je peux faire:

dhclient -r && dhclient eth1

Mais la dhclient -rpartie libère le bail et je perds également l'adresse IP eth0.

Pour l' instant, la seule façon que j'ai réussi à faire ce que je veux est de courir dhclientpour eth0, tuer brutalement, et l' exécuter sur eth1: je finis avec une adresse IP renouvelée sur les deux interfaces.

J'ai aussi testé avec dhclient -xau lieu de dhclient -r, pas de chance.

Ce n'est certainement pas la voie à suivre!

ÉDITER:

Deux réponses suggèrent de faire dhclient -r eth0 eth1 && dhclient eth0 eth1 Cela, en effet, limite les appels de diffusion vers ces interfaces. Mais le premier serveur DHCP à répondre sera le seul utilisé, d'où une nouvelle IP sur une seule interface et non les deux. Voyez ici, nous pouvons voir les DHCPDISCOVERappels sur les deux interfaces, mais cela DHCPREQUESTse fait uniquement sur la eth0première interface à travers laquelle un serveur DHCP a été trouvé:

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
la source

Réponses:

11

Soit

dhclient -r && dhclient

ou

dhclient -r eth0 eth1 && dhclient eth0 eth1

Modifier 1:

Essayez ensuite: Vous pouvez probablement vous débarrasser de l'erreur "dhclient (22421) est déjà en cours d'exécution - sortie" en faisant en sorte que l'une des instances utilise des fichiers différents. Utilisez les variables PATH_DHCLIENT_PIDet PATH_DHCLIENT_DB(ou les options de ligne de commande équivalentes, voir la page de manuel) pour les séparer.

Hauke ​​Laging
la source
Le problème est qu'avec cela, dhclient envoie les paquets pour découvrir le serveur DHCP comme diffusé sur les deux interfaces, mais s'arrête avec le PREMIER serveur reçu. Je veux utiliser le premier serveur reçu via eth0 pour eth0 ip, et le premier serveur reçu via eth1 pour eth1 ip.
Noé Malzieu
Si je n'ai pas été clair: il envoie DHCPDISCOVER sur les deux interfaces mais n'envoie DHCPREQUEST que sur les premières interfaces sur lesquelles il reçoit une réponse d'un serveur DHCP
Noé Malzieu
@ NoéMalzieu Vous devez en tout cas mettre ces informations dans votre question. Un peu drôle: vous avez obtenu une réponse inutile "vaut 11K rep"; ça n'arrive pas tous les jours :-)
Hauke ​​Laging
@HaukeLaging - qui vous appelle la réponse inutile 8-).
slm
@ NoéMalzieu Voir mon montage.
Hauke ​​Laging
4

Idée n ° 1: essayez de passer 2 interfaces à dhclient

Si vous regardez la page de manuel pour dhclientvous remarquerez qu'à la fin de l'exemple, utilisez le bit [ if0 [ ...ifN ]. Cela impliquerait que vous pouvez exécuter dhclientet lui transmettre plusieurs interfaces sur lesquelles vous souhaitez exécuter.

extrait de la page de manuel dhclient

dhclient [-4 | -6] [-S] [-N [-N ...]] [-T [-T ...]] [-P [-P ...]] [-p port] [-d] [ -e VAR = valeur] [-q] [-1] [-r | -x] [-lf bail-file] [-pf pid-file] [-cf config-file] [-sf script-file] [-s server] [-g relay] [-n] [-nc] [ -nw] [-w] [-B] [-I dhcp-client-identifier] [-H host-name] [-F fqdn.fqdn] [-V vendor-class-identifier] [-R request-option- liste] [-timeout timeout] [-v] [--version] [if0 [... ifN]]

Vous devriez donc être en mesure de dhclientpublier sur plusieurs interfaces et de vous connecter également.

dhclient -r eth0 eth1
dhclient eth0 eth1

Idée n ° 2: regardez comment NetworkManager le fait

Voici comment NetworkManager s'installe dhclientsur mon système. Vous pouvez essayer d'appeler explicitement le deuxième dhclient avec des arguments.

/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
la source
Merci pour votre réponse. Cependant, veuillez vérifier mon commentaire sur la réponse @HaukeLaging
Noé Malzieu
@ NoéMalzieu - Peut-on voir la sortie verbeuse du 2ème client? dhclient -r && dhclient eth0 && dhclient -v eth1
slm
Avec cela, le deuxième client ditdhclient(1155) is already running - exiting.
Noé Malzieu
Ouais, ça fait la même chose pour moi aussi.
slm