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.