Como posso garantir que meu endereço IP estático seja lido de / etc / network / interfaces em vez de dhcp?

0

Este é um acompanhamento para o pergunta seguinte . Estou tentando definir um IP estático alterando /etc/network/interfaces para o seguinte:

# interfaces(5) file used by ifup(8) and ifdown(8)
auto lo
iface lo inet loopback
auto eth0
iface eth0 inet static
  address 192.168.2.133
  netmask 255.255.255.0
  gateway 192.168.2.1
  dns-nameservers 8.8.8.8

e, em seguida, executando /sbin/ifdown eth0; /sbin/ifup eth0 . No entanto, a alteração no endereço IP não parece ter efeito sem editar /etc/dhcp/dhclient.conf e comentar o seguinte antes de executar ifdown; ifup :

request subnet-mask, broadcast-address, time-offset, routers,
        domain-name, domain-name-servers, domain-search, host-name,
        dhcp6.name-servers, dhcp6.domain-search,
        netbios-name-servers, netbios-scope, interface-mtu,
        rfc3442-classless-static-routes, ntp-servers,
        dhcp6.fqdn, dhcp6.sntp-servers;

Estranhamente, depois de comentar esta linha, executar ifdown; ifup funciona, mas quando eu descomentei, o comportamento não reverte para o comportamento anterior de ignorar alterações nas minhas configurações em /etc/network/interfaces (isso não parece ser um problema, mas eu realmente preciso ser capaz de repetir este problema para que eu possa ter certeza de que a minha solução é robusta) Além disso, eu prefiro não ter que editar /etc/dhcp/dhclient.conf para alterar o meu IP estático, pois parece que eu deveria ser capaz para fazer isso apenas editando interfaces .

Alguém pode explicar os problemas que estou vendo acima e sugerir que a melhor maneira de fazer com que as mudanças nos endereços IP estáticos entrem em vigor, admitindo a reprodutibilidade, para que eu possa ter certeza de que minha abordagem funciona?

    
por jonderry 05.06.2014 / 20:55

2 respostas

0

Você precisa verificar se dhclient ainda não está em execução e emitindo um ip para eth0 quando voltar.

Verifique se há dhclient :

ps aux | grep dhclient

Se estiver em execução, mate-o e execute ifdown; ifup .

    
por 05.06.2014 / 21:16
0

Se o seu sistema possui um arquivo /etc/network/interfaces , ele é baseado no Debian e provavelmente tem o Network Manager, que a) ignora o arquivo interfaces e b) executa dhclient sem ser perguntado, mesmo quando um dispositivo está funcionando e funcionando do jeito que você quer.

As versões mais recentes do NetworkManager devem ignorar dispositivos com configurações manuais ou estáticas. Boa sorte com isso.

O Network Manager é ótimo para laptops ou qualquer PC com uma placa wifi. Em um PC desktop com ethernet baseado em LAN, ele causa mais problemas do que resolve, IMHO.

Três soluções que vi, escolha a que mais se adequa:

  1. $ sudo su -c 'echo manual > /etc/init/network-manager.override'
  2. Adicione a linha NM_CONTROLLED=no à estrofe do dispositivo (isso parece mais estilo RHEL)
  3. $ sudo apt-get remove --purge network-manager
por 06.06.2014 / 01:10