Andrea Beggi

This revolution is for display purpopes only.

NAT: regola di loopback

A T T E N Z I O N E ! Questo post ha piu' di sei mesi. Le informazioni contenute potrebbero non essere aggiornate.

Affrontiamo una annosa qestione: il Nat e la regola di loopback. Anche se non sapete cos’è, molto probabilmente vi ha causato problemi se accedete ad internet tramite un router.

La regola di loopback è la risposta ad una delle domande più frequenti, quando si parla di NAT e inoltro delle porte TCP: “Il mio indirizzo privato è 192.168.1.0, quello pubblico 85.38.119.122 (invento). Ho una webradio/voglio controllare il PC via UltraVNC/ho un webserver in casa ecc ecc: se utilizzo l’IP privato funziona tutto, se provo con l’IP pubblico non funziona. Perché?”.

La risposta breve è: “Sul tuo router/firewall manca la regola di loopback”.

Il funzionamento del NAT è illustrato nel post linkato qui sopra; in breve possiamo dire che serve per far “uscire” su internet tutta la vostra rete locale con un unico IP pubblico, e si occupa anche del corretto inoltro delle porte. Finché un pacchetto destinato all’IP pubblico arriva dall’esterno non ci sono problemi: si trova dalla parte “giusta” dell’interfaccia e le regole fanno il loro lavoro, inoltrando il traffico all’host locale designato per ascoltare su quella particolare porta. Quando il pacchetto viene generato dall’interno, esso arriva al router che in mancanza della regola di loopback può comportarsi in due modi diversi (dipende dal firmware):

  • Decide che il pacchetto è spoofato, e lo scarta senza tanti complimenti.
  • Oppure lo inoltra alla sua WAN, battezzata con l’IP pubblico per definizione. Se sulla particolare porta è in ascolto un demone, esso risponde, altrimenti la connessione va in timeout.

In entrambi i casi non abbiamo ottenuto il risultato sperato: anche se nel secondo caso otteniamo una risposta, essa arriva da un server che non è quello che ci interessava.

Per poter raggiungere dall’interno un server locale (pubblicato) tramite il suo IP pubblico (nattato), serve una regola di loopback fatta in questo modo:

NAT loopback

Spiega:

  • IP Source: è l’IP dal quale proviene la richiesta, tipicamente si tratta dell’host che stiamo utilizzando per interrogare il server. Il suo indirizzo locale (come tutti quelli della Local subnet) viene sostituito con l’IP pubblico (WAN IP).
  • IP Destination: è l’IP pubblico sul quale sappiamo essere in ascolto il nostro server. Lo sappiamo perché esiste una regola di NAT “normale” che fa esattamente questo. L’IP pubblico viene sostituito con l’IP privato, quindi il pacchetto non esce dalla LAN.
  • Service: in casi più sofisticati si può decidere di tradurre anche la porta TCP su cui ascolta il server, ma questa sezione è meno usata.

Alcuni firewall più sofisticati hanno un ulteriore campo che permette di specificare le porte fisiche inbound e outbound. E’ utile nei casi in cui si disponga di più sottoreti attestate su diverse interfacce.

Naturalmente la regola viene applicata solo nel caso in cui IP Source, IP Destination e Service siano quelli indicati nei campi Original della tabella. Per ciascuna singola regola di NAT “diretto” è necessaria una corrispondente regola di loopback.

Non ho mai trovato un router/firewall di classe SOHO (casa e piccoli uffici), che supportasse esplicitamente la regola di loopback: il mio Netgear DG834 è sufficentemente furbo da creare automagicamente la regola ogni volta che si pubblica un server, quindi non è necessario alcun intervento manuale di configurazione. Altri dispositivi, ad esempio gli ZyXel, aggiungono la regola solo se essa viene abilitata tramite un comando da impartire dalla interfaccia a riga di comando (CLI).
La maggior parte dei router casalinghi, purtroppo, non supporta in alcun modo la regola di loopback. In questo caso dovremo rassegnarci ad interrogare il server solo tramite il suo IP locale.

26 Commenti

fabio | #

infatti su netgear mi hai consigliato davvero bene, ti ringrazio. one question: capisco male o questa regola di fatto, natta e translata, e alla fine fa cmq accedere sull’indirizzo lan e non realmente su quello pubblico?

Andrea | #

Certo: il pacchetto rimane in LAN. Su iptables, infatti, mi pare che la regola sia da impostare come PREROUTING

Keper | #

Tutto perfetto, ma perché implementarlo?
Mi spiego: se voglio verificare il funzionamento di un server nella rete interna, lo faccio via LAN, se ci metto il loopback ci arrivo comunque via rete interna, che non mi aiuta a capire se dall’esterno le regole di nat funzionano correttamente.
Forse mi manca qualche pezzo per capirne la reale utilità.

Andrea | #

Keper, io ho trovato principalmente due utilizzi: utonti fissi e utenti mobili.
Gli utonti fissi hanno difficoltà a capire la differenza pubblico/privato, quindi una volta che sanno l’IP pubblico da comunicare ai loro cuGGini per connettersi alla webradio, usano quello e stop.
Gli utenti mobili hanno la comodità di usare gli stessi IP e URL sia quando sono fuori che quando sono dentro. Se poi sono mobili e pure utonti, serve anche di più.
Per il resto hai ragione: io vivo benissimo anche senza….

Alberto | #

Mettendo il firmware DD-WRT su un router compatibile (ce ne sono a tonnellate, io ho un Linksys WRT54GL) basta attivare l’opzione di loopback dall’interfaccia web.
Il tutto con un router economico e busto e con un firmware GPL

fabio | #

l’osservazione di Keper era la stessa che ti stavo per fare 😀

Alberto | #

mmmmmm ho scritto un router economico e BUSTO.
Per favore: non chiedetemi cosa sia un router busto. Non lo so!

Forse mi sono girato un attimo mentre scrivevo il commento e qualcuno ha aggiunto il busto.
Un busto inteso un corsetto? Costrittivo: no, scartato.
Busto Arsizio? Magari pensavo a lo Svarione degli Anelli e alla famosa terra di Merdor 🙂

Non badate a quello che scrivo: sono temporaneamente fulminato.

fabio | #

alberto, non è che volessi scrivere robusto ??
io ad esempio quando non funziona qcosa prendo a mazzate tutto e poi hai voglia dopo ad attivare l’opzione di loopback…

Ulisse31 | #

Bella spiegazione, anche se in realtà ci ho capito poco.
E sì che per me dovrebbe essere pane di tutti i giorni 😛

Sarà per questo che non riesco a configurare ammodo quel cappero di Router Thompson 605 su Alice 20M?

thedrake | #

In assenza di regola di loopback NAT, io solitamente risolvo usando il nome al posto dell’IP e un file hosts (o un DNS sulla LAN) che punta all’indirizzo interno.

P|xeL | #

Che bello rivederti parlare un po’ di tecnichese. 😉
Ciao,
P|xeL

Keper | #

@Andrea: l’utilizzo per utonti fissi e mobili lo capisco, è anche vero che venire loro inconro, SEMPRE, perché non si sforzano, perché l’informatica è rimasta nella loro mente a quella del Commodore 64, mi ha un tantinello stancato. Per carità fai il consulente e in qualche modo sei “obbligato” a soddisfare il cliente, ma questa elasticità informatica impedisce alle persone di fare lo sforzo necessario per approcciare il mondo tecnologico con fare adulto.

Prendila per quello che è: uno sfogo e nulla di personale.

amosgitai | #

Bello rileggere qualcosa di interessante sulle reti.
Ormai la certificazione CISCO CCNA che ho preso più di un anno fa sta prendendo polvere e dimentico le cose!

spider | #

Far entrare e uscire un pacchetto dalla stessa interfaccia di un router o di un firewal è sbagliato, tantopiù se viene sottoposto a modifiche e maneggi come il NAT. E’ un rabbercio, un accrocchio.
Lo stesso risultato di consentire agli utenti di fregarsene della differenza tra pubblico e privato, la si ottiene configurando il DNS in modo che risponda diversamente a seconda dell’IP da cui proviene la richiesta (split DNS).

Danilo Morchio | #

Il problema del loopback quando non si possiede un Modem che con tali possibilita’ , io l’ho risolto inserendo nei file hosts ed hosts.sam presenti sotto windows\system32\drivers\etc l’IP del mio server web interno , associato all’indirizzo web esterno .
Nel mio caso 192.169.1.85 danilomorchio.nslalias.net e tutto funziona perfettamente , digito il mio sito esterno e vengo istantaneamente reindirizzato all’interno .

Saluti Danilo .

Fabrizio | #

Ciao a tutti.

Mi riaggancio a questa discussione per esporre la mia esperienza.
Attualmente ho un router (alice 2 gate plus) che, naturalmente, non contempla la funzione “nat loopback”
In questo caso, se usate linux e piu’ specificatamente bind9 potete usare le “view” messe a disposizione dallo stesso bind9. (come aveva già accennato qualcuno)

Cosa fa ? Come funziona ?

E’ abbastanza semplice: si crea un file di zona per il dominio sitoa.it contenente l’ ip pubblico , se ne crea una copia contenente l’ ip privato e si definiscono della acl che servono a far capire a bind9 con quale “vista” risolvere il dominio: se l’ ip è locale, viene usata la vista interna, se è pubblico, usa quella esterna (un po’ come le materialized view su oracle, per chi conosce i database)

Non ho mai provato il “nat loopback”, per cui non saprei dirvi come si comporta.

E verissimo quanto dice spider: questa soluzione è un accrocchio.

Io consiglio, in questi casi, di usare il modem (classico e semplice buon vecchio modem) possibilmente in modalità bridge con un client pppoe..et voilà: il gioco è fatto.

Il problema è che oggi come oggi i modem di qualche anno fa, sono difficili da reperire.

sergio | #

Ciao Ragazzi, datemi una mano con il mio Thomson ST716v5
Ad essso è collegato un Budgetone Grandstream 101 VoIP (telefono) che si autentica tranquillamente ma che non squilla e non inoltra chiamate.
In pratica non vede le chiamate in entrata ne tantomeno quelle in uscita.

Ho provato a smanettarci sul router Thomson ST716v5 ma senza risultato.

Attendo …..

fabio | #

aiutooooooooooooooooooooo…
ho un router linksys wrt54gl e sopra un alice wigate e ho bisogno di creare una regola nat che mi reindirizzi tutte le connessioni dall’esterno verso il mio server openvpn solo che nel linksys nn trovo la regola per reindirizzamento nat e alice nn ne vuole parlare di vedere le reti di un livello superiore…che faccio????????

Emanuele | #

Buongiorno a tutti, vi vorrei esporre questa domanda:
Premesso che lavoro con Real vnc e che ho sia un modem che un router ovviamente settati per potermi consentire di entrare regolarmente, mi trovo spesso bloccato dal fatto che l’indirizzo locale del server passa da solo es. da 192.168.0.103 a 192.168.0.105 e conseguentemente impedisce l’entrata. é possibile prevedere o condizionare questo cambio inaspettato? Grazie a tutti, Emanuele

stefano | #

Buongiorno
la possibilità di utilizzare nella la rete LAN i nomi DNS visibili dall’esterno è legata alla necessità di verificare se in caso di servizi esposti tutto funzioni nella stessa maniera sia internamente che esternamente.
Se ad esempio si espone un servizio di posta il nome DNS del servizio può essere diverso (dovrebbe esserlo) da quello fisico del server cosa la quale comporta che il file hosts potrebbe generare conflitti qualora il servizio mail debba tenere conto della differenza. E’ il caso di Exchange che non tollera nomi ‘ridefiniti’ magari via file hosts in quanto è la struttura integrata nell’Active Directory che deve gestire i nomi negli specifici ambiti.
E’ anche il caso più frequente dei siti web che potrebbero essere tutti gestiti da un servizio (IIS, Apache etc.) ma avere host name (o header) differenti abbinati allo stesso IP fisico.
Ancora di più nel caso di web service dove il nome fisico del server, il nome del servizio web, il nome dei web services e dei vari metodi chiamati debbono sempre rispettare la ‘filiera’ e mai essere sostituiti dal un indirizzo ip.
Nel caso poi di servizi assoggettati a SSL o richiedenti una sicurezza di tale tipo che è magari residente in oggetti al di là di dove si trova la NAT potrebbe non essere addirittura possibile la fruizione in quanto il certificato abbinata potrebbe contenere dentro l’indirizzo fisico pubblico del servizio da garantire.

cristian | #

salve,
qualcuno ha qualche riferimento su come si ottiene questa configurazione su un cisco?

grazie

riccardo | #

chi mi puo dare una mano?
ho una telecamera ip con indirizzo della mia rete interna
es 10.1.20.30 , ho un ip pubblico di fastweb 2.228.x.x
devo impostare il firewall per poter vederla , come posso fare?
se sulla tlc imposto ip pubblico di fastweb riesco ad accedere pero’ volevo vederla facendo un nat per non occupare l’ip
grazie

Danilo | #

Buonasera, leggevo questo suo articolo e credo che possa aiutarmi a risolvere il mio problema, in pratica mi connetto ad internet tramite un provider che mi ha installato un apparecchio ( Foe ) fuori dal balcone il quale prende segnale (wireless credo) e me lo porta in casa in un router tp-link.
dove ho collegato il pc in wireless, e la consolle xbox di mio figlio diretta (via cavo) il problema è che la consolle xbox ha parecchie disconnessioni quando è in live, volevo sapere se questo è dovuto al fatto che il mio ip è un ip nattato, il responsabile del servizio mi ha detto che può assegnarmi un ip publico cambierebbe qualcosa? e poi perche non riesco ad aprire le porte tramite il router? spero di essere stato chiaro nell’esporre il problema, e ringrazio in anticipo per l’attenzione ed eventuale risposta. Danilo.