Linux / Trouver ses adresses IP locales et publiques
Sous Linux, ip -brief address affiche les adresses IP (Internet Protocol) configurées sur les interfaces. Pour connaître l’adresse source que le noyau choisirait vers une destination, examinez src dans ip route get destination. L’adresse publique vue par un service externe peut être différente après une traduction d’adresses NAT (Network Address Translation), un proxy ou un VPN (réseau privé virtuel).
ip -brief address
ip route get 1.1.1.1
Une machine peut avoir plusieurs adresses : bouclage, adresses privées, adresses de lien local ou adresses accessibles à travers plusieurs réseaux. IPv4 et IPv6 désignent les versions 4 et 6 du protocole IP. « Mon adresse IP » dépend donc du réseau, de la destination et du processus concerné. Les commandes de consultation présentées ici ne changent pas la configuration ; si ip est absent d’une image minimale, utilisez une image de diagnostic ou installez les outils iproute2 prévus par la distribution.
Afficher rapidement les adresses locales
Afficher toutes les interfaces simplement
ip -brief address
-brief affiche le nom de l'interface, le statut et l'adresse sur une ligne par interface. lo est l'interface de bouclage pour communiquer avec elle-même, et 127.0.0.1 et ::1 ne sont pas des adresses pour que les périphériques externes se connectent.
Afficher uniquement les adresses IPv4
ip -4 address show
Pour filtrer les adresses IPv4 portant scope global, utilisez la commande suivante. Cette portée ne signifie pas « adresse publique » : une adresse privée comme 192.168.1.10 peut aussi être affichée avec scope global.
ip -4 address show scope global
Afficher uniquement les adresses IPv6
ip -6 address show
En IPv6, scope link désigne une portée limitée au lien, tandis que scope global permet un usage au-delà du seul lien. Cette portée ne prouve pas une accessibilité depuis Internet : les adresses locales uniques ULA (Unique Local Addresses) ont aussi une portée globale, mais sont destinées aux communications privées, comme le précise la RFC 4193 sur les adresses IPv6 locales uniques. Examinez aussi les attributs temporary, dynamic et les durées de validité ; une adresse temporaire peut changer.
Lire le résultat de ip address
ip address show affiche en détail les interfaces réseau et les adresses de protocole associées à ces interfaces. Vous pouvez vérifier la syntaxe de la commande et les propriétés des adresses dans le manuel ip-address.
ip address show
| Éléments affichés | Signification | À vérifier |
|---|---|---|
UP |
L'interface est administrativement activée | Cela ne signifie pas que le lien réel et la communication sont normaux. |
LOWER_UP |
La liaison de couche inférieure de l'appareil est active | Indices pour déterminer l'état des liaisons câblées ou virtuelles. |
inet |
Adresse IPv4 et longueur du préfixe | Affiché comme 192.0.2.10/24. |
inet6 |
Adresse IPv6 et longueur du préfixe | Vous devez distinguer les adresses link-local des adresses globales. |
scope |
Portée de l’adresse | Inclut host, link, global, etc. |
valid_lft |
Durée de vie valide de l'adresse | Les adresses dynamiques peuvent changer ou être supprimées au fil du temps. |
Vérifier une interface réseau spécifique
Trouver le nom de l'interface
ip -brief link
Selon l'environnement, le nom peut être différent, comme eth0, ens3, enp1s0, wlan0. Ne supposez pas un nom spécifique à partir de la documentation ou des scripts ; vérifiez d'abord la liste réelle du système.
Voir l'adresse de l'interface sélectionnée
ip address show dev ens3
ens3 est un exemple. Remplacez-le par le nom réel de l'interface. Si seules les adresses IPv4 de portée globale sont recherchées, vous pouvez également spécifier une condition.
ip -4 address show dev ens3 scope global
Trouver l’adresse source choisie vers une destination
Lire src dans une recherche de route
S'il y a plusieurs adresses, l'interface sélectionnée et l'adresse source peuvent varier selon la destination. Vérifiez les décisions de routage pour une destination spécifique avec ip route get.
ip route get 1.1.1.1
Dans le résultat, dev désigne l’interface, via la passerelle suivante lorsqu’elle est nécessaire, et src l’adresse source choisie pour cette recherche. La commande n’envoie pas de paquet à la destination et ne teste pas la connexion au service, selon le manuel de ip route. Une application qui impose une adresse source, un contexte de routage ou un proxy peut utiliser un autre chemin. Voici un résultat fictif pour illustrer la lecture :
1.1.1.1 via 192.168.1.1 dev ens3 src 192.168.1.10
Dans cet exemple, le noyau choisirait ens3, la passerelle 192.168.1.1 et l’adresse locale 192.168.1.10. Remplacez la destination de recherche par celle qui vous intéresse ; 1.1.1.1 est seulement une destination d’exemple. Une erreur telle que Network is unreachable indique qu’aucune route utilisable n’a été trouvée dans ce contexte, sans identifier à elle seule la cause.
Vérification de la passerelle par défaut
ip route show default
S'il existe plusieurs routes par défaut, le chemin réel peut différer selon la métrique, les règles de routage par politique et la destination. C'est pourquoi il est recommandé de vérifier les résultats de ip route get ensemble.
Vérification de la route IPv6
ip -6 route get 2606:4700:4700::1111
Une adresse IPv6 ne suffit pas à assurer la connexion : le routage, le pare-feu et le service doivent permettre le trajet prévu. Si vous utilisez un nom, le DNS (système de noms de domaine) doit également fournir une adresse adaptée ; une connexion directe à une adresse IP ne dépend pas de cette résolution.
Vérification rapide avec hostname -I
Sur certaines distributions Linux, la commande suivante peut afficher les adresses configurées sur l’hôte, séparées par des espaces.
hostname -I
Cette variante est pratique mais dépend de l’implémentation de hostname. Dans celle documentée par le manuel Debian de hostname, -I omet le bouclage et les adresses IPv6 de lien local ; l’ordre n’est pas garanti. Elle n’indique ni interface, ni préfixe, ni route. Utilisez ip address et ip route get pour choisir une adresse selon l’usage.
hostname -i montre le résultat de la résolution de nom, donc il est affecté par /etc/hosts ou les paramètres DNS et est différent de l’interrogation de l’adresse configurée directement sur l’interface. Il est important de ne pas confondre des options similaires.
Distinguer les IP privées et les IP publiques
Adresse de l’interface locale
Les commandes affichent les interfaces de l’espace de noms réseau courant, c’est-à-dire un environnement possédant notamment ses propres interfaces et tables de routage. Derrière un routeur domestique ou une passerelle NAT cloud, vous pouvez voir les plages IPv4 privées 10.0.0.0/8, 172.16.0.0/12 et 192.168.0.0/16, définies par la RFC 1918 sur l’adressage privé.
Adresses visibles sur Internet
Un service distant peut voir une adresse de sortie traduite par le routeur, une passerelle cloud, un VPN ou un proxy. ip address et la décision locale de routage ne révèlent pas à eux seuls cette traduction. Consultez les correspondances et routes effectives dans l’équipement réseau ou la console cloud ; les adresses peuvent varier selon la destination et selon IPv4 ou IPv6.
Un service web de vérification d’adresse indique l’adresse qu’il observe pour cette requête particulière. Il reçoit alors la requête et son adresse source ; un proxy peut modifier ce résultat. Ce constat ne révèle pas nécessairement l’adresse utilisée pour d’autres destinations, et ne prouve pas qu’une connexion entrante vers le serveur serait possible.
Vérifier séparément l’accès à un service
Connaître l'adresse IP publique ne signifie pas que le service du serveur est accessible depuis Internet. Vous devez vérifier la redirection de port NAT, les groupes de sécurité cloud, les pare-feux de l'hôte et l'adresse et le port de réception du service.
ss -lntup
Des privilèges d'administrateur peuvent être nécessaires pour voir les informations de processus. Avant d'exposer un service à l'extérieur, examinez l'authentification, le chiffrement, le statut des mises à jour et le périmètre minimal autorisé.
Traiter les adresses IP dans un script
Utiliser la sortie JSON
Pour automatiser un inventaire, la sortie JSON (JavaScript Object Notation) évite de dépendre des colonnes d’un affichage destiné à la lecture. L’option -j est décrite dans le manuel général de ip :
ip -j -4 address show scope global
Avec Python 3 installé, l’exemple complet suivant affiche toutes les adresses du résultat avec leur interface et leur préfixe. Il ne choisit pas arbitrairement la première :
ip -j -4 address show scope global | python3 -c 'import json, sys
for interface in json.load(sys.stdin):
for address in interface.get("addr_info", []):
print("{} {}/{}".format(interface["ifname"], address["local"], address["prefixlen"]))'
Pour une interface ens3 portant 192.0.2.10/24 et 192.0.2.11/24, les deux lignes illustratives attendues sont :
ens3 192.0.2.10/24
ens3 192.0.2.11/24
Ces adresses sont réservées à la documentation, pas celles d’une machine réelle. Une interface sans élément dans addr_info ne produit aucune ligne ; un tableau JSON vide ne produit pas de sortie. Une erreur de commande ou un JSON invalide doit être traitée comme un échec, pas comme la preuve que la machine n’a aucune adresse. Vérifiez les champs disponibles sur la version d’iproute2 utilisée.
Choisir une adresse selon la destination
Sur un serveur relié à plusieurs réseaux, avec un VPN, des conteneurs ou des adresses IPv6 temporaires, la première adresse affichée n’est pas nécessairement celle qu’une application utilisera. Définissez d’abord la destination, la famille IPv4 ou IPv6, l’interface et la portée recherchées. Le résultat JSON inventorie les adresses ; il ne remplace pas une recherche de route.
Conteneurs et espaces de noms réseau
Un conteneur disposant de son propre espace de noms réseau voit ses propres interfaces ; un conteneur configuré pour partager le réseau de l’hôte constitue une exception. Le manuel des espaces de noms réseau Linux décrit les ressources isolées. Lors d’un diagnostic, indiquez si la commande est exécutée sur l’hôte ou dans le conteneur.
Les hôtes, les conteneurs, les Pods Kubernetes, les services, les ingress et les équilibreurs de charge externes peuvent avoir des adresses différentes. Lors du diagnostic des problèmes, notez dans quel espace de noms la commande a été exécutée et distinguez chaque couche du chemin de communication.
Puis-je utiliser ifconfig ?
ifconfig est souvent vu dans la documentation plus ancienne, mais il peut ne pas être installé par défaut sur les distributions Linux récentes et ne peut pas représenter pleinement les fonctionnalités réseau modernes. Dans la nouvelle documentation et les scripts, il est recommandé de privilégier les commandes iproute2 telles que ip address, ip link et ip route.
Si les procédures d'exploitation du système existant dépendent de ifconfig, ne le supprimez pas immédiatement. Vérifiez plutôt les différences de sortie et de comportement et effectuez la transition progressivement.
Questions fréquemment posées
127.0.0.1 est-il l'adresse IP du serveur ?
C'est l'adresse de bouclage IPv4 qui fait référence au serveur lui-même. Les appareils sur le même réseau ne peuvent pas accéder au serveur en utilisant cette adresse.
Si plusieurs adresses apparaissent, laquelle dois-je utiliser ?
Choisissez une adresse joignable depuis le correspondant, dans le réseau et la famille IP prévus. Pour connaître l’adresse source proposée vers une destination, examinez src dans ip route get destination. La première adresse affichée, même privée, n’est pas automatiquement le bon choix.
Pourquoi ne vois-je pas d'adresse IP publique dans ip address ?
Cela peut être dû au fait que le serveur est derrière un NAT, un équilibreur de charge, un VPN ou un proxy. Vérifiez le mappage des adresses externes dans votre équipement réseau ou la console cloud.
Puis-je me connecter via SSH en connaissant seulement l'adresse IP ?
Non. Le serveur SSH (Secure Shell) doit écouter sur l'adresse et le port appropriés, le routage/NAT/pare-feu/groupes de sécurité doivent permettre la connexion, et une méthode d'authentification valide est également requise.




