NAT in RouterOS — Masquerade, Port Forwarding e Hairpin
Network Address Translation permette a una rete privata di condividere un singolo IP pubblico (srcnat/masquerade) e di esporre servizi interni su Internet (dstnat/port-forward), con la variante hairpin per i client LAN.
Il NAT in RouterOS opera nella chain nat con due sotto-chain: srcnat (modifica l'indirizzo sorgente, tipicamente in postrouting) e dstnat (modifica l'indirizzo destinazione, tipicamente in prerouting, prima della decisione di routing). La scelta tra le due dipende da cosa si vuole modificare nel pacchetto.
srcnat — Masquerade vs src-nat
Masquerade usa dinamicamente l'IP corrente dell'interfaccia WAN: ideale per connessioni DHCP o PPPoE dove l'IP pubblico cambia. src-nat usa un IP statico: più efficiente (meno lookup) ma richiede un IP pubblico fisso.
# MASQUERADE — IP WAN dinamico (DHCP/PPPoE) # Tutta la rete 192.168.88.0/24 esce con l'IP corrente di ether1 /ip firewall nat add chain=srcnat src-address=192.168.88.0/24 out-interface=ether1 action=masquerade comment="Masquerade LAN -> WAN (IP dinamico)" # SRC-NAT — IP WAN statico (più performante di masquerade) /ip firewall nat add chain=srcnat src-address=192.168.88.0/24 out-interface=ether1 action=src-nat to-addresses=203.0.113.1 comment="SRC-NAT LAN -> WAN con IP fisso" # NETMAP — mappatura 1:1 tra range di indirizzi # (es. 10.0.0.0/24 privato -> 203.0.113.0/24 pubblico, stesso offset) /ip firewall nat add chain=srcnat src-address=10.0.0.0/24 out-interface=ether1 action=netmap to-addresses=203.0.113.0/24 comment="1:1 NAT tra subnet privata e pubblica"
dstnat — Port Forwarding
# PORT FORWARDING — espone un server interno su Internet # Traffico verso IP-pubblico:80 → viene inoltrato a 192.168.88.100:80 /ip firewall nat add chain=dstnat protocol=tcp dst-address=203.0.113.1 dst-port=80 action=dst-nat to-addresses=192.168.88.100 to-ports=80 comment="Port-forward HTTP -> web server interno" # PORT FORWARDING SSH esterno su porta non standard 2222 -> porta 22 interna /ip firewall nat add chain=dstnat protocol=tcp in-interface=ether1 dst-port=2222 action=dst-nat to-addresses=192.168.88.50 to-ports=22 comment="Port-forward SSH su porta alternativa" # REDIRECT locale — reindirizza tutto il traffico DNS dei client # verso il resolver locale del router (utile per DNS filtering) /ip firewall nat add chain=dstnat protocol=udp in-interface-list=LAN dst-port=53 action=redirect to-ports=53 comment="Redirect DNS: forza tutti i client a usare il DNS del router"
Hairpin NAT (NAT loopback)
Senza Hairpin NAT, un client LAN che tenta di raggiungere un server interno usando l'IP pubblico del router riceve una risposta con sorgente privata, causando un timeout. Con l'Hairpin, il router masquera anche il traffico in uscita dalla LAN verso il server interno.
# PASSO 1: regola dstnat (già presente per il port-forward) /ip firewall nat add chain=dstnat protocol=tcp dst-address=203.0.113.1 dst-port=443 action=dst-nat to-addresses=192.168.88.100 to-ports=443 comment="dstnat HTTPS -> web server interno" # PASSO 2: regola srcnat hairpin # Quando un client LAN raggiunge il server interno via IP pubblico, # masquera la sorgente con l'IP LAN del router. # Così il server risponde al router, che poi rigira la risposta al client. /ip firewall nat add chain=srcnat protocol=tcp src-address=192.168.88.0/24 dst-address=192.168.88.100 dst-port=443 out-interface=LAN action=masquerade comment="Hairpin NAT: LAN -> server interno via IP pubblico" # IMPORTANTE: dopo aver aggiunto/modificato regole NAT, svuota il conntrack /ip firewall connection remove [find]
Continua con
Configura senza fatica con l'AI
In WispOS l'agente AI genera la configurazione RouterOS dalle tue parole e un tutor ti guida passo passo.
Prova WispOS