764 votes

Commande pour déterminer mon IP public ?

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 ?

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)

52voto

Barry Kelly Points 30330

Vous pouvez utiliser une requête DNS au lieu d'une requête HTTP pour connaître votre adresse IP publique :

$ dig +short myip.opendns.com @resolver1.opendns.com

Il utilise resolver1.opendns.com serveur DNS pour résoudre le magique myip.opendns.com nom d'hôte à votre adresse IP.

35voto

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.

19voto

RainyRat Points 3680

Celui que j'utilise est :

wget -O - -q icanhazip.com

Oui, vous pouvez avoir l'ip :-)

13voto

Flower_Girl3770 Points 11

Tapez exactement ceci, appuyez sur Enter lorsque cela est indiqué :

telnet ipecho.net 80Enter
GET /plain HTTP/1.1Enter
HOST: ipecho.net Enter
BROWSER: web-kitEnter
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

13voto

Todd Baker Points 1

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

SistemesEz.com

SystemesEZ est une communauté de sysadmins où vous pouvez résoudre vos problèmes et vos doutes. Vous pouvez consulter les questions des autres sysadmins, poser vos propres questions ou résoudre celles des autres.

Powered by:

X