Usando ip addr em vez de relatórios ifconfig “ RTNETLINK respostas: Arquivo existe ” no Debian

Tenho um sistema Debian funcionando como um roteador sem fio com eth0 e wlan0. Agora eu adicionei uma rede adicional manualmente em eth1 com ifconfig:

 alix:~# ifconfig eth1 192.168.0.2 netmask 255.255.255.0 alix:~# netstat -rn Kernel IP routing table Destination Gateway Genmask Flags MSS Window irtt Iface 0.0.0.0 192.168.2.1 0.0.0.0 UG 0 0 0 eth0 192.168.0.0 0.0.0.0 255.255.255.0 U 0 0 0 eth1 192.168.2.0 0.0.0.0 255.255.255.0 U 0 0 0 eth0 192.168.3.0 0.0.0.0 255.255.255.0 U 0 0 0 wlan0 alix:~# ping 192.168.0.254 PING 192.168.0.254 (192.168.0.254) 56(84) bytes of data. 64 bytes from 192.168.0.254: icmp_req=1 ttl=64 time=0.537 ms 64 bytes from 192.168.0.254: icmp_req=2 ttl=64 time=0.199 ms 64 bytes from 192.168.0.254: icmp_req=3 ttl=64 time=0.188 ms ^C --- 192.168.0.254 ping statistics --- 3 packets transmitted, 3 received, 0% packet loss, time 2005ms rtt min/avg/max/mdev = 0.188/0.308/0.537/0.161 ms 

Tudo funciona bem como você pode ver.

Agora eu gostaria de tornar a configuração permanente. Portanto, adicionei a seguinte seção a /etc/network/interfaces:

 alix:~# sed -n "/iface eth1/,/^$/p" /etc/network/interfaces iface eth1 inet static address 192.168.0.2 netmask 255.255.255.0 

Mas quando tento iniciar a rede, obtenho o seguinte erro:

 alix:~# ifconfig eth1 down alix:~# ifup -v eth1 Configuring interface eth1=eth1 (inet) run-parts --verbose /etc/network/if-pre-up.d run-parts: executing /etc/network/if-pre-up.d/hostapd ip addr add 192.168.0.2/255.255.255.0 broadcast 192.168.0.255 dev eth1 label eth1 RTNETLINK answers: File exists Failed to bring up eth1. 

Quando executo o comando ip manualmente, recebo o mesmo erro:

 alix:~# ip addr add 192.168.0.2/255.255.255.0 broadcast 192.168.0.255 dev eth1 label eth1 RTNETLINK answers: File exists 

O que há de errado com o comando? E como posso dizer ao Debian para fazer a coisa certa?

Resposta

Percebi que antes tinha que limpar o dispositivo trazendo-o à tona:

# ip addr flush dev eth1 

Limpar informações de configuração de interface definidas manualmente como esta mencionado no Guia do servidor Ubuntu .

Comentários

  • Ainda recebo um erro (ligeiramente diferente) RTNETLINK answers: No such process Failed to bring up eth1 MAS minha Eth1 está atribuída corretamente agora E está UP / UP.
  • sim, o mesmo problema aqui: RTNETLINK answers: No such process Failed to bring up eth1
  • Mesmo que suas respostas resolvam o problema. Seria ótimo se você pudesse dizer o que ele realmente faz. O que é este arquivo RTNETLINK que existe?
  • @ceving: por favor, você pode explicar o que é RTNETLINK answers file? Além disso, depois de descarregar, minha placa de rede não está pegando um novo ip automaticamente, como pedir um novo ip ao dhcp?
  • Uma ressalva é que isso limpa todos os escopos, o que nem sempre é o que você deseja. (Descobri isso da maneira mais difícil)

Resposta

Usando ip addr flush funcionará, mas também limpará todo e qualquer endereço definido nessa interface – possivelmente incluindo aquele que você está usando, se você estiver conectado a uma máquina remota. Isso pode bloqueá-lo fora do seu dispositivo.

RNETLINK answers: File exists acontece quando você está tentando add uma regra que está em conflito com uma regra existente. Eu acho que o OP estava encontrando isso porque já havia definido o endereço com ifconfig. Este erro geralmente pode ser resolvido convertendo o comando add em um change ou replace comando.

É muito mais seguro usar ip addr change ou ip addr replace em vez disso.

Comentários

  • Essa não é uma opção para alguém que usa apenas ifup e ifdown , porque o comando está fisicamente conectado a esses scripts.
  • @alerone using " sudo ip addr change " irá envie-me esta saída. " Informações insuficientes: " dev " o argumento é obrigatório. " Eu / precisamos de mais informações para usar a sua ideia. Seria bom.

Resposta

Eu tive um problema semelhante que, no momento em que joguei a cena de 10.000 dinheiros, era exatamente isso, e eu estava tentando um dd as coisas que faltam para / e / n / id / etho

Mas estudando a página de manual para interfaces, percebi que TODOS os conjuntos de exemplos tinham apenas 2 linhas de dados reais, o endereço ipv4 / 24 e uma linha de gateway especificando o endereço do meu roteador. Então, reduzi meu arquivo eth0 a isso, reiniciei e funcionou perfeitamente.

Deixe uma resposta

O seu endereço de email não será publicado. Campos obrigatórios marcados com *