Mi stavo interessando dell'hairpin NAT non tanto perché mi serva al momento ma giusto per capire come funziona e comprendere meglio i processi interni al routerOS.
So anche che per quanto possibile è meglio evitarlo e affidarsi a soluzioni come il DNS split ad esempio.
Ho letto un paio di articoli in merito che ho trovato in rete oltre alla guida:
https://help.mikrotik.com/docs/display/ ... HairpinNAT
e qui:
https://gregsowell.com/?p=4242
Ho letto in giro anche discussioni accese tra utenti sul topic.
Credo di aver compreso il suo scopo (in pratica, semplificando, se il client che ha fatto una richiesta di connessione al server riceve una risposta da un IP differente, rifiuta la connessione). Ok, tutto chiaro fin qui credo.
Ora, in una richiesta normale dove il server si trova altrove il pacchetto inviato dal client deve passare per la WAN e l'indirizzo IP interno viene tradotto dalla regola di NAT di solito un masquerade nell'IP pubblico, l'unico che può andare in internet. Prendendo come punto di riferimento il secondo link sopra come esempio L'IP passa da 192.168.1.2 a 1.1.1.1.
In questo caso però il server si trova nella stessa LAN, ma il client (192.168.1.2) non ne ha nessuna idea. Di regola la richiesta di connessione farebbe il percorso di cui sopra e paradossalmente il pacchetto potrebbe avere un indirizzo sorgente e destinazione identico. Questo ovviamente non avviene, il pacchetto non ci arriva proprio alla WAN credo.
Da qui il mio dubbio su cosa avviene a questo punto all'interno del router e di conseguenza la mia domanda.
Ho dato un'occhiata al diagramma del packet flow, ma non credo di avere le competenze per interpretarlo correttamente.
Vorrei comprendere bene insomma dove il router "capisce" che il pacchetto è indirizzato su un altro pc in LAN (pur avendo un IP pubblico) e non lo spedisce sulla porta WAN. Da qui poi è semplice: il destination NAT traduce l'IP pubblico in IP privato del server e il masquerade scatta perché ha come regola:
- Codice: Seleziona tutto
add action=masquerade chain=srcnat disabled=no dst-addresses=192.168.1.0/24 src-addresses=192.168.1.0/24
Traduce così l'indirizzo sorgente in quello del gateway LAN del bridge cioè 192.168.1.1 perché opera su questa, alla porta wan non ci è arrivato.
Spero di essere stato chiaro e che abbiate capito qual è il punto che mi interessa approfondire per capire meglio il processo.
Grazie