Mon Adresse IP
Utilisation du terminal et de l’environnement système
Parler uniquement de l’utilisation du terminal : pour chaque « variante courante », donner la commande + expliquer quel problème elle résout (pile de protocoles, format de sortie, timeouts, retries, signification du chemin).
macOS / Linux / Raspberry Pi / BSD
Les besoins les plus fréquents dans un terminal sont : une sortie propre (une ligne copiable/écrivable/comparable) et des scripts qui ne se bloquent pas. C’est pourquoi les recommandations ici incluent par défaut : mode silencieux (ne pas polluer la sortie) + HTTPS (éviter le mauvais protocole) + des timeouts si nécessaire (éviter les blocages).
Usage de base (le plus recommandé)
curl -4 my.ipin.io
C:\Users\admin>curl -4 my.ipin.io
171.83.40.149
-s: désactive la barre de progression/les messages pour une sortie plus « pure » (évite le bruit dans les scripts).https://: vivement recommandé d’écrire le schéma complet, pour éviter que certains environnements ne basculent par défaut en http et n’entraînent des redirections/interceptions/problèmes de politique de ports.- Chemin racine
/: renvoie strictement l’IPv4 ; si l’IPv4 est indisponible, cela échoue (évite de prendre une IPv6 pour une IPv4).
Variantes courantes (le set le plus utilisé en pratique)
# A1) IPv6 uniquement (pour valider/dépanner l’IPv6)
curl -s https://my.ipin.io/v6
# A2) Résumé de localisation (sortie texte plus lisible en terminal)
curl -s https://my.ipin.io/info
# A3) Forcer le JSON en terminal (changer l’UA en non-curl)
curl -s -A "Mozilla/5.0" https://my.ipin.io/info
# A4) Forcer IPv4 / forcer IPv6 (diagnostiquer quelle pile de protocoles est réellement utilisée)
curl -s -4 https://my.ipin.io
curl -s -6 https://my.ipin.io/v6
# A5) Ajouter des timeouts (indispensable en script : éviter les blocages liés aux fluctuations réseau)
curl -s --connect-timeout 3 --max-time 8 https://my.ipin.io
# A6) Ajouter des retries (réseau faible / fluctuations ponctuelles : 1–2 recommandés)
curl -s --retry 2 --connect-timeout 3 --max-time 8 https://my.ipin.io/info
Explication des variantes (ce qu’il faut vraiment savoir)
/v6: au niveau de l’endpoint, renvoie uniquement l’IPv6 ; utile pour « vérifier explicitement si l’IPv6 est disponible »./info: au niveau de l’endpoint, renvoie l’IP + des champs de localisation ; sortie plus lisible en terminal, adaptée à une « vérification visuelle de la sortie (egress) ».-A "Mozilla/5.0": contrôle du format de sortie. Par défaut, l’UA de curl contient curl → le service renvoie du texte ; UA modifié → le service renvoie du JSON.-4/-6: force la pile de protocoles au niveau de la connexion (le client n’utilise que v4/v6 pour se connecter), souvent utilisé pour diagnostiquer « pourquoi je passe toujours en v6 ».--connect-timeout: ne concerne que la phase « établissement de connexion » ; si le handshake/la connexion est lente, l’arrêt se fait ici.--max-time: limite supérieure de la durée totale de la requête ; la plus importante en automatisation (évite les blocages).--retry: améliore le taux de réussite, mais n’utiliser que peu de retries (1–2). Trop de retries ralentit les tâches et amplifie les incidents.
Android (Termux)
Problèmes courants sur Termux : le réseau mobile fluctue davantage, le chemin est plus complexe, et le choix de la pile de protocoles est moins stable. Donc recommandation par défaut : pile fixée + timeouts + retries si nécessaire.
Usage de base (recommandé)
curl -s -4 --connect-timeout 5 --max-time 10 https://my.ipin.io
Variantes courantes
# B1) Résumé de localisation (confirmer rapidement la localisation de sortie)
curl -s https://my.ipin.io/info
# B2) Vérification IPv6 (uniquement si tu veux explicitement tester l’IPv6)
curl -s -6 https://my.ipin.io/v6
# B3) Réseau faible : quelques retries
curl -s --retry 2 --connect-timeout 5 --max-time 10 https://my.ipin.io
Explication des variantes
-4: si tu veux clairement l’IPv4, fixe-le pour éviter que l’environnement ne privilégie l’IPv6 et que le résultat « dérive »./info: les réseaux mobiles changent souvent de sortie ; c’est la façon la plus directe de vérifier si la localisation correspond à l’attendu.- Stratégie de retries : les timeouts ponctuels sont fréquents en mobile ; quelques retries augmentent nettement le taux de réussite.
Windows (CMD / PowerShell)
Sous Windows, il est utile de bien distinguer les usages : CMD/batch vise plutôt « récupérer une ligne de texte » ; PowerShell vise plutôt « récupérer du JSON et parser directement des champs ».
Usage de base (texte : une ligne IP)
curl.exe -s https://my.ipin.io
Variantes courantes
# C1) Résumé de localisation (lisible dans le terminal)
curl.exe -s https://my.ipin.io/info
# C2) PowerShell récupère du JSON (pratique pour parser dans un script)
Invoke-RestMethod -Uri "https://my.ipin.io/info"
# C3) Vérification IPv6
curl.exe -s https://my.ipin.io/v6
# C4) Dépannage connexion (DNS, handshake, raisons des timeouts ; sortie longue)
curl.exe -v https://my.ipin.io/info
Explication des variantes
Invoke-RestMethod: idéal pour le JSON, évite le parsing manuel.-v: uniquement pour diagnostiquer. Cela affiche beaucoup d’infos de debug ; ne pas activer par défaut dans les scripts.- Sources fréquentes de problèmes : proxy système, passerelle d’entreprise, réécriture DNS, règles hosts — « la même commande » peut se comporter différemment selon la machine.
iOS (iSH / Terminaux légers)
Les terminaux légers n’ont souvent que wget. Note : l’UA par défaut de wget ne contient souvent pas curl, donc on obtient souvent du JSON.
Si tu veux « une ligne de texte », tu dois définir l’UA explicitement pour déclencher la sortie texte terminal.
Usage de base
wget -qO- https://my.ipin.io
Variantes courantes
# D1) Résumé de localisation
wget -qO- https://my.ipin.io/info
# D2) Forcer le texte brut (une ligne IP)
wget -qO- -U "curl/8" https://my.ipin.io
# D3) Forcer le JSON (intégration stable)
wget -qO- -U "Mozilla/5.0" https://my.ipin.io/info
Explication des variantes
-qO-: silencieux + sortie vers stdout, pratique pour les scripts.-U: l’interrupteur clé pour contrôler le format de sortie (UA contient curl → texte ; UA non-curl → JSON).
OpenWRT / Appareils embarqués
L’objectif principal sur les appareils embarqués est : ne pas se bloquer. Il faut donc définir des timeouts. Pour la « détection de changement d’IP publique », éviter aussi les faux positifs : un échec de requête ne signifie pas que l’IP a changé.
Usage de base (avec timeout)
wget -qO- --timeout=10 https://my.ipin.io
Variantes courantes
# E1) Résumé de localisation (auto-vérification de la sortie)
wget -qO- --timeout=10 https://my.ipin.io/info
# E2) Forcer le texte brut (une ligne IP)
wget -qO- --timeout=10 -U "curl/8" https://my.ipin.io
Explication des variantes
--timeout: fortement recommandé par défaut en embarqué pour éviter que les tâches planifiées ne se bloquent.- Format de sortie stable : wget peut renvoyer du JSON par défaut ; si ton script veut une seule ligne IP, déclencher la sortie texte via l’UA est plus fiable.
Docker / CI / Tâches automatisées
Les environnements d’automatisation sont plus incertains : fluctuations DNS, timeouts brefs, changements de politique de sortie sont plus fréquents. Recommandation par défaut : timeouts + peu de retries + format de sortie figé (évite que le parsing casse selon les runners).
Usage de base (avec timeouts)
curl -s --connect-timeout 3 --max-time 8 https://my.ipin.io
Variantes courantes (les plus utiles en CI)
# F1) Récupérer la localisation de façon stable (avec retries)
curl -s --retry 2 --connect-timeout 3 --max-time 8 https://my.ipin.io/info
# F2) CI veut du JSON stable : fixer l’UA en non-curl
curl -s -A "Mozilla/5.0" --connect-timeout 3 --max-time 8 https://my.ipin.io/info
# F3) Dépannage : forcer la pile de protocoles
curl -s -4 https://my.ipin.io
curl -s -6 https://my.ipin.io/v6
Explication des variantes
- Fixer l’UA : en CI, différents images/outils peuvent avoir des UAs différents ; le fixer évite les dérives de format de sortie.
- Peu de retries : améliore le taux de réussite, mais les échecs doivent rester rapidement visibles (plus simple à diagnostiquer).
Questions fréquentes (FAQ)
Q1 : J’utilise curl -s https://my.ipin.io — pourquoi ça échoue parfois ou renvoie une erreur ?
Le chemin racine est « IPv4 strict » : si le lien actuel ne peut pas obtenir d’IPv4, l’appel échoue explicitement (au lieu de « faire semblant » avec une IPv6). Cela arrive souvent sur : des réseaux IPv6-only, certains environnements proxy/passerelle, ou quand ton client est forcé en IPv6 et qu’aucun IPv4 utilisable n’est disponible sur le chemin.
Méthode de diagnostic : utiliser curl -s -4 pour forcer l’IPv4 ; ou utiliser /info pour voir l’IP de sortie actuelle, puis décider de la suite.
Q2 : Je requête /info avec curl — pourquoi ce n’est pas du JSON ?
Parce que les outils de terminal utilisent par défaut le « mode sortie terminal », et /info dans ce mode affiche un cadre texte plus lisible.
Si tu veux du JSON (pour jq/parsage programme), change l’UA en non-curl.
curl -s -A "Mozilla/5.0" https://my.ipin.io/info
Q3 : Pourquoi la même commande donne un format de sortie différent selon les machines ?
Le format de sortie dépend du User-Agent de la requête. Selon l’outil (curl / wget / outils fournis par certaines distributions), l’UA par défaut peut varier,
ce qui entraîne des différences entre réponses texte et JSON.
Solution : fixer l’UA. Pour du texte, faire en sorte que l’UA contienne curl ; pour du JSON, faire en sorte que l’UA ne contienne pas curl. En automatisation/CI, fixer l’UA est la clé d’un « parsing stable ».
Q4 : Pourquoi je veux clairement l’IPv4, mais j’ai l’impression d’être « passé par l’IPv6 » ?
Il faut distinguer deux choses :
la pile de protocoles utilisée pour se connecter (le client choisit v4/v6 pour se connecter),
et le type d’IP renvoyé par l’endpoint (déterminé par le chemin / ou /v6).
Conseil de diagnostic : utiliser -4/-6 pour forcer la pile à la connexion et confirmer quelle route ton réseau préfère réellement.
Si tu veux uniquement l’IPv4, utilise le chemin racine et force -4 si nécessaire.
Q5 : Comment l’écrire dans un script pour éviter les faux positifs et les blocages ?
Combinaison recommandée : silencieux (éviter le bruit), timeouts (éviter les blocages), peu de retries (résister aux fluctuations), et ne pas écraser l’ancienne valeur en cas d’échec (ne pas confondre échec et changement).
curl -s --retry 2 --connect-timeout 3 --max-time 8 https://my.ipin.io
Q6 : Je dois privilégier curl ou wget ?
Si possible, utilise curl : paramètres plus riches et meilleur pour le dépannage. Mais dans les environnements légers/embarqués, n’avoir que wget est courant — wget convient très bien. L’essentiel est : définir des timeouts, sortir vers stdout, et fixer l’UA si nécessaire pour verrouiller le format de sortie.