====== Uno script per risolvere i conflitti di routing con openvpn ======
Autore: **//Fabio Di Matteo//** \\ Ultima revisione: **//02/05/2010//** \\ \\
Puo' capitare di avere una rete locale di classe C 192.168.1.0/24 (o con altri indirizzi ip) e dover raggiungere un' altra rete analoga tramite openvpn. Openvpn potrebbe inviare le rotte anche per la rete remota con un comando simile ''/sbin/route add -net 192.168.1.0 netmask 255.255.255.0 gw 10.8.0.9'' a questo punto il nostro SO avra' sicuramente dei problemi a trovare il gateway predefinito creando problemi alla nostra rete locale. \\
Lo script seguente non fa altro che avviare openvpn, cancellare le rotte inviate per la rete 192.168.1.0/24 (da modificare se necessario in base alle esigenze) e rimetterle di nuovo tutte escludendo 192.168.1.1 .
**Avviare la vpn **
ersuvpn start
**Terminare la vpn **
ersuvpn stop
PS รจ senz'altro comodo copiare lo script in ''/usr/local/bin/'' in modo tale da non cercarlo ogni volta che si deve avviare la vpn.
**ersuvpn**
#!/bin/sh
DEVICE=tun0
DIRSCRIPT=/home/fabio/Vpns/ersu/
NET=192.168.1.0/24
NETPREFIX=192.168.1.
OPENVPNCONF=$DIRSCRIPT/openvpn.conf
PIDFILE=$DIRSCRIPT/openvpn.pid
if [ "$1" = "start" ];then
echo "Inserire password utente sudo:"
cd $DIRSCRIPT
sudo openvpn --daemon --config $OPENVPNCONF --writepid $PIDFILE
if [ -f $PIDFILE ] ; then
sleep 10
sudo ip route del $NET dev $DEVICE
for i in `seq 2 254`;
do
sudo ip route add $NETPREFIX$i dev $DEVICE
done
echo ; echo "Vpn avviata correttamente."
else
echo; echo "Impossibile avviare la vpn."
fi
fi
if [ "$1" = "stop" ];then
sudo ip route flush dev $DEVICE
sudo kill -9 `cat $PIDFILE`
rm -f $PIDFILE
echo; echo "Vpn terminata."
fi
P.S. Qualora non fosse gia' attivato e' necessario attivare sudo per l'utente che lancera' lo script.