RDP Monster

Voir son adresse IP sous Linux : ip addr, hostname -I, curl

Voir son adresse IP sous Linux : ip addr, hostname -I, curl

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, shorter

Sur 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 link

Comment la lire :

  • Nom de l’interface. lo est la boucle locale, toujours 127.0.0.1, joignable uniquement depuis la machine elle-même. La vraie carte est ici eth0 ; avec les noms d’interface prédictibles, elle apparaît sous ens3, enp0s3 ou eno1, et les cartes sans fil commencent par wl.
  • inet est l’adresse IPv4, inet6 l’IPv6. Le suffixe /24 est la longueur de préfixe en notation CIDR, l’écriture moderne du masque 255.255.255.0.
  • scope global signifie routable au-delà de cet hôte ; scope link (la ligne fe80::) n’est valide que sur le segment réseau attaché ; scope host correspond à la boucle locale.
  • state UP avec LOWER_UP signifie que l’interface est activée et que le lien est établi. state DOWN ou NO-CARRIER est 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 interface

La 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/16

hostname -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::25

Deux 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-networkd

L’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 one

Les 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 default

Si 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.25

La 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
    cache

Cette 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.

CommandeCe qu’elle montreIdéal pour
ip addr / ip -br -4 addrChaque interface, toutes les adresses, l’étatUsage quotidien, vue complète
hostname -IToutes les adresses sur une ligneUn coup d’œil rapide
ip route get 1.1.1.1Adresse source utilisée vers InternetScripts, hôtes multi-interfaces
ifconfigUne IPv4 par interface (déprécié)Systèmes anciens, vieux tutoriels
curl -4 icanhazip.comIPv4 publique telle que la voit InternetNAT, 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 +short

Un 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 ?

Il liste toutes les adresses configurées sur toutes les interfaces, ponts virtuels compris.
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 appartient à net-tools, que les distributions actuelles n’installent plus par défaut.
La commande 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 ?

Le -i minuscule résout le nom d’hôte via /etc/hosts, où les systèmes basés sur Debian le mappent à 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 ?

Lisez la table des voisins avec ip neigh, ou balayez le sous-réseau avec nmap -sn.
Les appareils avec lesquels votre machine a récemment échangé des paquets figurent dans le cache ARP/voisins, affiché par 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é.

Inscrivez-vous à notre programme revendeur

Vos informations

Si vous avez une question, contactez-nous en cliquant ici !
Nom(Obligatoire)
Indiquez votre adresse e-mail, vous devez avoir un compte sur dashboard.rdp.monster !

Votre entreprise

Indiquez l'adresse de votre site web si vous en avez un
Expliquez brièvement comment vous comptez vendre les services à vos clients. Par exemple, en discutant avec des gens sur des forums.

Même les monstres aiment les cookies !

Nous utilisons des cookies pour améliorer votre expérience de navigation, proposer des publicités ou contenus personnalisés et analyser notre trafic. En cliquant sur « Accepter », vous consentez à notre utilisation des cookies.