Avanti Indietro Indice

5. Come impostare il NAT

Devi creare delle regole di NAT che segnalino al kernel quali connessioni cambiare e come cambiarle. Per fare ciò, useremo il programma iptables il quale è veramente versatile, e che permette di alterare la tabella NAT specificando l'opzione `-t nat'.

La tabella delle regole NAT contiene tre liste chiamate comunemente `catene' (chains): ogni regola è esaminata per ordine finché una non è soddisfatta. Le tre catene sono chiamate PREROUTING (per il Destination NAT sui pacchetti in arrivo), POSTROUTING (per il Source NAT sui pacchetti in uscita), e OUTPUT (per il Destination NAT sui pacchetti generati localmente).

Il seguente diagramma, se ho un talento artistico, dovrebbe illustrare tutto ciò molto bene.

      _____                                     _____
     /     \                                   /     \
   PREROUTING --->[Decisioni] --------------->POSTROUTING----->
     \D-NAT/     [di routing ]                 \S-NAT/
                [instradamento]                   ^
                     |                          __|__
                     |                         /     \
                     |                        | OUTPUT|
                     |                         \D-NAT/
                     |                            ^
                     |                            |
                     --------> Processi locali ----

Per ogni punto, quando un pacchetto passa viene osservata quale connessione vi è associata. Se è una nuova connessione, per sapere cosa fare, osserveremo la catena corrispondente nella tabella NAT. La risposta che si ottiene sarà poi applicata anche a tutti i pacchetti successivi appartenenti a questa connessione.

5.1 Semplici selezioni usando iptables

iptables vanta una serie di opzioni standard elencate sotto. Tutte le opzioni con doppio trattino possono essere abbreviate, sempre che iptables possa distinguerle dalle altre opzioni disponibili. Se il tuo kernel supporta iptables usando un modulo, dovrai prima di tutto caricare il modulo ip_tables.o utilizzando `insmod ip_tables'.

L'opzione più importante è l'opzione di selezione della tabella `-t'. Per tutte le operazioni di NAT, dovrai sempre utilizzare `-t nat'. La seconda opzione più importante è `-A' usata per appendere una nuova regola alla fine della catena (es. -A `POSTROUTING') o `-I' per inserirne una all'inizio (es. `-I PREROUTING').

Puoi specificare la sorgente (`-s' o `--source') e la destinazione (`-d' o `--destination') dei pacchetti su cui vuoi effettuare il NAT. Queste opzioni possono essere seguite da un indirizzo IP singolo (es. 192.168.1.1), da un nome (es. www.gnumonks.org) oppure da un indirizzo di rete (es. 192.168.1.0/24 oppure 192.168.1.0/255.255.255.0).

Puoi inoltre specificare l'interfaccia di ingresso (`-i' o `--in-interface') o l'interfaccia di uscita (`-o' o `--out-interface'), ma quale usare dipende dalla catena in cui vuoi aggiungere la regola, nella catena PREROUTING puoi specificare solo l'interfaccia di ingresso, nella catena POSTROUTING (e OUTPUT) solo quella di uscita. Se usi quella sbagliata iptables comunque ti restituirà un errore.

5.2 Note utili sulla selezione dei pacchetti da manipolare

Come detto precedentemente puoi specificare un indirizzo sorgente o di destinazione. Se ometti l'opzione di indirizzo sorgente, allora si intenderà qualsiasi indirizzo sorgente. Se ometti l'opzione di indirizzo destinazione, allora si intenderà qualsiasi indirizzo destinazione.

Puoi anche indicare uno specifico protocollo (`-p' o `--protocol'), come ad esempio TCP o UDP, in questo modo solo i pacchetti con quel protocollo saranno sottoposti alla regola. La ragione principale per cui è utile specificare il protocollo è che tcp e udp consentono di utilizzare delle opzioni extra, precisamente le opzioni `--source-port' e `--destination-port' (abbreviate `--sport' e `--dport').

Queste opzioni ti permettono di specificare che solo i pacchetti con quella certa porta sorgente e destinazione devono essere sottoposti alla regola. Questo è utile per le richieste di redirezione del web (TCP porta 80 o 8080) e per lasciar stare gli altri pacchetti.

Queste opzioni devono essere inserite dopo l'opzione `-p' (che ha come effetto quello di caricare la libreria estensione del protocollo). Per le porte puoi utilizzare i numeri corrispondenti, o i nomi presenti nel file /etc/services.

Tutte le differenti caratteristiche utilizzabili per selezionare i pacchetti sono dettagliate in modo esauriente nelle pagine del manuale (man iptables).


Avanti Indietro Indice