Renova o IP com o dhclient em diferentes interfaces

12

Eu tenho duas interfaces no meu computador, eth0 e eth1 .

Ambas as sub-redes têm um servidor DHCP. Como eu poderia usar dhclient para renovar o endereço IP para ambas as interfaces?

Se eu fizer:

dhclient -r && dhclient eth0

Renova o IP em eth0 . Então, se eu quiser apenas fazer:

dhclient eth1

Falha com erro:

dhclient(22421) is already running - exiting.

Eu posso fazer:

dhclient -r && dhclient eth1

Mas a parte dhclient -r libera a concessão e eu perdi o endereço IP em eth0 também.

Por enquanto, a única maneira que eu consegui fazer o que eu quero é executar dhclient para eth0 , matá-lo brutalmente e executá-lo em eth1 : acabo com um IP renovado em ambos interfaces.

Eu também testei com dhclient -x em vez de dhclient -r , sem sorte.

Certamente, esse não é o caminho a seguir!

EDITAR:

Duas respostas sugeriram fazer dhclient -r eth0 eth1 && dhclient eth0 eth1 Isso, de fato, limita as chamadas de difusão para essas interfaces. Mas o primeiro servidor DHCP a responder será o único usado, resultando em um novo IP em uma única interface e não em ambos. Veja aqui, podemos ver DHCPDISCOVER chama em ambas as interfaces, mas o DHCPREQUEST é feito apenas em eth0 , primeira interface através da qual um servidor DHCP foi encontrado:

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.
    
por Noé Malzieu 30.05.2013 / 00:42

2 respostas

10

Ou

dhclient -r && dhclient

ou

dhclient -r eth0 eth1 && dhclient eth0 eth1

Editar 1:

Próxima tentativa: Você provavelmente pode se livrar do erro "dhclient (22421) já está em execução - saindo" fazendo uma das instâncias usar arquivos diferentes. Use as variáveis PATH_DHCLIENT_PID e PATH_DHCLIENT_DB (ou as opções da linha de comando eqivalent, veja a página man) para separá-las.

    
por 30.05.2013 / 01:08
3

Idéia # 1: Tente passar 2 interfaces para o dhclient

Se você olhar a página do manual para dhclient , perceberá que, no final do exemplo, use o bit [ if0 [ ...ifN ] . Isso implicaria que você pode executar dhclient e passar várias interfaces nas quais deseja executar.

trecho da página do manual do dhclient

dhclient [ -4 | -6 ] [ -S ] [ -N [ -N... ] ] [ -T [ -T... ] ] [ -P [ -P... ] ] [ -p port ] [ -d ] [ -e VAR=value ] [ -q ] [ -1 ] [ -r | -x ] [ -lf lease-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-list ] [ -timeout timeout ] [ -v ] [ --version ] [ if0 [ ...ifN ] ]

Portanto, você deve conseguir que dhclient seja liberado em várias interfaces e conecte-se a elas também.

dhclient -r eth0 eth1
dhclient eth0 eth1

Idéia # 2: Veja como o NetworkManager faz isso

Veja como o NetworkManager configura dhclient no meu sistema. Você poderia tentar chamar o segundo dhclient explicitamente com 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
    
por 30.05.2013 / 01:26