Isso é causado por uma limitação em dhcpcd5
- ele habilita o DHCP em todas as interfaces (tudo ou nada). Corrigi isso mudando para isc-dhcp-client
, que é mais flexível.
Eu tenho uma VM (no ESXi 5.1.0) rodando Debian Wheezy (7.0).
eth0 tem um endereço estaticamente atribuído. eth1 foi atribuído pelo DHCP e agora quero torná-lo estático.
Aqui está meu antigo /etc/network/interfaces
:
# This file describes the network interfaces available on your system
# and how to activate them. For more information, see interfaces(5).
# The loopback network interface
auto lo eth0 eth1
iface lo inet loopback
# The primary network interface
allow-hotplug eth0 eth1
iface eth0 inet static
address 10.2.1.77
broadcast 10.2.1.255
netmask 255.255.255.0
pointopoint 10.2.1.1
iface eth1 inet dhcp
E aqui está o meu novo /etc/network/interfaces
:
# This file describes the network interfaces available on your system
# and how to activate them. For more information, see interfaces(5).
# The loopback network interface
auto lo eth0 eth1
iface lo inet loopback
# The primary network interface
allow-hotplug eth0 eth1
iface eth0 inet static
address 10.2.1.77
broadcast 10.2.1.255
netmask 255.255.255.0
pointopoint 10.2.1.1
iface eth1 inet static
address 10.1.0.254
netmask 255.255.255.0
gateway 10.1.0.1
dns-nameservers 8.8.8.8
Quando eu reinicializo, consigo ver dhcpcd
tentar renovar meu contrato para meu antigo endereço atribuído por DHCP e ser bem-sucedido. E então ele sobrescreve /etc/resolv.conf
, que deve conter 8.8.8.8, mas não contém. eth1 tem o endereço correto (estático), no entanto.
O que estou fazendo de errado aqui? Eu não quero desabilitar dhcpcd
definitiva. Num futuro próximo, eu posso mudar a eth1 de volta para o DHCP ou adicionar uma terceira interface atribuída pelo DHCP.
Executar (como root):
update-rc.d -f dhcpd remove
Se você quiser reativá-lo no futuro,
update-rc.d dhcpd defaults
NOTA: removê-lo do rc.d irá desativá-lo em todas as interfaces. A restauração será ativada em todas as interfaces.
Se você estiver usando o dhcpcd (o daemon do cliente, a maioria das pessoas aqui está confundindo-o com DHCP e DHCPd, que é diferente), adicione o seguinte texto na parte inferior de /etc/dhcpcd.conf
static
interface eth0
static ip_address=172.16.0.5/24
static routers=172.16.0.1
static domain_name_servers=8.8.8.8
É claro que lembre-se de substituir as informações de IP pelos detalhes da sua rede.
A página man do dhcpcd nos diz:
denyinterfaces pattern
When discovering interfaces, the interface name must not match pattern which is a space or comma separated list of patterns passed to fnmatch(3).
Para impedir que o dhcpcd opere em uma interface, você pode pedir para deixar a interface sozinha, adicionando a linha ao /etc/dhcpcd.conf.
no caso dos OPs, isso seria:
denyinterfaces eth0
Isso deve impedir que o dhcpcd mexa com você nessa interface específica, deixando o dhcpcd ativado. Isso também permite manter a configuração da interface em / etc / network / interfaces. A outra opção é usar o que o Ariffer sugeriu (usando /etc/dhcpcd.conf para fazer sua configuração ao invés de / etc / network / interfaces).
Você pode desativar o serviço. link
O método preferido seria atualizar o arquivo /etc/sysconfig/network-scripts/ifcfg-*
para o dispositivo removendo a linha dhcp (ou alterando-a para falso)
Infelizmente, não estou na frente da minha máquina linux agora, então não consigo fazer a configuração exata para você.