Domanda Comando per determinare il mio IP pubblico?


Se controllo con Google, Posso vedere il mio IP pubblico. C'è qualcosa nella riga di comando di Ubuntu che mi darà la stessa risposta?


526
2018-01-16 11:50


origine


"con IP dinamico", "SSH usando un altro sistema su Internet", "il comando che visualizzerà l'IP PUBLICO attuale". Vedi il problema uovo / pollo qui? Come saresti in grado di eseguire comandi su un server remoto senza conoscere il suo indirizzo? Potresti essere più interessato a servizi come no-ip.com / DynDNS.org. - gertvdijk
non si può SSH senza conoscere l'IP pubblico amico mio ... dynDNS costa molto e funziona male no-ip ma la situazione non lo consente ... comunque la domanda è già stata risposta .. grazie per il tuo suggerimento - Z9iT
PS duckduckgo.com/?q=ip (nessuna riga di comando, ma nemmeno il fratello maggiore G) - Campa
Forse questa dovrebbe essere una domanda separata, ma mi piacerebbe vedere un avviso quando il mio indirizzo IP pubblico cambia. Per ora, sto usando le seguenti risposte in un crontab con notify-send. - PJ Brunet


risposte:


Se non sei dietro un router, puoi scoprirlo usando ifconfig.

Se si è dietro un router, il computer non sarà a conoscenza dell'indirizzo IP pubblico in quanto il router esegue una traduzione degli indirizzi di rete. Potresti chiedere ad alcuni siti web che cosa sta usando il tuo indirizzo IP pubblico curl o wget ed estrai le informazioni che ti servono da questo:

curl -s checkip.dyndns.org | sed -e 's/.*Current IP Address: //' -e 's/<.*$//'  

o più corto

curl ipinfo.io/ip

748
2018-01-16 11:56



ty - subito dopo aver postato, mi sono reso conto che non ho cercato una risposta prima di google: sembra che funzioni curl -s checkip.dyndns.org|sed -e 's/.*Current IP Address: //' -e 's/<.*$//'  Altre possibilità sono elencate qui: go2linux.org/what-is-my-public-ip-address-with-linux - kfmfe04
certo - puoi aggiungerlo alla tua risposta - kfmfe04
Per chiarire: quello era un hack, e molto brutto, così ho fatto un edit per renderlo più semplice e qualcosa che la gente possa ricordare. - jrg♦
Esattamente come affermava Giovanni P. L'OP dovrebbe cambiare la risposta accettata. - loostro
arricciatura ipinfo.io/ip - chao


Per trovare l'ip esterno, è possibile utilizzare servizi esterni basati sul Web o utilizzare metodi basati sul sistema. Più facile è usare il servizio esterno, anche il ifconfig le soluzioni basate funzioneranno nel tuo sistema solo se non sei dietro a NAT. i due metodi sono stati discussi di seguito in dettaglio.

Trovare l'IP esterno usando i servizi esterni

Il modo più semplice è utilizzare un servizio esterno tramite un browser a riga di comando o uno strumento di download. Da wget è disponibile di default in Ubuntu, possiamo usarlo.
Per trovare il tuo IP, usa-

$ wget -qO- http://ipecho.net/plain ; echo

Cortesia:

Puoi anche usare lynx(browser) o curl al posto di wget con piccole variazioni al comando precedente, per trovare il tuo ip esterno.

utilizzando curl per trovare l'IP:

$ curl ipecho.net/plain

Per un output formattato migliore, utilizzare:

$ curl ipecho.net/plain ; echo

Un metodo più veloce (probabilmente il più veloce) utilizzando dig con OpenDNS come risolutore:

Le altre risposte qui passano tutte su HTTP a un server remoto. Alcuni   richiedono l'analisi dell'output o dipendono dall'intestazione User-Agent   per fare in modo che il server risponda in testo normale. Cambiano anche abbastanza   frequentemente (andare giù, cambiare nome, pubblicare annunci, potrebbe cambiare   formato di output ecc.).

  1. Il protocollo di risposta DNS è standardizzato (il formato rimarrà compatibile).
  2. Storicamente i servizi DNS (OpenDNS, Google Public DNS, ..) tendono a sopravvivere molto più a lungo e sono più stabili, scalabili e generalmente guardati   dopo tutto ciò che è nuovo, il servizio HTTP whatismyip.com è caldo oggi.
  3. (per quei geek che si occupano di micro-ottimizzazione), questo metodo dovrebbe essere intrinsecamente più veloce (sia solo di pochi micro secondi).

Usando scavando con OpenDNS come resolver:

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

111.222.333.444

Copiato da:  https://unix.stackexchange.com/a/81699/14497

Trovare l'IP esterno senza fare affidamento su servizi esterni

  • Se si conosce il nome dell'interfaccia di rete

Digita quanto segue nel tuo terminale:

$ LANG=c ifconfig <interface_name> | grep "inet addr" | awk -F: '{print $2}' | awk '{print $1}'

In quanto sopra, sostituire <interface_name> con il nome della tua interfaccia reale, ad esempio: eth0, eth1, pp0, eccetera...

Esempio di utilizzo:

$ LANG=c ifconfig ppp0 | grep "inet addr" | awk -F: '{print $2}' | awk '{print $1}'
111.222.333.444
  • Se non si conosce il nome dell'interfaccia di rete

Digita quanto segue nel tuo terminale (questo ottiene il nome e l'indirizzo IP di ogni interfaccia di rete nel tuo sistema):

$ LANG=c ifconfig | grep -B1 "inet addr" |awk '{ if ( $1 == "inet" ) { print $2 } else if ( $2 == "Link" ) { printf "%s:" ,$1 } }' |awk -F: '{ print $1 ": " $3 }'

Esempio di utilizzo:

$ LANG=c ifconfig | grep -B1 "inet addr" |awk '{ if ( $1 == "inet" ) { print $2 } else if ( $2 == "Link" ) { printf "%s:" ,$1 } }' |awk -F: '{ print $1 ": " $3 }'
lo: 127.0.0.1
ppp0: 111.222.333.444

NB: Le uscite sono indicative e non reali.

Cortesia:  http://www.if-not-true-then-false.com/2010/linux-get-ip-address/

AGGIORNARE 

  1. LANG=c è stato aggiunto a ifconfig usi basati, in modo che fornisca sempre l'output in inglese, indipendentemente dalle impostazioni locali.

364
2018-06-01 12:10



@ Z9iT, certo .. Dovrebbe funzionare in qualsiasi distribuzione Linux a condizione che tu abbia installato wget. Come detto, se hai già arricciatura o lince, per favore usa quello. È necessario il permesso di root per l'installazione in modo da poterlo utilizzare sudo apt-get install wget - saji89
I comandi con ifconfig funzionano solo se non sei dietro un NAT. - lukassteiner
basta usare -w opzione di arricciatura invece di echo :) curl -w '\n' ident.me - drAlberT
Questa proposta usando dig è molto carina unix.stackexchange.com/questions/22615/... - binaryanomaly
@saji ifconfig se obsoleto, si prega di utilizzare iproute2 ; ^). Il comando sarebbe ip -o -4 a s eth0 | awk '{sub(/\/.*/, "", $4);print $4}'. - bufh


Il mio preferito è sempre stato:

curl ifconfig.me

semplice, facile da digitare.

Dovrai prima installare curl;)

Se ifconfig.me non funziona, prova icanhazip.com o ipecho.net

curl icanhazip.com

o

curl ipecho.net

103
2018-06-01 12:41



@ Z9iT, l'ho appena controllato ora. Sì, emetterebbe l'ip esterno nel tuo terminale. - saji89
Il tempo di risposta da ifconfig.me sembra un po 'più lento di ipecho.net. - Drew Noakes
Se non lo hai curl ma ho wget: wget -U curl -qO- ifconfig.me - Stéphane Chazelas
ifconfig.me non sembra rispondere :( - Asfand Qazi
@AsfandYarQazi - lavorando qui. Puoi provare uno dei supplenti, icanhazip.com - Panther


icanhazip.com è il mio preferito.

curl icanhazip.com

Puoi richiedere IPv4 esplicitamente:

curl ipv4.icanhazip.com

Se non lo hai curl Puoi usare wget anziché:

wget -qO- icanhazip.com

55
2018-06-01 17:23



provare ipv4.icanhazip.com - yprez
IPv4: curl ipv4.icanhazip.com     IPv6: curl ipv6.icanhazip.com - Peter
Busybox non ha arricciatura, usalo invece: wget -qO- http://icanhazip.com - Hengjie
ecco un comando bash-only: exec 3<>/dev/tcp/icanhazip.com/80 && echo -e 'GET / HTTP/1.0\n' >&3 && cat <&3 - jfs
ipv6.icanhazip.com sembra non funzionare più. - Hibou57


Ho trovato tutto fastidioso e lento, quindi ho scritto il mio. È semplice e veloce.

La sua API è attiva http://api.ident.me/

Esempi:

curl ident.me
curl v4.ident.me
curl v6.ident.me

44
2018-01-03 15:49



Woah, quello era veramente veloce! - waldyrious
io trovo la soluzione icanhazip.com più veloce e include una nuova riga nell'output. - Tyler Collier
Sì, è stato davvero più veloce ultimamente. Ho appena ottimizzato la mia soluzione. - Pierre Carrier
Complimenti! 2 anni e lo stai ancora mantenendo. Molto bene. "IDENTify ME", è quello che mi viene in mente, quando ho bisogno di un controllo ip :) - Mohnish
@PierreCarrier v6.ident.me non funziona - SebMa


Potresti utilizzare una richiesta DNS invece della richiesta HTTP per scoprire il tuo IP pubblico:

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

Utilizza resolver1.opendns.com server DNS per risolvere il magico myip.opendns.com hostname a il tuo indirizzo IP.


37
2018-02-27 15:07



Questo è veramente veloce. Ho fatto una esecuzione di riscaldamento, quindi 10 esecuzioni ciascuna di questo e curl icanhazip.com. Media per il curl versione: 174ms. Media per la versione solo DNS: 9ms. ~ 19 volte più veloce. Guarda anche: unix.stackexchange.com/a/81699/8383 - Adam Monsen
@AdamMonsen Grazie per il link. Il punto di utilizzo del DNS (come la risposta che hai linkato dice) è che la risposta è standard (e improbabile che cambi) e il servizio (OpenDNS) potrebbe restare più a lungo della maggior parte delle sue alternative http. Il tempo necessario per rendere la richiesta potrebbe essere ombreggiato dal tempo di avvio del comando. - jfs
Sì. Non sarei sorpreso se curl stesso è più lento di dig. Anche se fossero stati riscritti per essere il più simile possibile, curl sarebbe ancora più lento; usa HTTP (Compreso DNS) e dig usa solo DNS. - Adam Monsen


Quello che sto usando è:

wget -O - -q icanhazip.com

Sì, puoi avere un IP :-)


18
2018-01-16 14:20



preferisco curl icanhazip.com a volte wget è l'unico disponibile, ma a volte no wget è disponibile pure e curl è la tua unica opzione (come OS / X). In entrambi i casi curl icanhazip.com è quasi facile come curl ifconfig.me ma molto più divertente ;-) - TryTryAgain


Amazon AWS

curl http://checkip.amazonaws.com

Uscita di esempio:

123.123.123.123

Mi piace perché:

  • restituisce solo l'IP in chiaro, nient'altro
  • è da un noto fornitore che è improbabile che possa andare offline presto

16
2017-12-21 22:06





Digitare esattamente questo, premere accedere dove indicato:

telnet ipecho.net 80accedere
GET /plain HTTP/1.1accedere
HOST: ipecho.net  accedere
BROWSER: web-kitaccedere
accedere

Invia manualmente una richiesta HTTP, che restituirà il tuo IP nella parte inferiore di a HTTP/1.1 200 OK reply

Esempio di output:

$ 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

12
2017-07-02 06:38



Bello, questo ha funzionato bene, non dover installare curl è stato un vantaggio per me: un supporto: printf "GET / plain HTTP / 1.1 \ nHOST: ipecho.net \ nBROWSER: web-kit \ n \ n" | nc ipecho.net 80 - Ozone


Un altro veloce (potrebbe essere il più veloce, relativamente)

curl ipecho.net/plain

9
2017-12-31 20:49