3.23. Come configuro il mio sistema FreeBSD affinché faccia da gateway tra la mia rete locale e Internet?

Quasi sicuramente, uno degli utilizzi più frequenti di FreeBSD è come sistema gateway tra due reti, solitamente tra un rete locale e Internet. Bastano pochi passi per impostare il sistema. Occorre sapere che gli indirizzi ip usati sulle reti locali non possono essere usati in Internet, per una questione di standard e tuttavia è difficile avere a disposizione un indirizzo IP pubblico per ogni macchina, occorre quindi effettuare un mascheramento degli indirizzi privati in modo che vengano visti come un solo indirizzo pubblico, quello del gateway; il termine tecnico di quest'operazione è NAT[1]. Ci sono due modi di effettuare il NAT: utilizzando l'opzione -nat del PPP[2] di sistema oppure facendo uso del demone natd. Ma andiamo con ordine: prima di tutto occorre abilitare la trasmissione dei pacchetti da una rete all'altra (forwarding), inserendo la seguente riga nel file /etc/rc.conf:

gateway_enable="yes"
     
Al prossimo riavvio il forwarding sarà abilitato; tuttavia, se non possiamo riavviare il sistema in quanto esso offre dei servizi che non possono essere interrotti, possiamo cambiare il valore di una sysctl:
# sysctl net.inet.ip.forwarding=1
     
In questo modo possiamo utilizzare subito la trasmissione dei pacchetti tra due reti. Fatto questo possiamo scegliere se usare il NAT offertoci fa ppp(8) oppure se usare il natd(8). Vediamo come agire in entrambi i casi. Prima di tutto però occorre ricompilare il kernel con l'opzione
options         IPDIVERT
per abilitare il NAT, sia quello del PPP sia natd.

3.23.1. Utilizzare il NAT di PPP

Configurare la propria connessione in modo che utilizzi il NAT offerto da PPP è semplicissimo. Basta specificare l'opzione -nat quando lanciamo la connessione a Internet oppure inserire nel file di configurazione di PPP, /etc/ppp/ppp.conf, la riga

nat enable yes
       
Se facciamo partire la connessione all'avvio del sistema, è sufficiente aggiungere/etc/rc.conf la riga
ppp_nat="YES"
       


3.23.2. Utilizzare natd(8)

Usare natd è facile quanto utilizzare il NAT del PPP, tuttavia di solito si preferisce quest'ultimo quando non si ha a che fare con più reti locali. Per prima cosa apriamo /etc/rc.conf in un editor e aggiungiamo le righe:

natd_enable="YES"
natd_interface="fxp0"
       
fxp0 indica l'interfaccia connessa ad Internet. Creiamo inoltre il file /etc/natd.conf:
interface fxp0
use_sockets yes
same_ports yes
       
La prima riga indica nuovamente l'interfaccia di rete connessa ad Internet, mentre le altre due servono per assicurare il funzionamento di FTP e delle DCC[3] di IRC. Dal prossimo riavvio del sistema il natd sarà funzionante. Ovviamente bisogna configurare appropriatamente anche i client della rete locale, in modo che usino la macchina su cui è in esecuzione natd come gateway principale per uscire in Internet.

Note

[1]

NAT: Network Addresses Translation (Traduzione degli indirizzi di rete). In ambiente Linux viene anche chiamato Masquerading IP.

[2]

PPP: Point to Point Protocol.

[3]

DCC: Direct Client Connection, particolari opzioni di IRC per lo scambio di file e altro.