Impossibile accedere all'IP pubblico dall'interno della rete


2

Ho una rete domestica con un router che funge da gateway per l'accesso a Internet. All'interno di questa rete ho un server con molti servizi, tutti mappati all'interno del router con DNAT.

Quando accedo all'IP pubblico della mia casa dall'esterno della rete, il router reindirizza correttamente le richieste al server interno; tuttavia quando accedo dall'interno della casa, il router interpreta le connessioni come se fossero per lui, ad esempio, se chiedo al servizio http sulla porta 80 dell'IP pubblico viene visualizzata la pagina di configurazione del router.

Che cosa sta succedendo?


Controlla se il tuo router ha un'impostazione chiamata NAT reflection. Senza la riflessione NAT, il router non è abbastanza intelligente da ricollegare la connessione su se stesso quando si richiede il suo IP pubblico dall'interno. Alcuni router lo hanno attivato per impostazione predefinita, ma altri lo hanno disabilitato e molti non ne hanno affatto la funzione.
tlng05,

Domanda SU correlata: superuser.com/questions/37421/… forse anche dupe.
pesante

Inoltre, per rispondere alla domanda di @ user54791, quale router stai usando?
pesante

@ user54791 questo è tutto quello che volevo sapere, grazie
debuti

Risposte:


4

Stai cercando di risolvere un problema che non esiste. Usa semplicemente il tuo IP interno, questo comporterà che i pacchetti non colpiranno mai il tuo router (forse lo switch sul tuo router ma non sul router stesso). È meglio in ogni modo farlo in questo modo. Ecco alcuni vantaggi:

  • Avrai accesso a tutte le porte che ti piacciono (non solo quelle che hai configurato nel tuo router).
  • Non sprecherai memoria del router con voci NAT per servizi che usi solo internamente.
  • Troverai MOLTO più facile ricordare l'IP interno e non cambierà mai a meno che tu non lo dica.
  • Ogni pacchetto farà meno salti e ogni salto sarà su un interruttore, quindi andrà molto veloce.
  • I pacchetti non colpiranno il blocco stradale creato dal router mentre analizza i pacchetti. Anche se è un giorno lento sulla tua rete, questo sarà molto più veloce per te.
  • I tuoi server vedranno il tuo PC come un dispositivo distinto; se scegli di utilizzare un proxy esterno per risolvere questo problema, verrai sempre visto come originato da quel proxy.
  • Se il tuo servizio lo supporta, può utilizzare un'intera gamma di protocolli che non sono disponibili per i dispositivi esterni. Trasmissioni DHCP, WINS, UDP reali ... per citarne solo alcune.
  • Tutta la sicurezza aggiuntiva associata alla sottorete.

Sono sicuro che ci sono più ragioni perché questo è il modo in cui dovrebbe essere fatto. Inoltre, puoi facilmente modificare il file hosts o il server DNS per assegnargli un nome senza preoccuparti di un servizio di tipo DNS dinamico.

Aggiornare

Alcune persone hanno interpretato questa domanda come chiedere a un laptop di funzionare allo stesso modo all'interno di una rete come su un'altra rete. IMO, questa è una domanda completamente diversa e amplia notevolmente la portata della domanda. Non ho visto che questo è lo stesso computer sia all'interno che all'esterno della rete (o di tutto tranne che un IP). Ora dobbiamo chiederci cose come, come ti stai connettendo, come stai risolvendo i nomi host, ecc. Alla fine, nessuna risposta potrebbe risolvere automaticamente ogni situazione.

Se sei disposto a eseguire uno script minuscolo dopo esserti connesso all'altra rete, posso fornire una risposta semplice che sarà abbastanza robusta.

Innanzitutto, crea uno script batch di piccole dimensioni:

ping -n 1 some.local.ip.addy
if errorlevel 1 goto :isremote
cp /Y %WINDIR%\System32\Drivers\etc\hosts.local %WINDIR%\System32\Drivers\etc\hosts
goto :eof
:isremote
cp /Y %WINDIR%\System32\Drivers\etc\hosts.remote %WINDIR%\System32\Drivers\etc\hosts

Passa some.local.ip.addya un IP reale sulla tua rete locale. Assicurati che sia sempre disponibile (l'IP del tuo router funzionerebbe bene purché risponda a una richiesta PING).

Quindi crea un file hosts locale ( %WINDIR%\System32\Drivers\etc\hosts.local) e inseriscilo:

192.168.0.2 my-service.mynet.dyndns.org
192.168.0.3 my-service2.mynet.dyndns.org

Utilizzando gli IP del tuo server. Questo è semplificato, aggiungerei voci che funzionano specificamente anche all'interno della rete.

Quindi creare un file host remoto ( %WINDIR%\System32\Drivers\etc\hosts.remote). Lascialo vuoto, non ne avremo bisogno ora ma potresti trovarlo in un secondo momento.

Quindi imposta un account dyndns.org chiamato mynet.dyndns.orge assicurati di renderlo un jolly. Naturalmente, DynDNS è solo una delle centinaia di opzioni per un host DNS dinamico .

Ora, dopo esserti spostato tra le reti, basta eseguire lo script e voilà, tutto funziona allo stesso modo come all'interno e (a condizione che inoltri correttamente le tue porte e usi i nomi host corretti) dovrai solo usare my-service.mynet.dyndns.orgo my-service2.mynet.dyndns.orgo mynet.dyndns.org:24829per ottenere i tuoi vari servizi. Se quel servizio supporta host virtuali, saprà come gestire la my-service.parte. Molto probabilmente il tuo router lo passerà, quindi dovrai fornire anche la porta per quei servizi che non sanno come gestire la parte del vhost (ovviamente la maggior parte di quelli ha una porta predefinita nel client quindi essere in grado di entrare di mynet.dyndns.orgsolito).

Lo stesso si può ottenere senza lo script se si dispone di un server DNS sulla propria rete locale, ma se lo si fa probabilmente si sa già come farlo. In caso contrario, ciò merita sicuramente una domanda separata.


1
Mentre vedo quello che stai dicendo, capisco anche la posizione del PO. Ho avuto lo stesso problema con un laptop che dovrebbe essere in grado di accedere allo stesso servizio con lo stesso nome quando è collegato alla LAN o esternamente, ad esempio in un Wi-Fi pubblico. La vera soluzione è la riflessione / loopback NAT nel router.
pesante

@heavyd L'OP ha affermato espressamente di voler utilizzare un IP. Non ha detto nulla su un nome host. Lo configureresti usando DNS o un file host. NAT * è lame IMHO e non è mai una vera soluzione a qualsiasi cosa relativa alla rete.
Krowe,

I nomi DNS si risolvono in IP, quindi alla fine è lo stesso. Voglio che una singola configurazione funzioni sia all'interno che all'esterno della mia rete NAT-ed.
pesante

@heavyd Non lasciare che il meta ti confonda. Solo perché una mela è verde non significa che la mela verde significhi. IOW, utilizzare il nome DNS per etichettare l'IP. Rendi identico, lascia che l'IP proceda lungo il percorso breve.
Krowe,

@heavyd ho risolto la tua domanda indipendente. Forse non ti dispiacerebbe votare questo adesso?
Krowe,
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.