Quale comando basato su * nix posso usare per trovare il mio IP esterno?


Risposte:



8
dig + short myip.opendns.com

Funziona solo se si utilizza OpenDNS come server DNS.

In caso contrario, uno di questi dovrebbe funzionare:

dig + short myip.opendns.com @ 208.67.222.222
dig + short myip.opendns.com @ 208.67.220.220
dig + short myip.opendns.com @ 208.67.222.222 @ 208.67.220.220

1
Non funziona su MacOS 10.5, Ubuntu 8.04 o Ubuntu 9.04.
Ha disegnato Stephens il

Interessante che lo faccia sul mio Ubuntu 8.10.
Brad Gilbert,

Probabilmente è perché uso opendns.
Brad Gilbert,

+1 per l'utilizzo del DNS per scoprire un IP (anziché http). È inoltre possibile specificare il server DNS utilizzando il suo nome, ad esempio @resolver1.opendns.com(per leggibilità)
jfs


2
lynx -dump http://www.pcmesh.com/ip-check.cgi | awk '/REMOTE_ADDR/{print $2}'

2

Bisogna usare i server OpenDNS per usare questo ... Puoi interrogare un certo server DNS con uno scavo simile:

dig + short myip.opendns.com @ 208.67.222.222

2

Puoi usare l'arricciatura per ottenere la pagina da qualcosa come whatismyip e poi estrarre i pezzi. Ho usato whatismyipaddress.com in questo esempio ... ovviamente i campi differiranno con servizi diversi.

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

1

corro solo un traceroute da qualche parte su Internet e cerco il hop out della nostra rete locale.

forse c'è un modo migliore?




0

è possibile utilizzare il comando ifconfig per elencare tutte le interfacce e gli indirizzi IP associati.

quindi, se sai che la tua interfaccia Internet è ppp0, puoi eseguire

$ ifconfig ppp0
ppp0 Link encap: protocollo punto-punto
          inet addr: XXXX.X PtP: AAAA Maschera: 255.255.255.255
          UP POINTOPOINT RUNNING NOARP MULTICAST MTU: 1444 Metrico: 1
          Pacchetti RX: 198986 errori: 0 rilasciati: 0 sovraccarichi: 0 frame: 0
          Pacchetti TX: 122929 errori: 0 rilasciati: 0 sovraccarichi: 0 portante: 0
          collisioni: 0 txqueuelen: 3
          Byte RX: 134195571 (127,9 MiB) Byte TX: 17101701 (16,3 MiB)

XXXX sarà il tuo indirizzo IP. AAAA è l'indirizzo IP dell'hop successivo.

è quindi possibile postelaborare l'output di ifconfig con grep / awk / sed / cut / perl / qualunque cosa per estrarre solo l'IP.

un'altra alternativa, se hai gli strumenti iproute installati, è usare il comando ip. per esempio

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

è probabilmente più facile da leggere e sicuramente più facile da analizzare:

$ ip addr list ppp0 | awk '/ inet / {print $ 2}'
XXXX

- C'è la possibilità che qualsiasi IP in ifconfig non corrisponda all'IP reale di Internet (nel caso di biNAT) - In FreeBSD non esiste un pacchetto iproute2, quindi il comando ip non è applicabile
SaveTheRbtz,

vero, non uso NAT quindi non mi è mai venuto in mente .... mi è sembrato "sbagliato" usare un servizio esterno per informazioni su cui puoi interrogare il tuo sistema. anche con NAT, preferirei ancora capire come interrogare il router eseguendo il NAT (magari tramite una query SNMP) piuttosto che fare affidamento su un servizio esterno che potrebbe essere o non essere disponibile quando ne ho bisogno.
Cas

@Craig, il tuo approccio va bene. Tuttavia, non è un IP esterno a meno che non sia possibile raggiungerlo su quel valore dall'esterno. Devi fare affidamento su un punto esterno per questa risposta. L'idea è di trovare un punto esterno affidabile (almeno superiore al punto perimetrale) per la query. OpenDNS è un buon punto.
nik,

@nik: l'unico caso probabile in cui l'IP del tuo router di frontiera non è l'IP esterno è quando sei dietro più livelli di NAT ... nel qual caso, la soluzione corretta è passare a un servizio non cerebrale al più presto . Inoltre, il problema con il recupero di un URL per scoprire il tuo IP è che ti dice solo l'IP dell'host che lo recupera, che potrebbe essere un proxy che rimuove le intestazioni.
Cas
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.