Per trovare l'ip esterno, è possibile utilizzare servizi basati sul Web esterni o utilizzare metodi basati sul sistema. Il più semplice è usare il servizio esterno, anche le ifconfig
soluzioni basate funzioneranno nel tuo sistema solo se non sei dietro a NAT
. i due metodi sono stati discussi di seguito in dettaglio.
Ricerca di un IP esterno tramite servizi esterni
Il modo più semplice è utilizzare un servizio esterno tramite un browser della riga di comando o uno strumento di download. Dato che wget
è disponibile di default in Ubuntu, possiamo usarlo.
Per trovare il tuo IP, usa-
$ wget -qO- https://ipecho.net/plain ; echo
Cortesia :
Puoi anche usare lynx
(browser) o curl
al posto di wget
variazioni minori al comando sopra, per trovare il tuo IP esterno.
Utilizzando curl
per trovare l'ip:
$ curl https://ipecho.net/plain
Per un output formattato meglio usare:
$ curl https://ipecho.net/plain ; echo
A (probabilmente più veloce) il metodo più veloce utilizzando dig
con OpenDNS
come resolver:
Le altre risposte qui vanno tutte su HTTP a un server remoto. Alcuni richiedono l'analisi dell'output o si basano sull'intestazione User-Agent per far rispondere il server in testo semplice. Inoltre cambiano abbastanza frequentemente (vai giù, cambiano nome, pubblicano annunci, potrebbero cambiare il formato di output ecc.).
- Il protocollo di risposta DNS è standardizzato (il formato rimarrà compatibile).
- Storicamente i servizi DNS (OpenDNS, Google Public DNS, ..) tendono a sopravvivere molto più a lungo e sono più stabili, scalabili e generalmente curati rispetto a qualsiasi nuovo servizio hip whatismyip.com alla moda oggi sia caldo.
- (per quei geek che si preoccupano della micro-ottimizzazione), questo metodo dovrebbe essere intrinsecamente più veloce (sia solo per pochi micro secondi).
Utilizzando scavare 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 un IP esterno senza fare affidamento su servizi esterni
- Se conosci il nome della tua 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 propria interfaccia attuale, ad esempio: eth0
, eth1
, pp0
, ecc ...
Esempio di utilizzo:
$ LANG=c ifconfig ppp0 | grep "inet addr" | awk -F: '{print $2}' | awk '{print $1}'
111.222.333.444
- Se non conosci il nome della tua 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: I risultati sono indicativi e non reali.
Per gentile concessione: https://www.if-not-true-then-false.com/2010/linux-get-ip-address/
AGGIORNARE
LANG=c
è stato aggiunto agli ifconfig
usi di base, in modo da fornire sempre l'output in inglese, indipendentemente dalle impostazioni locali.