Bem, isso me levou a uma resposta fácil: update-rc.d network-manager disable
e depois reiniciei. Eu não sabia que o NetworkManager ainda estava rodando, mas estava, e estava atribuindo o IP.
Eu configurei uma ligação 4-NIC na minha caixa Debian Wheezy. Após uma inicialização recente, o sistema tem acesso à LAN, mas não pode resolver nomes de host externos nem acessar fora de IPs. Parece que isso acontece porque a interface bond0 não está obtendo uma rota de gateway padrão, mas, em vez disso, uma das interfaces escravas (geralmente eth3) está obtendo isso.
Resultado de route -n
após a inicialização:
Kernel IP routing table
Destination Gateway Genmask Flags Metric Ref Use Iface
0.0.0.0 192.168.2.1 0.0.0.0 UG 0 0 0 eth3
169.254.0.0 0.0.0.0 255.255.0.0 U 1000 0 0 eth3
192.168.2.0 0.0.0.0 255.255.255.0 U 0 0 0 bond0
192.168.2.0 0.0.0.0 255.255.255.0 U 0 0 0 eth3
Meu problema de rede imediato pode ser aliviado fazendo: route add default gw 192.168.2.1 bond0
. Mas eu pelo menos preciso que o computador saia do acesso à rede depois de uma reinicialização, quando eu não tiver acesso físico.
A interface supostamente escrava está recebendo seu próprio endereço IP todas as vezes. Eu suspeito que isso possa ser a raiz do problema. O que está acontecendo aqui? Resultado de ifconfig
, note eth3:
bond0 Link encap:Ethernet HWaddr bc:5f:f4:be:4a:cc
inet addr:192.168.2.3 Bcast:192.168.2.255 Mask:255.255.255.0
inet6 addr: fe80::be5f:f4ff:febe:4acc/64 Scope:Link
UP BROADCAST RUNNING MASTER MULTICAST MTU:1500 Metric:1
RX packets:522992 errors:0 dropped:4871 overruns:0 frame:0
TX packets:885760 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:0
RX bytes:53459302 (50.9 MiB) TX bytes:736701670 (702.5 MiB)
eth0 Link encap:Ethernet HWaddr bc:5f:f4:be:4a:cc
UP BROADCAST RUNNING SLAVE MULTICAST MTU:1500 Metric:1
RX packets:85101 errors:0 dropped:5 overruns:0 frame:0
TX packets:412890 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:1000
RX bytes:8568619 (8.1 MiB) TX bytes:37311255 (35.5 MiB)
Memory:f7400000-f7480000
eth1 Link encap:Ethernet HWaddr bc:5f:f4:be:4a:cc
UP BROADCAST RUNNING SLAVE MULTICAST MTU:1500 Metric:1
RX packets:1285 errors:0 dropped:12 overruns:0 frame:0
TX packets:75 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:1000
RX bytes:185579 (181.2 KiB) TX bytes:16930 (16.5 KiB)
Memory:f7300000-f7380000
eth2 Link encap:Ethernet HWaddr bc:5f:f4:be:4a:cc
UP BROADCAST RUNNING SLAVE MULTICAST MTU:1500 Metric:1
RX packets:2039 errors:0 dropped:11 overruns:0 frame:0
TX packets:472583 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:1000
RX bytes:326122 (318.4 KiB) TX bytes:699347095 (666.9 MiB)
Memory:f7200000-f7280000
eth3 Link encap:Ethernet HWaddr bc:5f:f4:be:4a:cc
inet addr:192.168.2.135 Bcast:192.168.2.255 Mask:255.255.255.0
UP BROADCAST RUNNING SLAVE MULTICAST MTU:1500 Metric:1
RX packets:434565 errors:0 dropped:410 overruns:0 frame:0
TX packets:210 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:1000
RX bytes:44378800 (42.3 MiB) TX bytes:26282 (25.6 KiB)
Memory:f7100000-f7180000
lo Link encap:Local Loopback
inet addr:127.0.0.1 Mask:255.0.0.0
inet6 addr: ::1/128 Scope:Host
UP LOOPBACK RUNNING MTU:16436 Metric:1
RX packets:78 errors:0 dropped:0 overruns:0 frame:0
TX packets:78 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:0
RX bytes:9310 (9.0 KiB) TX bytes:9310 (9.0 KiB)
e /etc/network/interfaces
são assim:
auto lo
iface lo inet loopback
auto eth0
iface eth0 inet manual
bond-master bond0
bond-mode 4
auto eth1
iface eth1 inet manual
bond-master bond0
bond-mode 4
auto eth2
iface eth2 inet manual
bond-master bond0
bond-mode 4
auto eth3
iface eth3 inet manual
bond-master bond0
bond-mode 4
auto bond0
iface bond0 inet static
address 192.168.2.3
netmask 255.255.255.0
gateway 192.168.2.1
dns-nameservers 192.168.2.1
slaves eth0 eth1 eth2 eth3
bond-slaves none
bond-mode 4
bond-miimon 100
bond-downdelay 200
bond-updelay 200
Eu tentei várias combinações de portas no meu switch e, a cada vez, obtive aproximadamente o mesmo resultado (às vezes, uma interface diferente da eth3). Este problema surgiu depois de atualizar minha placa-mãe; com o quadro antigo, eu tinha uma ligação 2-NIC, que funcionava bem. (Existe algum problema possível com a atualização de hardware em uma instalação existente do Wheezy?) Após a atualização, eu removi o antigo arquivo /etc/udev/rules.d/70-persistent-net.rules
, e deixá-lo regenerar, então o arquivo agora contém:
# PCI device 0x8086:/sys/devices/pci0000:00/0000:00:1c.2/0000:07:00.0 (igb)
SUBSYSTEM=="net", ACTION=="add", DRIVERS=="?*", ATTR{address}=="bc:5f:f4:be:4a:cc", ATTR{dev_id}=="0x0", ATTR{type}=="1", KERNEL=="eth*", NAME="eth0"
# PCI device 0x8086:/sys/devices/pci0000:00/0000:00:1c.4/0000:09:00.0 (igb)
SUBSYSTEM=="net", ACTION=="add", DRIVERS=="?*", ATTR{address}=="bc:5f:f4:be:4a:bd", ATTR{dev_id}=="0x0", ATTR{type}=="1", KERNEL=="eth*", NAME="eth2"
# PCI device 0x8086:/sys/devices/pci0000:00/0000:00:1c.3/0000:08:00.0 (igb)
SUBSYSTEM=="net", ACTION=="add", DRIVERS=="?*", ATTR{address}=="bc:5f:f4:be:4a:ce", ATTR{dev_id}=="0x0", ATTR{type}=="1", KERNEL=="eth*", NAME="eth1"
# PCI device 0x8086:/sys/devices/pci0000:00/0000:00:1c.5/0000:0a:00.0 (igb)
SUBSYSTEM=="net", ACTION=="add", DRIVERS=="?*", ATTR{address}=="bc:5f:f4:be:4a:bf", ATTR{dev_id}=="0x0", ATTR{type}=="1", KERNEL=="eth*", NAME="eth3"
Uma última coisa, tentei adicionar o seguinte ao meu arquivo /etc/network/interfaces
, na esperança de obter uma solução "contornável".
auto bond0
...
post-up route add default gw 192.168.2.1 bond0
pre-down route del default gw 192.168.2.1 bond0
Isso parece não fazer diferença, e após uma inicialização, não há nenhuma rota GW padrão para bond0 na tabela de roteamento (é exatamente como acima). Eu adoraria saber o que estou fazendo de errado lá, e pelo menos usar isso como uma correção temporária.
Bem, isso me levou a uma resposta fácil: update-rc.d network-manager disable
e depois reiniciei. Eu não sabia que o NetworkManager ainda estava rodando, mas estava, e estava atribuindo o IP.
Descobri que liberar o endereço IP eth * ajudou, como neste post: link
ou seja, sudo ip addr flush dev ethX
Provavelmente, precisa encontrar uma solução que persista nas reinicializações do sistema
Coloque o seguinte comando:
route add default gw 192.168.2.1 bond0
em /etc/rc.local
Tags networking udev debian bonding