8. Inoltro tra subnet

La lettura di questa sezione è necesssaria solo se si sta cercando di connettere intere reti, non solo singoli host. Si assume che il tunnel da host a host sia già funzionante, al punto che computer client e server possano scambiarsi dei ping senza problemi. A questo punto è necesario consentire anche alle reti connesse alle macchine client e server di utilizzare il tunnel.

8.1. Inoltro

Come prima cosa, ci si deve assicurare che ai pacchetti venga consentito l'inoltro attraverso le interfacce di rete. Si può attivare questa opzione attraverso l'interfaccia di configurazione proc. È opportuno fare ciò al momento dell'avvio, ma si può anche inserirlo nello script vpn-pppssh, o perfino creare uno script nella directory /etc/init.d/ip-up.d (si veda la Sezione 7.2).

echo 1 > /proc/sys/net/ipv4/ip_forward
echo 1 > /proc/sys/net/ipv4/conf/ppp1(1)/forwarding
(1)
Ovviamente è necessario sostituire a ppp1 l'interfaccia corretta (quella associata a SERVER_IFIPADDR o a CLIENT_IFIPADDR, a seconda che si stia operando sul server o sul client).

8.2. Rendersi gateway

Su tutti i computer della sottorete, si deve impostare l'host locale della VPN come il gateway per tutte le reti situate dall'altra parte del tunnel. Questo dice ai computer "Se avete pacchetti destinati all'estremo opposto della VPN, inviateli all'host locale della VPN". Si tenga presente che se l'host VPN è già il gateway predefinito di tutti i computer non occorre fare altro: i pacchetti saranno inoltrati automaticamente.

Nell'esempio riportato sotto, il mio host VPN ha indirizzo IP 192.168.1.1 sulla rete locale e indirizzo IP 192.168.3.2 sulla rete VPN. Quest'ultima, contenente le interfacce VPN del client, del server e di tutti i computer sul lato opposto del collegamento, ha indirizzo 192.168.3.0/24. Qundi, su ogni computer locale a cui si desidera consentire di inviare pacchetti attraverso la VPN è necessario eseguire il seguente comando:

# route add -net 192.168.3.0 netmask 255.255.255.0 gw 192.168.1.1

Ora, qualsiasi pacchetto destinato alla rete 192.168.3.0/24 da questa macchina verrà consegnato all'host 192.168.1.1 sulla rete locale per l'inoltro attraverso la VPN.

8.3. Routing

Non dovrebbe essere necessario impostare un routing personalizzato: pppd si occupa di tutto. Tuttavia, se trovate che pppd non soddisfi completamente i vostri bisogni, i campi per personalizzare il routing si trovano all'interno dello script vpn-pppssh. Per cambiare il routing sul client, eseguite semplicemente route. Per cambiare il routing sul server utilizzate ssh, mandando i comandi necessari. Qui potete trovare un esempio:

route add -net $NET1 gw $SERVER_IFIPADDR
ssh -o Batchmode=yes $SERVER_HOSTNAME -l$SERVER_USERNAME route add -net $NET2 gw $CLIENT_IFIPADDR

8.4. Mascheramento

È persino possibile configurare uno o entrambi gli host per mascherare tutte le connessioni attraverso il tunnel vpn. Consultare IP Masquerade HOWTO per ulteriori dettagli.

# ipchains -A forward -i ppp1 -s 192.168.0.0/24 -j MASQ

8.5. E ora proviamolo

Questo dovrebbe essere tutto quello che serve per inviare pacchetti all'altra macchina da una sottorete connessa al client o al server. La vostra VPN PPP-SSH potrà lavorare silenziosamente e in maniera affidabile negli anni a venire.