Renueve IP con dhclient en diferentes interfaces

16

Tengo dos interfaces en mi computadora eth0y eth1.

Ambas subredes tienen un servidor DHCP en ellas. ¿Cómo podría usar dhclientpara renovar la dirección IP para ambas interfaces?

Si lo hago:

dhclient -r && dhclient eth0

Renueva la IP eth0. Entonces, si solo quiero hacer:

dhclient eth1

Falla con error:

dhclient(22421) is already running - exiting.

Puedo hacer:

dhclient -r && dhclient eth1

Pero la dhclient -rparte libera el contrato de arrendamiento y también pierdo la dirección IP eth0.

Por ahora, la única forma que he conseguido hacer lo que quiero es correr dhclientpara eth0, brutalmente matar a ella, y ejecutarlo en eth1: termino con un renovado IP en ambas interfaces.

También probé con en dhclient -xlugar de dhclient -r, sin suerte.

¡Seguramente, este no es el camino a seguir!

EDITAR:

Dos respuestas sugirieron que hacer dhclient -r eth0 eth1 && dhclient eth0 eth1 esto, de hecho, limita las llamadas de difusión a estas interfaces. Pero el primer servidor DHCP que responda será el único que se use, lo que dará como resultado una nueva IP en una sola interfaz y no en ambas. Vea aquí, podemos ver DHCPDISCOVERllamadas en ambas interfaces, pero DHCPREQUESTsolo se realiza en la eth0primera interfaz a través de la cual se encontró un servidor 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.
Noé Malzieu
fuente

Respuestas:

11

Ya sea

dhclient -r && dhclient

o

dhclient -r eth0 eth1 && dhclient eth0 eth1

Editar 1:

Siguiente intento: Probablemente pueda deshacerse del error "dhclient (22421) ya se está ejecutando - saliendo" haciendo que una de las instancias use archivos diferentes. Utilice las variables PATH_DHCLIENT_PIDy PATH_DHCLIENT_DB(o las opciones de línea de comandos equivalentes, consulte la página del manual) para separarlas.

Hauke ​​Laging
fuente
El problema es que con esto, dhclient envía los paquetes para descubrir el servidor dhcp como se difunde en ambas interfaces, pero se detiene con el PRIMER servidor recibido. Quiero usar el primer servidor recibido a través de eth0 para eth0 ip, y el primer servidor recibido a través de eth1 para eth1 ip.
Noé Malzieu
Si no estaba claro: envía DHCPDISCOVER en ambas interfaces, pero envía DHCPREQUEST solo en las primeras interfaces en las que recibe una respuesta de un servidor dhcp
Noé Malzieu
@ NoéMalzieu En cualquier caso, debe incluir esa información en su pregunta. Un poco gracioso: tienes una respuesta inútil "por valor de 11K rep"; eso no sucede todos los días :-)
Hauke ​​Laging
@HaukeLaging: ¿a quién le llamas inútil? 8-).
slm
@ NoéMalzieu Vea mi edición.
Hauke ​​Laging
4

Idea # 1: Intente pasar 2 interfaces a dhclient

Si observa la página del manual dhclient, notará que al final del ejemplo, utilice el bit [ if0 [ ...ifN ]. Esto implicaría que puede ejecutar dhclienty pasarle múltiples interfaces en las que desea ejecutar.

extracto de la página de manual de dhclient

dhclient [-4 | -6] [-S] [-N [-N ...]] [-T [-T ...]] [-P [-P ...]] [-p puerto] [-d] [ -e VAR = valor] [-q] [-1] [-r | -x] [-lf archivo de arrendamiento] [-pf archivo pid] [-cf archivo de configuración] [-sf archivo de secuencia de comandos] [-s servidor] [-g retransmisión] [-n] [-nc] [ -nw] [-w] [-B] [-I dhcp-client-identifier] [-H host-name] [-F fqdn.fqdn] [-V vendor-class-identifier] [-R request-option- lista] [-outout timeout] [-v] [--version] [if0 [... ifN]]

Por lo tanto, debería poder dhclientlanzar en múltiples interfaces y conectarse también en ellas.

dhclient -r eth0 eth1
dhclient eth0 eth1

Idea # 2: Mira cómo lo hace NetworkManager

Así es como NetworkManager se configura dhclienten mi sistema. Podría intentar llamar al segundo dhclient explícitamente con argumentos.

/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
fuente
Gracias por tu respuesta. Sin embargo, compruebe mi comentario sobre la respuesta de @HaukeLaging
Noé Malzieu
@ NoéMalzieu - ¿Podemos ver resultados detallados del segundo cliente? dhclient -r && dhclient eth0 && dhclient -v eth1
slm
Con esto, el segundo cliente dicedhclient(1155) is already running - exiting.
Noé Malzieu,
Sí, también está haciendo lo de Sam por mí.
slm