Come Attivare l’ “IP Forwarding” sotto linux

3128787858Per impostazione predefinita tutte le moderne distribuzioni Linux hanno l’ipforwarding disabilitato. Di solito questo è una buona idea poiché nella maggior parte dei casi non si ha bisogno di inoltrare pacchetti, ma se stiamo allestendo un router Linux/gateway o forse un server VPN (PPTP o IPSec) o solo un semplice server dial-in dovremmo abilitarlo. Questo può essere fatto in diversi modi che presenterò qui sotto.

1.Verifica se l’inoltro dei pacchetti è già abilitato.

Dobbiamo ricercare il valore kernel sysctl net.ipv4.ip_forward per vedere se l’invio è abilitato o meno,usare comando sysctl:

sysctl net.ipv4.ip_forward
net.ipv4.ip_forward = 0

Semplicemente controllando il valore nel sistema /proc:

cat /proc/sys/net/ipv4/ip_forward
0

Come possiamo vedere in entrambi gli esempi è stato disabilitato (valore 0).

2.Attivazione “al volo”.

Come con tutti i parametri del kernel sysctl possiamo cambiare il valore di net.ipv4.ip_forward al volo (senza riavviare il sistema):

sysctl -w net.ipv4.ip_forward=1

o

echo 1 > /proc/sys/net/ipv4/ip_forward

L’impostazione è  modificata immediatamente ma la configurazione non sarà salvata dopo il riavvio del sistema.

 

3.Salvataggio permanente della configurazione.

Se vogliamo salvare la configurazione definitivamente, il modo migliore per farlo è usare il file /etc/sysctl.conf dove si aggiungerà una riga contenente net.ipv4.ip_forward = 1

nano /etc/sysctl.conf
net.ipv4.ip_forward = 1

 

Se hai già una voce net.ipv4.ip_forward con il valore 0 si può cambiare in 1. Per abilitare le modifiche apportate in sysctl.conf sarà necessario eseguire il comando:

sysctl -p /etc/sysctl.conf

Sui sistemi RedHat questo è attivato solo dopo aver riavviato la rete:

service network restart

e sui sistemi Debian/Ubuntu questo può essere fatto anche con riavvio del servizio procps:

/etc/init.d/procps.sh restart

 

4.Utilizzo di script init specifici.

Anche se i metodi presentati in precedenza dovrebbero funzionare bene e non ci sarebbe bisogno di qualsiasi altro metodo, volevo solo rilevare che ci sono anche altre procedure per abilitare l’Ip Forwarding specifico per alcune distribuzioni Linux. Per esempio distribuzioni basate su Debian possono utilizzare l’impostazione:

nano /etc/network/options
ip_forward=no

Impostarla su Sì e riavviare il servizio di rete. Anche distribuzioni RedHat potrebbero impostare questo utilizzando:

nano /etc/sysconfig/network
FORWARD_IPV4=true

In seguito riavviare la rete.

Indipendentemente dal metodo che avete usato, è possibile verificarlo utilizzando lo stesso metodo indicato sopra:

sysctl net.ipv4.ip_forward
net.ipv4.ip_forward = 1
cat /proc/sys/net/ipv4/ip_forward
1

Se il risultato è 1 allora il sistema Linux inoltrerà pacchetti anche se essi non sono destinati a nessuna delle proprie interfacce di rete.