Por que o dhclient ainda está sendo executado quando eu escolho o IP estático?

15

Modifico o dhcp para estático no / etc / network / interfaces (como abaixo).

# The primary network interface
auto eth0
iface eth0 inet static
netmask 255.255.0.0
address 10.10.130.128
gateway 10.10.1.1

Em seguida, reinicie a interface.

$ sudo ifdown eth0; sudo ifup eth0
...
$ ifconfig
eth0      Link encap:Ethernet 
          inet addr:10.10.130.128  Bcast:10.10.255.255  Mask:255.255.0.0

Então o novo endereço entra em ação.

Mas o DHCP ainda está lá?

$ ps aux | grep dhc
root    ... dhclient3 -e IF_METRIC=100 -pf /var/run/dhclient.eth0.pid -lf /var/lib/dhcp/dhclient.eth0.leases -1 eth0

Isso é normal? Caso contrário, como reiniciar a interface no IP estático enquanto interrompe o DHCP ao mesmo tempo?

Muito obrigado.

user276851
fonte

Respostas:

22
  1. Você primeiro precisa desligar a interface (no modo dhcp) sudo ifdown eth0
  2. Em seguida, edite a configuração nano /etc/network/interfaces

    # The primary network interface
    auto eth0
    iface eth0 inet static
    netmask 255.255.0.0
    address 10.10.130.128
    gateway 10.10.1.1
    
  3. Traga a interface de volta sudo ifup eth0

Caso contrário dhclient, não será desligado corretamente,

PVC
fonte
1
Desculpe, mas alguém pode explicar exatamente como isso difere do que é feito no OP aqui? Eu li isso três vezes e não consigo perceber a diferença.
Fostandy
Trata-se de modificar ('tocar') o arquivo para que a data mude? Devo editar apenas o arquivo APÓS derrubar a interface? Se sim, como posso desfazer o fato de já ter editado antes?
Fostandy
2
@fostandy " ifupdown não suporta a modificação de definições de interface em / etc / network / interfaces enquanto as interfaces relacionadas estão ativadas " . Aqui, a interface é parada antes que o arquivo seja modificado.
de Bruno
1
@Bruno - obrigado por esclarecer. Por curiosidade, o que você faz se já editou irrevogavelmente o /etc/network/interfacesarquivo? Existe uma maneira de forçar uma redefinição para os padrões e iniciar novamente?
Fostandy
7
Fiquei confuso sobre o porquê de fazer a diferença, mas então um amigo meu explicou-o muito bem. O problema é que, se o arquivo é editado e ifdownexecutado, o gerenciador de rede não sabe que precisa parar dhclient, pois tudo o que vê no interfacesarquivo é uma entrada estática. Depois, a interface está inoperante, emitindo ifupcorretamente lê e aplica as configurações estáticas, mas também não se sabe que dhclientfoi iniciado.
paracycle
2

Eu tive o mesmo problema (Ubuntu 16.04). No entanto, essa era uma instância da nuvem e eu não conseguia acessar a interface tão facilmente.

Resposta curta: removi o arquivo /etc/network/interfaces.d/50-cloud-init.cfgifup foi acionado por esse arquivo específico.

Resposta longa: configurei a interface usando o /etc/network/interfacesendereço IP estático, mas ainda encontrei no daemon.log que o dhclient ainda solicitava IP do DHCP e o dhclient foi iniciado pelo systemd. Especificamente, o systemd chamou a unidade networking.service, que chamou ifup, que lê o arquivo de interfaces e o arquivo 50-cloud-init.cfg. Resultando em alguns conflitos, mas ainda assim uma rede funcional.

Patrick Deelman
fonte
Eu tive exatamente o mesmo problema e aprendi da maneira mais difícil que um arquivo posterior (como 99-eth0.cfg) NÃO estava substituindo declarações anteriores! Então, obrigado pela sua contribuição;) #
Daywalker
1

Descobri que isso se devia ao NetworkManager do gnome ainda em execução e ao pensar que estava no comando do dispositivo. Em retrospectiva, isso deveria ter sido óbvio, como psmostrou o dhclient que estava sendo lançado pelo NetworkManager.

Depois de reiniciar o sistema, o dispositivo foi "não gerenciado" no NetworkManager e parou de tentar configurá-lo. Talvez eu pudesse ter conseguido a mesma coisa apenas parando / reiniciando o NetworkManager, não tenho certeza.

fostandy
fonte