web-dev-qa-db-fra.com

ifconfig n'indiquant pas toutes les adresses IP liées à la machine

J'ai configuré plusieurs adresses IP sur une boîte Ubuntu, mais lorsque j'exécute ifconfigname__, il n'en affiche qu'une. Je suis toutefois en mesure d’envoyer une requête ping à toutes les autres adresses attribuées à cette machine.

/etc/network/interface contenu:

# 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

Cependant, la sortie de ifconfigest uniquement:

192.168.202.11

9
pankaj sharma

ifconfigest essentiellement obsolète, même si je ne suis au courant d'aucun plan pour s'en débarrasser. Le remplacement est la commande ipname__. L'équivalent moderne de ifconfigà lui seul est ip address list.

Pourquoi ifconfiga-t-il été remplacé par ipname__? De nombreuses nouvelles fonctionnalités ont été ajoutées aux réseaux Linux au cours des dernières décennies depuis que ifconfiga été écrit. Cela impliquait une toute nouvelle API (netlink) permettant à l’outil utilisateur de parler au noyau pour configurer le réseau. Il était bien plus pratique d'écrire un nouvel outil pour mieux mapper la nouvelle fonctionnalité via l'API netlink et jusqu'à la ligne de commande, plutôt que d'essayer d'adapter l'ancien outil ifconfigname__. Consultez la page de manuel ip (8) pour connaître toutes les nouveautés intéressantes que vous pouvez faire maintenant.

L'API du noyau utilisée par ifconfiget l'outil ifconfigreste quant à elle pour assurer la compatibilité ascendante, mais cette interface ignore tout ce qui ne correspond pas facilement à l'ancien modèle.

La raison pour laquelle ifconfigne vous montre pas les alias IP est qu’il semble qu’ils ont été ajoutés par ifupdownde Debian (le paquet qui gère /etc/network/interfaces) en utilisant un mécanisme différent qui n’ajoute pas les étiquettes :1, :2, etc. Ainsi, ifconfigCet outil leur est aveugle, car l'ancienne API avait imposé ces étiquettes, de sorte que les adresses supplémentaires ne correspondaient pas à l'ancienne API. Depuis la page de manuel ip-address (8) :

          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.

Les bogues liés dans la réponse de maggotbrain semblent être centrés sur l'ajout de la prise en charge de ifconfigpour lire les adresses sans étiquette. Une autre approche pourrait consister à demander à ifupdownde créer les adresses avec des étiquettes, de sorte que ifconfigpuisse les voir sans modification.

18
Robie Basak

Il s’agit probablement d’un bogue du paquet net-tools et de ifconfigen particulier.

Voir les bugs du tableau de bord ici et ici pour plus d'informations.

Si vous entrez vos interfaces manuellement, à partir de la ligne de commande, utilisez ifconfigcomme ceci (selon la configuration ci-dessus):

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

Comme prévu, ces interfaces s'affichent lors de l'exécution de ifconfigname__.

Ces modifications n'apparaîtront toutefois pas dans votre /etc/network/interfaces. Vous devrez donc les ajouter aux deux endroits.

Remarque: ceci n'est également pas persistant lors des réinitialisations d'interface, vous devrez donc réexécuter les commandes lors du redémarrage de l'interface/de la machine.

0
Kevin Bowen