Ok, abbiamo visto come configurare dei filtri ed il NAT. Mancano però ancora un paio di cosettine di cui sarebbe il caso di parlare.
Prima di tutto, soprattutto quando staremo correggendo gli errori nelle nostre regole, caricheremo e ricaricheremo il nostro script finché non vedremo queste regole funzionare (molte volte). Il fatto è che creando delle catene, non chiediamo di svuotarle nel caso queste esistano già, per cui continueremmo ad aggiungere regole su regole, non semplificandoci affatto la correzione degli errori.
Potreste quindi voler aggiungere qualcosa come:
for table in nat mangle filter
do
iptables -t $table -F
iptables -t $table -X
done
all'inizio del vostro script... che elimina tutte le catene e tutte le regole inserite
in ogni tabella. Allo stesso modo, potreste voler aggiungere qualcosa come
(
for interface in eth0 eth1 eth2 eth3
do
ip route flush dev $interface
ip addr flush dev $interface
ip link set down dev $interface
done;
) &>/dev/null
Sempre all'inizio del nostro script, per riportare tutte le interfacce e le impostazioni
ad uno stato conosciuto, in modo che non si vadano in continuazione ad aggiungere route
o indirizzi, che, aggiunti per ultimi, verrebbero ignorati in favore di vecchie configurazioni
che si combinerebbero e mischierebbero in maniera poco prevedibile. Comunque, ``ip route flush dev ethx''
elimina tutti i route relativi ad ethx, ``ip addr flush'' elimina tutti gli indirizzi dell'interfaccia
ed infine ``ip link set down'' spegnere la scheda di rete.
Infine, dobbiamo attivare le nostre interfacce di rete, configurare la tabella di routing ed abilitare il ``forwarding'', dicendo al kernel di iniziare a trasmettere i pacchetti da una scheda di rete all'altra:
86: ip link set up dev eth0
87: ip link set up dev eth1
88: ip link set up dev eth2
89: ip route add default via 123.45.68.254
90: echo 1 > /proc/sys/net/ipv4/ip_forward
In questo caso, ip_forward non può essere aggiunto al file
sysctl.conf, in quanto vogliamo che il forwarding venga attivato
solo dopo che abbiamo impostato correttamente le regole di firewalling.
Non ci resta quindi che creare in /etc/rcS.d/ o rc2.d (a secondo della distribuzione) un link al file appena completato, in modo che questo venga eseguito ad ogni reboot, con qualcosa come ``ln -s ../init.d/ifconffw ./S40ifconffw'' oppure ``update-rc.d ifconffw start 40 S'' in Debian.