Voir son adresse IP sous Linux : ip addr, hostname -I, curl
- 30 octobre 2026
- 09:00
- Par Adrien Roche
- Réseau

Vérifier son adresse IP sous Linux avec ip addr
La commande qui répond à la question « quelle est mon adresse IP » sur toute distribution Linux actuelle, c’est ip, issue du paquet iproute2. Elle est installée par défaut sur toutes les grandes distributions, fonctionne sans root, et c’est elle que les autres commandes de ce guide encapsulent ou remplacent. La forme de base liste chaque interface avec toutes ses adresses :
ip addr show
ip a # same thing, shorterSur un serveur à une seule carte réseau, la sortie ressemble à ceci (les lignes de durée de vie valid_lft ont été retirées) :
1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN group default qlen 1000
inet 127.0.0.1/8 scope host lo
2: eth0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc fq_codel state UP group default qlen 1000
link/ether 52:54:00:12:34:56 brd ff:ff:ff:ff:ff:ff
inet 203.0.113.25/24 brd 203.0.113.255 scope global eth0
inet6 2001:db8:1::25/64 scope global
inet6 fe80::5054:ff:fe12:3456/64 scope linkComment la lire :
- Nom de l’interface.
loest la boucle locale, toujours127.0.0.1, joignable uniquement depuis la machine elle-même. La vraie carte est icieth0; avec les noms d’interface prédictibles, elle apparaît sousens3,enp0s3oueno1, et les cartes sans fil commencent parwl. inetest l’adresse IPv4,inet6l’IPv6. Le suffixe/24est la longueur de préfixe en notation CIDR, l’écriture moderne du masque255.255.255.0.scope globalsignifie routable au-delà de cet hôte ;scope link(la lignefe80::) n’est valide que sur le segment réseau attaché ;scope hostcorrespond à la boucle locale.state UPavecLOWER_UPsignifie que l’interface est activée et que le lien est établi.state DOWNouNO-CARRIERest la raison habituelle pour laquelle une interface n’a aucune adresse.
Variantes utiles :
ip -4 addr # IPv4 only
ip -6 addr # IPv6 only
ip -br -4 addr # one line per interface
ip -4 addr show dev eth0 # a single interfaceLa forme abrégée (-br) est le moyen le plus rapide de vérifier une adresse IP sous Linux quand plusieurs interfaces coexistent, ce qui est la norme sur un VPS faisant tourner Docker :
$ ip -br -4 addr
lo UNKNOWN 127.0.0.1/8
eth0 UP 203.0.113.25/24
docker0 DOWN 172.17.0.1/16hostname -I : juste les adresses
Quand vous n’avez besoin que des adresses, hostname -I (I majuscule) imprime toutes les adresses configurées sur une seule ligne, séparées par des espaces, boucle locale et IPv6 link-local exclues :
$ hostname -I
203.0.113.25 2001:db8:1::25Deux réserves. Le hostname -i en minuscule est une commande différente : elle résout le nom d’hôte de la machine via /etc/hosts et le DNS, ce qui donne généralement 127.0.1.1 sur Debian et Ubuntu. Par ailleurs, hostname -I imprime les adresses sans ordre garanti, ponts virtuels comme docker0 inclus : hostname -I | awk '{print $1}' est donc un raccourci pour humains, pas une « IP principale » fiable pour un script. L’option n’est pas POSIX : Debian, Ubuntu, Fedora et RHEL la proposent, les images minimales basées sur BusyBox comme Alpine parfois non.
ifconfig, nmcli et networkctl
ifconfig (déprécié, net-tools)
ifconfig est ce que montrent les vieux tutoriels. Il appartient à net-tools, déprécié depuis des années au profit d’iproute2 et absent de l’installation par défaut des versions actuelles d’Ubuntu, Debian et Fedora/RHEL. S’il renvoie command not found, passez à ip ou installez le paquet :
sudo apt install net-tools # Debian / Ubuntu
sudo dnf install net-tools # Fedora / RHEL / Rocky / Alma$ ifconfig eth0
eth0: flags=4163<UP,BROADCAST,RUNNING,MULTICAST> mtu 1500
inet 203.0.113.25 netmask 255.255.255.0 broadcast 203.0.113.255
inet6 fe80::5054:ff:fe12:3456 prefixlen 64 scopeid 0x20<link>Lisible, mais avec une vraie limite : ifconfig n’affiche qu’une seule adresse IPv4 par interface. Les adresses secondaires ajoutées avec ip addr add, courantes sur un VPS à plusieurs IP publiques, lui sont invisibles.
nmcli et networkctl
Les postes de travail et les serveurs de la famille Fedora/RHEL gèrent leur réseau avec NetworkManager ; Ubuntu Server utilise netplan au-dessus de systemd-networkd, et beaucoup d’images VPS suivent le même modèle. Chacun dispose d’un outil d’état qui montre adresse, passerelle et DNS dans un seul bloc :
nmcli device show eth0
nmcli -g IP4.ADDRESS device show eth0 # NetworkManager: just the address field
networkctl status eth0 # systemd-networkdL’option -g (--get-values) imprime la valeur brute d’un seul champ, longueur de préfixe comprise, ce qui est pratique en script. Si vous ne savez pas quelle pile votre machine utilise, ni même de quelle distribution et de quelle version il s’agit, commencez par identifier la version de l’OS en ligne de commande ; la réponse décide de l’outil disponible.
Trouver son adresse IP publique avec curl
Tout ce qui précède rapporte l’adresse configurée sur l’interface. Sur la plupart des VPS, l’IPv4 publique est attribuée directement à l’interface, c’est donc aussi ce que voit Internet. À la maison, au bureau ou sur certains clouds, l’interface porte une adresse privée des plages RFC 1918 (10.0.0.0/8, 172.16.0.0/12, 192.168.0.0/16) et un routeur ou un NAT 1:1 la traduit en sortie. Le seul moyen fiable de voir le côté public est d’interroger un service externe :
curl -4 icanhazip.com
curl -4 ifconfig.me/ip
curl -4 https://api.ipify.org
curl -6 icanhazip.com # public IPv6, if the host has oneLes options -4 et -6 forcent la famille d’adresses, ce qui compte sur les hôtes double pile : sans elles, curl peut préférer l’IPv6 et renvoyer une adresse inattendue. icanhazip.com est opéré par Cloudflare depuis 2021 et répond en texte brut. Lisez la réponse comme « l’adresse depuis laquelle mon trafic sort » : derrière un VPN ou un proxy, c’est l’adresse du nœud de sortie, pas celle de votre FAI.
IPv6 : globale contre link-local
Presque toutes les interfaces Linux affichent au moins une ligne inet6, souvent prise à tort pour une adresse IPv6 publique. La ligne qui commence par fe80:: et porte scope link est link-local : chaque interface en génère une automatiquement, elle n’est valide que sur le réseau attaché et n’est jamais joignable depuis Internet. Une adresse IPv6 publique porte scope global et commence par un 2 ou un 3, l’espace unicast global étant 2000::/3.
ip -6 addr show scope global
ip -6 route show defaultSi la première commande n’affiche rien, la machine n’a pas d’IPv6 routable et curl -6 échouera. Les adresses globales supplémentaires marquées temporary sur un poste de travail viennent des extensions de confidentialité ; les serveurs les désactivent pour que l’adresse reste stable pour le DNS et les règles de pare-feu.
Passerelle par défaut, route et DNS
Une adresse seule ne dit pas si la machine peut joindre quoi que ce soit. La table de routage, si : ip route (forme courte ip r) l’affiche.
$ ip route
default via 203.0.113.1 dev eth0 proto static
203.0.113.0/24 dev eth0 proto kernel scope link src 203.0.113.25La ligne default via est la passerelle par défaut, le routeur qu’emprunte chaque paquet quand aucune route plus spécifique ne correspond. La deuxième ligne a été ajoutée par le noyau lors de la configuration de l’adresse ; son champ src est l’adresse que l’hôte préfère comme source sur ce réseau. L’astuce la plus utile s’appuie là-dessus : demander au noyau quelle adresse il utiliserait pour une destination donnée.
$ ip route get 1.1.1.1
1.1.1.1 via 203.0.113.1 dev eth0 src 203.0.113.25 uid 1000
cacheCette valeur src est, par définition, l’adresse sortante de la machine vers Internet, quels que soient les interfaces, ponts ou tunnels présents. Pour le DNS, /etc/resolv.conf reste l’endroit à regarder, mais sur les systèmes utilisant systemd-resolved (Ubuntu depuis 18.04, Fedora récentes) il ne contient que le stub local 127.0.0.53 ; les vrais résolveurs amont sont affichés par resolvectl status, ou par les champs IP4.DNS de nmcli device show sur les hôtes NetworkManager.
Scripts : mettre l’adresse IP dans une variable
La sortie interactive est faite pour des humains ; un script a besoin d’une adresse et de rien d’autre. Ces motifs tiennent la route, du plus simple au plus robuste :
# One interface, IPv4, prefix length stripped
IP=$(ip -4 -o addr show dev eth0 | awk '{print $4}' | cut -d/ -f1)
# Robust: the source address used to reach the internet
IP=$(ip route get 1.1.1.1 | awk '{for (i=1; i<=NF; i++) if ($i == "src") {print $(i+1); exit}}')
# Same thing with JSON output and jq
IP=$(ip -j route get 1.1.1.1 | jq -r '.[0].prefsrc')
# Public IP, with a timeout so the script never hangs offline
PUBLIC_IP=$(curl -4 -s --max-time 5 https://icanhazip.com)L’option -o fait imprimer à ip une adresse par ligne, ce qui sécurise les positions de champs d’awk ; ajoutez head -n 1 si l’interface porte plusieurs adresses IPv4. L’option -j bascule ip en sortie JSON, et jq sélectionne alors les champs par nom. Préférez cette forme dans tout ce qui tourne sur plus d’une machine : les noms d’interface changent d’un hôte à l’autre, pas les noms de champs.
| Commande | Ce qu’elle montre | Idéal pour |
|---|---|---|
ip addr / ip -br -4 addr | Chaque interface, toutes les adresses, l’état | Usage quotidien, vue complète |
hostname -I | Toutes les adresses sur une ligne | Un coup d’œil rapide |
ip route get 1.1.1.1 | Adresse source utilisée vers Internet | Scripts, hôtes multi-interfaces |
ifconfig | Une IPv4 par interface (déprécié) | Systèmes anciens, vieux tutoriels |
curl -4 icanhazip.com | IPv4 publique telle que la voit Internet | NAT, VPN, confirmer l’adresse d’un VPS |
Ce qui change sur un VPS
Sur un VPS avec une IPv4 dédiée, ip -4 addr, hostname -I et curl -4 icanhazip.com doivent tous renvoyer la même adresse, puisque l’IP publique est configurée directement sur l’interface, sans NAT intermédiaire. Quand elles divergent, quelque chose s’est glissé dans le chemin : un NAT côté fournisseur, un client VPN oublié, ou un pont Docker qui a pris la première place dans hostname -I.
Une fois l’adresse confirmée, vérifiez deux choses. D’abord, si elle est réellement joignable et sur quels ports, ce qui est une autre question que celle de sa configuration : vérifiez les ports ouverts de votre serveur Linux depuis l’intérieur avec ss -tulpn et depuis l’extérieur avec nmap. Ensuite, le DNS inverse. Interrogez l’enregistrement PTR de votre adresse :
dig -x 203.0.113.25 +shortUn VPS fraîchement livré répond généralement par un nom générique du fournisseur, ou par rien du tout. Si le serveur envoie du courrier ou expose un service public, configurez le nom d’hôte et le DNS inverse pour qu’ils correspondent ; le courrier sortant, en particulier, est systématiquement rejeté quand l’enregistrement PTR et le nom HELO divergent.
Ces commandes deviennent des réflexes bien plus vite sur un serveur dont l’adresse n’appartient qu’à vous et ne bouge pas. Un VPS Linux de rdp.monster est livré avec une IPv4 dédiée, un accès root complet, CPU et RAM dédiés, une bande passante illimitée (fair-use) et sans KYC, crypto acceptée, à partir de $8.99/mois. Le serveur est en ligne environ 10 secondes après confirmation du paiement : le premier ip -br -4 addr que vous y lancerez n’est qu’à un instant de là.
Foire aux questions
Pourquoi hostname -I affiche-t-il plusieurs adresses IP ?
hostname -I imprime toutes les adresses de toutes les interfaces, sauf la boucle locale et les IPv6 link-local : une machine avec Docker, libvirt, un client VPN ou une deuxième carte réseau en affiche donc plusieurs. docker0 apporte 172.17.0.1, virbr0 typiquement 192.168.122.1, et un hôte double pile ajoute son IPv6 globale. L’ordre n’est pas garanti. Quand vous voulez l’adresse depuis laquelle votre trafic sort réellement, lancez ip route get 1.1.1.1 et lisez plutôt son champ src.Pourquoi ifconfig renvoie-t-il command not found sur Ubuntu ?
ifconfig fait partie du paquet net-tools, déprécié au profit d’iproute2 et absent de l’installation par défaut des versions actuelles d’Ubuntu, Debian et Fedora/RHEL. Le remplaçant est ip addr, disponible partout. Si un script ou une vieille habitude l’exige vraiment, installez le paquet avec sudo apt install net-tools ou sudo dnf install net-tools, en gardant à l’esprit qu’ifconfig n’affiche qu’une IPv4 par interface et masque les adresses secondaires ajoutées avec ip addr add.Pourquoi hostname -i renvoie-t-il 127.0.1.1 ?
hostname -i n’inspecte pas du tout le réseau : il résout le nom d’hôte du système comme le ferait n’importe quelle application, via /etc/hosts puis le DNS. Les installateurs Debian et Ubuntu ajoutent une ligne associant le nom d’hôte à 127.0.1.1 pour que la machine puisse résoudre son propre nom sans réseau, et c’est cette ligne qui remonte. Utilisez la forme à I majuscule, hostname -I, qui lit les vraies adresses des interfaces, ou ip -4 addr pour le détail complet.Comment trouver les adresses IP des autres appareils de mon réseau ?
ip neigh show (ou arp -a si net-tools est installé). Pour une vue complète, balayez le sous-réseau en ping : nmap -sn 192.168.1.0/24 liste tous les hôtes qui répondent, avec leurs noms quand le DNS inverse les fournit. Remplaçez par votre propre réseau, que vous pouvez lire dans la route scope link de ip route. Sur un VPS, c’est rarement utile, et scanner les adresses voisines peut enfreindre les conditions de votre fournisseur.Adrien Roche, Rédacteur infrastructure & hébergement
Ingénieur systèmes avec plus de 10 ans d'exploitation de parcs Windows Server et Linux. Adrien gère la documentation infrastructure de rdp.monster et rédige nos guides sur le RDP, l'hébergement VPS, l'administration serveur, le réseau et les outils de confidentialité.
Articles connexes




