È possibile visualizzare il mio indirizzo IP esterno senza effettuare una richiesta Web in uscita?


21

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.


7
Stai solo cercando di evitare HTTP o stai cercando di evitare di inviare alcun traffico in uscita? Le uniche soluzioni universali prevedono l'invio di un qualche tipo di traffico in uscita, ma non deve essere HTTP.
Spiff

Era più che altro ipotetico, non volevo assolutamente fare traffico in uscita.
Axel Persinger

2
Stai dicendo che la tua rete / router è dietro una configurazione NAT di livello Enterprise (cioè sta ricevendo un indirizzo IP privato dal tuo ISP)? In tal caso, non ho modo di pensare che sia possibile trovare l'indirizzo IP pubblico senza che qualcosa raggiunga la rete pubblica e essenzialmente "guardi indietro" come whatsmyip.com o servizi simili.
acejavelin,

l'hacking che facevo era controllare con il mio router - in realtà avevo uno script davvero sporco da raschiare che dal momento che per qualche ragione la maggior parte dei servizi basati sul web non avrebbe rilevato correttamente il mio IP. Il mio ISP è davvero divertente in questo modo.
Journeyman Geek

2
Puoi provare a telefonare al tuo ISP con i dettagli del cliente. Non richiede alcuna connessione a Internet e nessun computer.
Thomas,

Risposte:


24

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).


L'iperbole di @NicHartley può certamente far parte del sarcasmo, ma il sarcasmo riguarda più un tono o l'intenzione di deridere, entrambi i quali sono trasmessi in modo diverso nella forma del testo che nella persona. Detto questo, mentre qualsiasi protocollo deve utilizzare l'IP per determinare un indirizzo IP è un requisito tautologico ovvio e sì (poiché non è possibile determinare ciò che non si sta utilizzando), ma un protocollo basato sull'IP è ancora un protocollo diverso e ci sono teoricamente multiplo si potrebbe usare per raggiungere questo scopo. Il punto di Lightness era contrastare l'affermazione sul requisito di una richiesta web.
eques

2
"In qualsiasi altro modo sarà necessario effettuare una richiesta Web esterna" Il Web (ovvero HTTP) non è necessario, ma forse è più facile da capire
equivale al

1
Come menzionato nell'altra risposta, uPnP, NAT-PMP e PCP sono diversi modi per ottenere le informazioni dal router oltre ad accedere alla sua pagina di configurazione. Il modo in cui lo hai definito, sembra che "oltre ad accedere alla pagina di configurazione, in qualsiasi altro modo sarà necessario effettuare una richiesta Web". Corretto è "oltre a ottenere le informazioni dal router, qualsiasi altro modo richiederà e tenterà la connessione in uscita" (non deve essere una richiesta Web).
Dirkt

@dirkt: Per UPnP non sono convinto; NAT-PMP Penso che funzioni solo con IPv4; PCP su rete IPv6 restituirà il prefisso IPv6 e può fare molto di più, ma questo di solito non è implementato su router commerciali.
Harry

1
@harrymc: l'endpoint del servizio UPnP per il mio Fritzbox è WANIPConn1/GetExternalIPAddresse ha restituito correttamente l'indirizzo corretto.
Dirkt

12

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 sshdtua sessione SSH.


8
Anche UPnP ecc. Potrebbe dare un risultato falso se il sistema fosse in doppio (o più) NAT.
user71659

@ user71659 Mi sono chiesto se esiste un indirizzo anycast che verrà automaticamente instradato al NAT più esterno in modo che possa essere utilizzato per quel tipo di richiesta.
Kasperd,

1
@kasperd Ogni NAT pensa che sia il NAT più esterno. Esistono certamente IP che vengono instradati automaticamente al di fuori di tutti i NAT. Questi sono chiamati IP pubblici.
user253751

1
@ user20574 No, i NAT non la pensano così, la maggior parte non se ne cura. Se un tale indirizzo anycast dovesse essere definito, lo standard dovrebbe anche definire quando un NAT assegna quell'IP a se stesso e quando no. La risposta è che se l'IP esterno è in RFC 1918 o RFC 6598, il NAT non assegnerà l'indirizzo anycast a se stesso.
Kasperd,

8

È possibile utilizzare una richiesta DNS, che credo non rientrerebbe nella categoria di "richiesta web":

nslookup myip.opendns.com resolver1.opendns.com

1
Puoi anche usare 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/…
kasperd

Il tuo nsslookupcomando fallisce per me. Ricevo Server: resolver1.opendns.com Address: 2620:119:35::35#53 ** server can't find myip.opendns.com: NXDOMAIN
kasperd il

1
@kasperd: funziona solo per IPv4, scusa. Ho evitato digpoiché non è su Windows. Un buon punto myaddrper quanto riguarda Google, però, non ne ero a conoscenza! Immagino che l' nslookupequivalente di Windows sarebbenslookup -type=txt o-o.myaddr.l.google.com ns3.google.com
Mehrdad,

Ho eseguito quel comando su una macchina che ha sia IPv4 che IPv6, quindi se davvero supportasse IPv4 avrebbe dovuto funzionare. Apparentemente il problema è che non puoi nslookupindicare 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 nslookuputilizzerà 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.
Kasperd,

Ho provato nslookup -type=txt o-o.myaddr.l.google.com ns3.google.come 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.
Kasperd,

7

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 #2possibile 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.cominstrada sempre via Uplink B. Così, gli indirizzi IP esterni come visto da quei padroni di casa saranno diversi, a condizione che Uplink Ae Uplink Bsono 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.


4

È 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 -6e -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.


2

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.

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.