Se la tua connessione è NAT, è possibile visualizzare il tuo indirizzo IP esterno senza effettuare una richiesta Web in uscita?
Qualsiasi sistema operativo (Windows, Linux, ecc.) Va bene.
Se la tua connessione è NAT, è possibile visualizzare il tuo indirizzo IP esterno senza effettuare una richiesta Web in uscita?
Qualsiasi sistema operativo (Windows, Linux, ecc.) Va bene.
Risposte:
Se il computer è protetto da NAT, è possibile visualizzare l'indirizzo IP esterno del router, ma è necessario un accesso amministrativo al router.
Il router conosce il tuo indirizzo IP esterno, quindi accedendo alla sua pagina di configurazione puoi trovare quell'indirizzo IP. In questo modo non è necessario alcuno strumento specializzato tranne un browser Web.
Altri protocolli che richiedono uno strumento per ottenere le informazioni:
Come testato dall'utente @dirkt, tutti i metodi funzionano solo con IPv4 (tranne possibilmente per PCP).
WANIPConn1/GetExternalIPAddress
e ha restituito correttamente l'indirizzo corretto.
Esistono alcuni modi che funzionano con alcuni NAT ma nulla è garantito per funzionare ovunque.
Credo che uPnP, NAT-PMP e PCP (Universal Plug And Play, NAT Port Mapping Protocol e Port Control Protocol) abbiano tutti i modi per chiedere a un gateway NAT conforme quale sia l'indirizzo pubblico, ma non tutti i NAT supportano questi protocolli. Il supporto è più comune nei router gateway domestici che nelle soluzioni NAT aziendali o di livello carrier.
Quando ti trovi dietro un NAT, l'unico modo sicuro per vedere in quale indirizzo IP pubblico sta traducendo il tuo traffico è quello di inviare un po 'di traffico in uscita a qualche host pubblico che riporti indietro, in un modo in cui il NAT non tradurrà, cosa indirizzo da cui sembra provenga il tuo traffico. L'uso di un servizio basato sul Web è un modo, ma potresti anche farlo, ad esempio, SSHing in un'istanza del server cloud e vedere da dove viene la sshd
tua sessione SSH.
È possibile utilizzare una richiesta DNS, che credo non rientrerebbe nella categoria di "richiesta web":
nslookup myip.opendns.com resolver1.opendns.com
dig +short @8.8.8.8 o-o.myaddr.l.google.com txt | grep edns
. Ho trovato il comando qui: groups.google.com/d/msg/public-dns-discuss/uyzmMcHQBE0/…
nsslookup
comando fallisce per me. Ricevo Server: resolver1.opendns.com
Address: 2620:119:35::35#53
** server can't find myip.opendns.com: NXDOMAIN
dig
poiché non è su Windows. Un buon punto myaddr
per quanto riguarda Google, però, non ne ero a conoscenza! Immagino che l' nslookup
equivalente di Windows sarebbenslookup -type=txt o-o.myaddr.l.google.com ns3.google.com
nslookup
indicare quale versione IP usare per il trasporto, ma il modo in cui OpenDNS fa questo significa che devi farlo. Senza di ciò dovresti prevedere quale versione IP nslookup
utilizzerà per il trasporto e richiedere di conseguenza A o AAAA. Se sei bloccato con nslookup
è possibile utilizzare un altro fornitore come Google. Tuttavia nella risposta si ottiene solo una versione del protocollo e non è possibile scegliere quale.
nslookup -type=txt o-o.myaddr.l.google.com ns3.google.com
e funziona davvero. Ma se ho sia IPv4 che IPv6, ciò non mi consente di scegliere quale di essi vedrò. Molto probabilmente mi mostrerà l'indirizzo IPv6 e molto probabilmente lo sto usando perché voglio conoscere l'indirizzo IPv4 di un NAT. Per ovviare a questo sarebbe necessario utilizzare un servizio che ha un nome solo IPv4 e un nome solo IPv6, che affronterebbe anche il problema di NAT64.
Vorrei aggiungere un punto a risposte già esistenti.
Dipende anche dalla complessità della rete. È possibile che il tuo computer si trovi all'interno di una rete che ha più indirizzi IP esterni e che il router da qualche parte lungo la linea invia il traffico a Internet in base ad alcuni criteri: ad esempio l'indirizzo IP di destinazione o l'ora del giorno (potrebbe essere un canale di uplink è più economico di notte o per altri motivi).
Quindi, per essere completo, una nozione di "indirizzo IP esterno" potrebbe richiedere la definizione di un punto di destinazione a cui il tuo indirizzo è esterno.
Nell'esempio seguente è Router #2
possibile eseguire NAT e inviare il traffico a entrambi i collegamenti verso l'alto e l'host ricevente potrebbe vedere un diverso indirizzo IP esterno per Host
.
Oppure può darsi che una determinata destinazione (ad esempio host1.example.com
) instrada sempre attraverso il Uplink A
, e l'host host2.example.com
instrada sempre via Uplink B
. Così, gli indirizzi IP esterni come visto da quei padroni di casa saranno diversi, a condizione che Uplink A
e Uplink B
sono diversi ISP.
Uplink A Uplink B
------------- -------------
| |
| |
| 192.168.1.1 192.168.50.50 |
| ----------- |
|---------------|Router #2|---------------|
-----------
| 192.168.100.1
|
| 192.168.100.2
-----------
|Router #1|
-----------
| 192.168.200.1
|
| 192.168.200.2
-----------
| Host |
-----------
Pertanto, l'invio del traffico consentirà di ottenere risultati più affidabili.
È possibile utilizzare DNS anziché HTTP. Ad esempio puoi usare:
dig +short TXT o-o.myaddr.l.google.com
Questo mostrerà l'indirizzo unicast del server DNS che stai usando, e se supporta EDNS mostrerà anche il tuo indirizzo IP, sebbene possibilmente troncato.
Per ottenere il tuo indirizzo IP completo puoi bypassare il tuo server DNS locale e inviare la richiesta sopra direttamente a ns {1,2,3,4} .google.com
dig +short TXT o-o.myaddr.l.google.com @ns3.google.com
Se vuoi vedere il tuo indirizzo IP in una specifica versione del protocollo puoi usare -6
e -4
:
dig -6 +short TXT o-o.myaddr.l.google.com @ns3.google.com
dig -4 +short TXT o-o.myaddr.l.google.com @ns3.google.com
Puoi anche usare OpenDNS se preferisci. OpenDNS non utilizza i record TXT per questo, ma piuttosto i record A e AAAA, quindi devi specificare quale versione del protocollo stai cercando:
dig -6 +short AAAA myip.opendns.com @resolver2.opendns.com
dig -4 +short A myip.opendns.com @resolver2.opendns.com
Nota che se il tuo traffico passa attraverso la traduzione del protocollo potresti ottenere risultati diversi o per niente. Test da una macchina dietro NAT64 Sono stato in grado di vedere il mio indirizzo IPv6 con i comandi sopra ma non l'indirizzo IPv4 del NAT64.
Questa risposta si basa su queste fonti 1 2 3 e un po 'di ricerca per conto mio.
Web in genere si riferisce a HTTP, se questo è il significato della tua domanda, ad esempio, potresti utilizzare STUN ( articolo di Wikipedia ) che sta per "Session Traversal Utilities for NAT".
Ora, come è stato evidenziato in un commento, potresti avere più IP esterni. Inoltre, poiché le connessioni wireless stanno diventando più comuni (cosa 4G), non è impossibile che l'indirizzo IP segnalato dal router non sia pubblico. Ho anche incontrato quello scenario sulle connessioni in fibra ottica in alcuni paesi, in cui l'ISP avrebbe fornito al router locale un IP privato, che sarebbe stato tradotto 1: 1 in un IP pubblico in seguito quando usciva dalla rete.
Quindi se la tua domanda è "posso trovare il mio IP pubblico senza inviare pacchetti dalla mia rete", POTREBBE INTERESSARTI nel tuo contesto, ma non esiste una soluzione al 100% di prova.