44 votes

Recherche de l'adresse IP publique dans un Shell Shell.

Je peux trouver mon adresse IP en utilisant la commande ifconfig ou hostname -i.

Mais comment trouver mon IP public ?

(J'ai une IP publique statique mais je veux la trouver en utilisant une commande unix)

52voto

tsanand129 Points 644

curl ifconfig.me

curl ifconfig.me/ip (pour l'ip seulement)

curl ifconfig.me/all (pour plus d'informations, cela prend du temps)

Pour plus de commandes, visitez le site : http://ifconfig.me/#cli_wrap

28voto

jammus Points 1796

Vous pouvez demander myip.opendns.com . d'OpenDNS. dig @208.67.222.220 myip.opendns.com

19voto

cnst Points 12508

dig @ns1.google.com -t txt o-o.myaddr.l.google.com +short

dig -4 @ns1-1.akamaitech.net -t a whoami.akamai.net +short

dig -4 @resolver1.opendns.com -t a myip.opendns.com +short


Notez que ce qui précède ne fonctionne que pour IPv4 actuellement (aucun de ces résolveurs ne semble même avoir IPv6 actuellement, mais si vous omettez le paramètre -4 et l'explicite -t a vous risquez alors de le voir tomber en panne à l'avenir (à l'exception de l'outil Google txt qui pourrait fonctionner un jour pour IPv6, si Google l'active correctement)).

Notez que myip.opendns.com ne peut être résolu que par resolver1.opendns.com et non avec auth1.opendns.com - Ils semblent donc faire du détournement de DNS et de la manipulation de leur propre nom de domaine ! Ainsi, vous ne pouvez pas l'utiliser pour trouver l'IP d'un résolveur aléatoire, puisque resolver1.opendns.com ne fait pas autorité pour myip.opendns.com .

Notez que o-o.myaddr.l.google.com semble être l'approche la plus souple et la plus évolutive ; elle permet même de vérifier si votre résolveur DNS prend en charge l'extension expérimentale EDNS0 pour le sous-réseau client (que très peu de résolveurs prennent en charge) :

% dig @8.8.8.8 -t txt o-o.myaddr.l.google.com +noall +answer +stats | tail -8
;; global options:  printcmd
o-o.myaddr.l.google.com. 60     IN      TXT     "74.125.189.16"
o-o.myaddr.l.google.com. 60     IN      TXT     "edns0-client-subnet 88.198.54.0/24"
;; Query time: 13 msec
;; SERVER: 8.8.8.8#53(8.8.8.8)
;; WHEN: Sun Dec  8 20:38:46 2013
;; MSG SIZE  rcvd: 114

12voto

Matthew Ife Points 22370

Une réponse très simple, si vous avez accès à Internet, est la suivante :

curl icanhazip.com

Gardez à l'esprit que faire confiance à des sources tierces pour votre IP peut être problématique, surtout si ce que vous faites avec ces données a une signification particulière.

Une méthode plus fiable consiste à choisir un serveur DNS connu et fiable (idéalement exécutant DNSSEC) et à interroger le nom d'hôte de la boîte avec celui-ci, à condition que votre serveur DNS contienne de telles entrées ;

dig @trustworthysource.com +short `hostname`

9voto

Majkel Points 763

J'ai écrit un service web simple et rapide pour cela.

curl ident.me

Vous pouvez demander votre IPv4 :

curl v4.ident.me

Ou IPv6 :

curl v6.ident.me

Il prend également en charge HTTPS, DNS, SSH.

L'API est documentée sur http://api.ident.me/

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