NAT 
Introduzione Il NAT è una tecnica che permette di manipolare l'indirizzo
sorgente(SNAT) o l'indirizzo di destinazione(DNAT) del pacchetto IP
quando questo viaggia sulla rete. In genere i collegamenti che
effettuano il NAT ricordano come hanno manipolato il pacchetto, e
quindi quando arriva un pacchetto di risposta dall'altra parte,
viene effettuato su quest'ultimo la manipolazione inversa, in questo modo tutto
funziona.
Le ragioni per cui viene utilizzato il NAT sono le seguenti:
1) connessioni di più client a Internet attraverso un solo IP address
pubblico. Tipico delle connessioni modem o xdsl dove sia ha un solo IP
pubblico.
2) quando si desidera cambiare l'IP address di destinazione sui
pacchetti che giungono alla nostra rete. Questo quando si ha un solo IP
address pubblico e si vuol far raggiungere dall'esterno uno o più
servizi all'interno della propria rete privata.
3) quando si ha la necessità di far dialogare reti in over-lapping o duplicate.
4) quando si vuole attivare un Trasparent Proxy ovvero redirigere i
pacchetti destinati a Internet verso un Web Proxy evitando così di
configurare manualmente l'indirizzo del proxy sui ogni singolo client
della propria rete.
5) quando si ha l'esigenza di implementare un Port-Forwarding e quindi
di alterare le porte dei protocolli di trasporto TCP/UDP.
Tipi di NAT - SNAT(SourceNAT) e DNAT(DestinationNAT)
Il Source NAT si ha quando si riscrive l'indirizzo IP sorgente del
pacchetto IP. SNAT opera in fase di post-routing, giusto dopo che il
pacchetto venga trattato dal processo di routing pronto per essere
immesso sulla rete.
Il Masquerading o Mascheramento è anch'essa una tecnica di SNAT dove
tutti i pacchetti provenienti dai client interni alla rete privata
vengono mascherati in un solo IP address, solitamente implementato in
connessioni dial-up PPP o xdsl dove si dispone di un unico IP publico.
Il
Destination NAT si ha quando si riscrive l'indirizzo IP di destinazione
del pacchetto IP. DNAT opera in fase di pre-routing, giusto prima che
il pacchetto venga indirizzato al processo di routing. Port-Forwarding,
Load-Sharing e il Trasparent-Proxy sono tutte tecniche di DNAT.
Configurare il NAT
Prima di procedere con la configurazione di una regola NAT, ricordiamoci sempre di attivare l'IP Forwarding:
# echo 1 > /proc/sys/net/ipv4/ip_forward
Per maggiori info sull'IP Forwarding, consultare la sezione Routing.
SNAT
Mascherare tutti i pacchetti in uscita dall'interfaccia eth1 con lo stesso l'IP address assegnato all'interfaccia eth1:
# iptables -t nat -A POSTROUTING -o eth1 -j MASQUERADE
Alterare in "192.168.100.254" qualsiasi indirizzo IP sorgente proveniente dall'interfaccia eth0:
# iptables -t nat -A POSTROUTING -o eth0 -j SNAT --to-source 192.168.100.254
Impostare un pool di indirizzi con cui mascherare tutti i pacchetti in
uscita dall'interfaccia eth0 in un range che va da 10.0.0.1 a 10.0.0.14:
# iptables -t nat -A POSTROUTING -o eth0 -j SNAT --to-source 10.0.0.1-10.0.0.14
DNAT
Alterare in "192.168.200.1" l'indirizzo di destinazione di tutti pacchetti IP in ingresso sull'interfaccia eth0:
# iptables -t nat -A PREROUTING -i eth0 -j DNAT --to-destination 192.168.200.1
Alterare l'indirizzo IP di destinazione solo del traffico HTTP in "172.16.10.1" porta "8080".Tipica configurazione per Trasparent-Proxy
# iptables -t nat -A PREROUTING -p tcp --dport 80 -i eth0 -j DNAT --to-destination 172.16.10.1:8080
Redirect di tutti i pacchetti diretti all'indirizzo 192.168.100.1 verso l'IP 172.16.20.1
# iptables -t nat -A OUTPUT -d 192.168.100.1 -j DNAT --to-destination 172.16.20.1
Redirect dei pacchetti diretti all'indirizzo 192.168.100.1sulla porta 23(Telnet) verso l'IP 10.10.10.125 porta 23(Telnet)
# iptables -t nat -A OUTPUT -d 192.168.100.1 -p tcp --dport 23 -j DNAT --to-destination 10.10.10.125:23Abilitare una serie di host interni alla rete 10.10.10.x a ricevere connessioni
Telnet mediante un unico IP address esterno "192.168.100.1" e mappando le porte esterne "2001", "2002" e
"2003" a ciascun client interno:
# iptables -t nat -A PREROUTING -d 192.168.100.1 -p tcp --dport 2001 -j DNAT --to-destination 10.10.10.126:23 # iptables -t nat -A PREROUTING -d 192.168.100.1 -p tcp --dport 2002 -j DNAT --to-destination 10.10.10.127:23 # iptables -t nat -A PREROUTING -d 192.168.100.1 -p tcp --dport 2003 -j DNAT --to-destination 10.10.10.128:23
Visualizzare le tabelle NAT
# iptables -t nat -L
Ripulire le tabelle NAT
# iptables -t nat -F
|