ifconfig não mostrando todos os IPs ligados à máquina

8

Configurei vários endereços IP em uma caixa do Ubuntu, mas quando executo ifconfig , ele mostra apenas um deles. Eu sou capaz, no entanto, de pingar todos os outros endereços atribuídos a esta máquina.

/etc/network/interface contents:

# 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
iface lo inet loopback

# The primary network interface
auto eth0
iface eth0 inet static
     address 192.168.202.11
     netmask 255.255.255.0
     network 192.168.202.0
     broadcast 192.168.202.255
     gateway 192.168.202.1

# dns-* options are implemented by the resolvconf package, if installed   
dns-search idil.dz1.da

auto eth0:1    
iface eth0:1 inet static
     address 192.168.202.12   
     netmask 255.255.255.0

auto eth0:2
iface eth0:2 inet static
     address 192.168.202.13
     netmask 255.255.255.0

auto eth0:3
iface eth0:3 inet static
     address 192.168.202.14
     netmask 255.255.255.0

auto eth0:4
iface eth0:4 inet static
     address 192.168.202.15
     netmask 255.255.255.0

auto eth0:5
iface eth0:5 inet static
     address 192.168.202.16   
     netmask 255.255.255.0

No entanto, a saída do ifconfig é apenas:

192.168.202.11

    
por pankaj sharma 10.12.2012 / 10:11

2 respostas

16

ifconfig é essencialmente obsoleto, embora não haja planos de que eu saiba livrar-se dele. A substituição é o comando ip . O equivalente moderno de ifconfig por si só é ip address list .

Por que ifconfig foi substituído por ip ? Muitas novas funcionalidades foram adicionadas à rede Linux nas décadas desde que o ifconfig foi escrito. Isso envolveu uma API totalmente nova (netlink) para que a ferramenta userspace fale com o kernel para configurar a rede. Foi muito mais prático escrever uma nova ferramenta para mapear melhor a nova funcionalidade através da API do netlink e até a linha de comando, do que tentar adaptar a antiga ferramenta ifconfig . Confira o ip (8) manpage para todas as coisas legais que você pode fazer agora.

A API do kernel usada por ifconfig e a ferramenta ifconfig permanece para compatibilidade com versões anteriores, mas essa interface é cega para qualquer coisa que não seja facilmente mapeada para o modelo antigo.

O motivo pelo qual ifconfig não mostra os aliases de IP é que eles parecem estar sendo adicionados pelo ifupdown do Debian (o pacote que manipula /etc/network/interfaces ) usando um mecanismo diferente que não adiciona os rótulos :1 , :2 , etc. Portanto, a ferramenta ifconfig é cega para eles, pois a API antiga determinava esses rótulos e, portanto, os endereços extras não são mapeados para a API antiga. A partir do endereço de IP (8) manpage :

          Each address may be tagged with a label string.  In order to
          preserve compatibility with Linux-2.0 net aliases, this string
          must coincide with the name of the device or must be prefixed
          with the device name followed by colon.

Os bugs ligados na resposta do maggotbrain parecem estar focados em adicionar suporte a ifconfig para ler endereços sem rótulos. Outra abordagem pode ser organizar ifupdown para criar os endereços com rótulos, de modo que ifconfig consiga vê-los sem modificações.

    
por Robie Basak 14.08.2013 / 10:40
0

Este é provavelmente um bug no pacote net-tools e ifconfig especificamente.

Veja os bugs da barra de lançamento aqui e aqui para informações adicionais.

Se você inserir suas interfaces manualmente, a partir da linha de comando, usando ifconfig , como este (seguindo sua configuração acima):

sudo ifconfig eth0:1 192.168.202.12 netmask 255.255.255.0
sudo ifconfig eth0:2 192.168.202.13 netmask 255.255.255.0
sudo ifconfig eth0:3 192.168.202.14 netmask 255.255.255.0
sudo ifconfig eth0:4 192.168.202.15 netmask 255.255.255.0
sudo ifconfig eth0:5 192.168.202.16 netmask 255.255.255.0

Você terá essas interfaces exibidas, conforme esperado, ao executar ifconfig .

No entanto, essas alterações não serão exibidas no seu /etc/network/interfaces . Então, você precisará adicioná-los em ambos os lugares.

Nota: Isso também não é persistente nas reinicializações da interface, portanto, você precisará executar novamente os comandos ao reiniciar a interface / máquina.

    
por Kevin Bowen 10.12.2012 / 12:14