Si je vérifie avec google Je peux voir mon IP publique. Y a-t-il quelque chose sur la ligne de commande d'Ubuntu qui me donne la même réponse ?
Réponses
Trop de publicités?Amazon AWS
curl https://checkip.amazonaws.com
Exemple de sortie :
123.123.123.123
Fonctionne également sur le navigateur : http://checkip.amazonaws.com
Je l'aime parce que :
- il retourne juste l'IP en clair dans le corps de la réponse, rien d'autre.
- Il s'agit d'un fournisseur bien connu qui ne risque pas de disparaître de sitôt.
Tapez exactement ceci, appuyez sur Enter lorsque cela est indiqué :
telnet ipecho.net 80
EnterGET /plain HTTP/1.1
EnterHOST: ipecho.net
EnterBROWSER: web-kit
Enter
Enter
Cela soumet manuellement une requête HTTP, qui renverra votre IP au bas d'un HTTP/1.1 200 OK reply
Exemple de sortie :
$ telnet ipecho.net 80
Trying 146.255.36.1...
Connected to ipecho.net.
Escape character is '^]'.
GET /plain HTTP/1.1
HOST: ipecho.net
BROWSER: web-kit
HTTP/1.1 200 OK
Date: Tue, 02 Jul 2013 07:11:42 GMT
Server: Apache
Expires: Mon, 26 Jul 1997 05:00:00 GMT
Cache-Control: no-cache
Pragma: no-cache
Vary: Accept-Encoding
Transfer-Encoding: chunked
Content-Type: text/html
f
111.222.333.444
0
Pour ça, STUN a été inventé. En tant que client, vous pouvez envoyer une requête à un serveur STUN accessible au public et lui demander de vous renvoyer l'adresse IP qu'il voit. Il s'agit en quelque sorte d'un whatismyip.com de bas niveau, qui n'utilise ni HTTP ni serveurs DNS intelligemment conçus, mais le protocole STUN, extrêmement rapide.
Utilisation de stunclient
Si tiene stunclient
installé ( apt-get install stuntman-client
sur debian/ubuntu) vous pouvez simplement le faire :
$stunclient stun.services.mozilla.com
Binding test: success
Local address: A.B.C.D:42541
Mapped address: W.X.Y.Z:42541
donde A.B.C.D
est l'adresse IP de votre machine sur le réseau local et W.X.Y.Z
est l'adresse IP que les serveurs comme les sites web voient de l'extérieur (et celle que vous recherchez). Utilisation de sed
vous pouvez réduire la sortie ci-dessus à une simple adresse IP :
stunclient stun.services.mozilla.com |
sed -n -e "s/^Mapped address: \(.*\):.*$/\1/p"
Cependant, votre question était de savoir comment le trouver en utilisant la ligne de commande, ce qui pourrait exclure l'utilisation d'un client STUN. Je me demande donc...
Utilisation de bash
Une demande STUN peut être élaborée à la main, envoyée à un serveur STUN externe à l'aide de netcat
et être post-traité en utilisant dd
, hexdump
y sed
comme ça :
$echo -en '\x00\x01\x00\x08\xc0\x0c\xee\x42\x7c\x20\x25\xa3\x3f\x0f\xa1\x7f\xfd\x7f\x00\x00\x00\x03\x00\x04\x00\x00\x00\x00' |
nc -u -w 2 stun.services.mozilla.com 3478 |
dd bs=1 count=4 skip=28 2>/dev/null |
hexdump -e '1/1 "%u."' |
sed 's/\.$/\n/'
L'écho définit une requête STUN binaire (0x0001 indique Binding Request) de longueur 8 (0x0008) avec le cookie 0xc00cee et quelques trucs collés de wireshark. Seuls les quatre octets représentant l'IP externe sont extraits de la réponse, nettoyés et imprimés.
Fonctionne, mais n'est pas recommandé pour une utilisation en production :-)
P.S. De nombreux serveurs STUN sont disponibles car il s'agit d'une technologie de base pour SIP et WebRTC. L'utilisation de celui de Mozilla devrait être sûre du point de vue de la confidentialité, mais vous pouvez aussi en utiliser un autre : Liste des serveurs STUN
2 votes
"avoir une IP dynamique", "SSH utilisant un autre système à travers l'internet", "la commande qui affichera l'IP publique actuelle". Vous voyez le problème de la poule et de l'oeuf ici ? Comment seriez-vous en mesure d'exécuter des commandes sur un serveur distant sans connaître son adresse ? Vous pourriez être plus intéressé par des services comme no-ip.com / DynDNS.org.
0 votes
On ne peut pas SSH sans connaître l'IP publique mon ami... dynDNS coûte cher et le no-ip fonctionne mais la situation ne le permet pas... de toute façon la question a déjà été répondue... merci pour votre suggestion
1 votes
PS duckduckgo.com/?q=ip (pas de ligne de commande, mais pas de grand frère G non plus)
1 votes
Peut-être que cela devrait être une question distincte, mais j'aimerais voir une alerte lorsque mon adresse IP publique change. Pour l'instant, j'utilise simplement les réponses suivantes dans une crontab avec
notify-send
.0 votes
De bonnes solutions ci-dessous. Pour Centos, utilisez :
ifconfig eth1 | sed -nre '/^[^ ]+/{N;s/^([^ ]+).*inet *([^ ]+).*/\2/p}'
où eth1 est le périphérique réseau concerné, vous pouvez omettre la chaîne 'et1' pour afficher les adresses IP de tous les adaptateurs. Au lieu de\2
vous pouvez écrire\1 \2
pour afficher les noms de chaque adaptateur également.0 votes
Aucune des réponses ne montre l'approche correcte. Comme je n'ai pas assez de réputation pour poster une réponse, je vais poster un commentaire sur la façon de l'obtenir sans dépendre de services externes. Il suffit d'exécuter sur le terminal
$ hostname --ip-address