Quelle commande basée sur * nix puis-je utiliser pour trouver mon adresse IP externe?

Réponses:

29
curl http://myip.dnsomatic.com
Can Berk Güder
la source
C'est beaucoup moins de travail que mon exemple :)
Alex
Magnifique simplicité.
Drew Stephens
8
creuser + court myip.opendns.com

Cela ne fonctionne que si vous utilisez OpenDNS comme serveur DNS.

Si ce n'est pas le cas, l'un d'eux devrait fonctionner:

dig + short myip.opendns.com @ 208.67.222.222
dig + short myip.opendns.com @ 208.67.220.220
creuser + court myip.opendns.com @ 208.67.222.222 @ 208.67.220.220
Brad Gilbert
la source
1
Ne fonctionne pas sur mon MacOS 10.5, Ubuntu 8.04 ou Ubuntu 9.04.
Drew Stephens
Intéressant que ce soit le cas sur mon Ubuntu 8.10.
Brad Gilbert
C'est probablement parce que j'utilise des opendns.
Brad Gilbert
+1 pour utiliser DNS pour trouver une IP (au lieu de http). Vous pouvez également spécifier le serveur DNS en utilisant son nom, par exemple, @resolver1.opendns.com(pour plus de lisibilité)
jfs
2
lynx -dump http://www.pcmesh.com/ip-check.cgi | awk '/REMOTE_ADDR/{print $2}'
Jason Down
la source
2

Il faut utiliser les serveurs d'OpenDNS pour utiliser ceci ... Vous pouvez interroger un certain serveur DNS avec creuser comme ça:

dig + short myip.opendns.com @ 208.67.222.222
fuero
la source
2

Vous pouvez utiliser curl pour obtenir la page à partir de quelque chose comme whatismyip, puis extraire les éléments. J'ai utilisé whatismyipaddress.com dans cet exemple ... de toute évidence, les champs différeront selon les services.

curl -s http://whatismyipaddress.com/ | grep LOOKUPADDRESS | awk '{ print $4 }'
Alex
la source
1

je viens de lancer un traceroute vers quelque part sur Internet et de rechercher le saut hors de notre réseau local.

peut-être y a-t-il une meilleure façon?

pouletinabiscuit
la source
1

la manière la plus simple est: curl ifconfig.me

Sina Loghavi
la source
0

vous pouvez utiliser la commande ifconfig pour répertorier toutes les interfaces et leurs adresses IP associées.

Donc, si vous savez que votre interface Internet est ppp0, vous pouvez exécuter

$ ifconfig ppp0
ppp0 Link encap: protocole point à point
          inet addr: XXXX.X PtP: YYYY Masque: 255.255.255.255
          UP POINTOPOINT RUNNING NOARP MULTICAST MTU: 1444 Métrique: 1
          Paquets RX: 198986 erreurs: 0 supprimées: 0 dépassements: 0 trame: 0
          Paquets TX: 122929 erreurs: 0 abandonnées: 0 dépassements: 0 porteuse: 0
          collisions: 0 txqueuelen: 3
          Octets RX: 134195571 (127,9 Mio) Octets TX: 17101701 (16,3 Mio)

XXXX sera votre adresse IP. YYYY est l'adresse IP du saut suivant.

vous pouvez ensuite post-traiter la sortie d'ifconfig avec grep / awk / sed / cut / perl / any pour extraire uniquement l'IP.

une autre alternative, si vous avez installé les outils iproute, est d'utiliser la commande ip. par exemple

$ ip addr list ppp0
21842: ppp0: mtu 1444 qdisc htb state UNKNOWN qlen 3
    lien / ppp
    inet XXXX peer YYYY / 32 scope global ppp0

c'est probablement plus facile à lire et certainement plus facile à analyser:

$ ip addr list ppp0 | awk '/ inet / {print $ 2}'
XXXX
cas
la source
- Il est possible que toute IP dans ifconfig ne corresponde pas à la véritable IP Internet (dans le cas de biNAT) - Dans FreeBSD, il n'y a pas de package iproute2, donc la commande ip n'est pas applicable
SaveTheRbtz
c'est vrai, je n'utilise pas NAT donc il ne m'est jamais venu à l'esprit de ... il me semblait juste "mal" d'utiliser un service externe pour des informations sur lesquelles vous pouvez interroger votre propre système. même avec NAT, je préférerais toujours trouver comment interroger le routeur faisant le NAT (peut-être via une requête SNMP) plutôt que de compter sur un service externe qui peut ou non être disponible lorsque j'en ai besoin.
cas
@Craig, Votre approche est bonne. Cependant, ce n'est pas une IP externe à moins que vous ne puissiez l'atteindre sur cette valeur de l'extérieur. Vous ne devez compter sur un point externe pour cette réponse. L'idée est de trouver un point externe fiable (au moins plus que votre point de périmètre) pour la requête. OpenDNS est un bon point.
nik
@nik: le seul cas probable où l'IP de votre routeur frontalier n'est pas l'IP externe est lorsque vous êtes derrière plusieurs couches de NAT ... dans ce cas, la bonne solution est de passer à un service non endommagé au cerveau dès que possible . De plus, le problème de la récupération d'une URL pour connaître votre IP est qu'elle ne vous indique que l'IP de l'hôte qui la récupère réellement - qui peut être un proxy qui supprime les en-têtes Via.
cas