NAT: Alcune indicazioni semplici di utilizzo tramite IPTABLES

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:

  • 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.
  • 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.
  • quando si ha la necessità di far dialogare reti in over-lapping o duplicate.
  • 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.
  • 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

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:23

Abilitare 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