J'ai configuré plusieurs adresses IP sur une boîte Ubuntu, mais lorsque j'exécute ifconfig
name__, 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 ifconfig
est uniquement:
192.168.202.11
ifconfig
est essentiellement obsolète, même si je ne suis au courant d'aucun plan pour s'en débarrasser. Le remplacement est la commande ip
name__. L'équivalent moderne de ifconfig
à lui seul est ip address list
.
Pourquoi ifconfig
a-t-il été remplacé par ip
name__? De nombreuses nouvelles fonctionnalités ont été ajoutées aux réseaux Linux au cours des dernières décennies depuis que ifconfig
a é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 ifconfig
name__. 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 ifconfig
et l'outil ifconfig
reste 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 ifconfig
ne vous montre pas les alias IP est qu’il semble qu’ils ont été ajoutés par ifupdown
de 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, ifconfig
Cet 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 ifconfig
pour lire les adresses sans étiquette. Une autre approche pourrait consister à demander à ifupdown
de créer les adresses avec des étiquettes, de sorte que ifconfig
puisse les voir sans modification.
Il s’agit probablement d’un bogue du paquet net-tools et de ifconfig
en 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 ifconfig
comme 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 ifconfig
name__.
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.