Differences between revisions 2 and 3
Revision 2 as of 2005-08-14 15:49:05
Size: 1183
Editor: Kurgan
Comment:
Revision 3 as of 2006-01-10 09:04:23
Size: 2492
Editor: Kurgan
Comment:
Deletions are marked like this. Additions are marked like this.
Line 3: Line 3:
Per il setup generico di OpenVpn, fare riferimento alla configurazione per Linux generica. Su Openwrt, installare il pacchetto "openvpn". Per il setup generico di Openvpn, fare riferimento alla configurazione per Linux generica. Su Openwrt, installare il pacchetto "openvpn".
Line 5: Line 5:
Dal momento che il pacchetto di OpenVpn sul WRT non prevede uno script di startup, questo e` uno minimale che si puo` usare: salvarlo come {{{/etc/init.d/S55openvpn}}}: Il problema con openvpn sul wrt e` che questo non dispone di un orologio realtime che funzioni a macchina spenta, quindi al boot la data e` impostata al 1/1/2000. Questo impedisce a Openvpn di funzionare. Per risolvere il problema, e` necessario impostare l'ora e la data PRIMA di lanciare openvpn.

Questi due script dovrebbero risolvere il problema, credo.

Script 1: {{{/etc/init.d/S55openvpn}}}. Questo ha solo lo scopo di lanciarne un altro in background per non fermare il processo di boot.
Line 8: Line 12:
# carico il modulo per il tun # this script will simply detach the shell script /sbin/startopenvpn.sh
# to allow the boot process to contiune while openvpn starts in background.
/sbin/startopenvpn.sh &
}}}

Script 2: {{{/sbin/startopenvpn.sh}}}. Questo script controlla se la data e` maggiore del 2005, se non lo e` suppone che l'orologio non sia stato impostato, ed esegue ntpclient per impostare la data. Ripete questo ciclo all'infinito fino a che non ottiene una data sensata, quindi lancia openvpn ed esce. Non ha senso secondo me prevedere di uscire dopo un certo numero di cicli falliti, perche` se la data non e` a posto openvpn non funzionera` MAI. Quindi, a meno che il tempo non torni indietro e non torniamo al 2005, non ha senso lanciare openvpn se l'anno dell'orologio non e` almeno 2006. Dal momento che lo script gira in background, non inficia il processo di boot.
{{{
#!/bin/sh
# A simple script to run ntpclient multiple times to set the date
# before running openvpn. Useful on devices that do not have an RTC
# and so don't have the right time and date set at boot time.
while [ $((`date +%Y` < 2005 )) = 1 ];
do
    echo "Date not set. Running ntpclient again";
    /usr/sbin/ntpclient -c 1 -s -h pool.ntp.org;
    sleep 10s;
done
echo "Date correctly set. Starting openvpn now"

# loading tun kernel module
Line 10: Line 33:

# lancio openvpn con logging su syslog. Se ho piu` di una vpn, basta inserire
# piu` di una riga di lancio.
# starting openvpn.
Line 19: Line 40:
 * Ricorda di rendere eseguibile lo script di init appena creato, altrimenti non funziona molto bene.
 * Ricorda che Openvpn per funzionare vuole che gli orologi degli endpoint siano almeno all'incirca sincronizzati, quindi e` necessario installare un ntp client (pacchetto "ntpclient") e configurarlo sul WRT, altrimenti al boot l'orologio e` al 1/1/2000 e non funziona nulla.
 * Ricorda di rendere eseguibili gli script altrimenti non funziona molto bene.
 * Ricorda che devi avere "ntpclient" installato (c'e` il pacchetto apposta)

OpenVpn sul WRT

Per il setup generico di Openvpn, fare riferimento alla configurazione per Linux generica. Su Openwrt, installare il pacchetto "openvpn".

Il problema con openvpn sul wrt e` che questo non dispone di un orologio realtime che funzioni a macchina spenta, quindi al boot la data e` impostata al 1/1/2000. Questo impedisce a Openvpn di funzionare. Per risolvere il problema, e` necessario impostare l'ora e la data PRIMA di lanciare openvpn.

Questi due script dovrebbero risolvere il problema, credo.

Script 1: /etc/init.d/S55openvpn. Questo ha solo lo scopo di lanciarne un altro in background per non fermare il processo di boot.

# this script will simply detach the shell script /sbin/startopenvpn.sh
# to allow the boot process to contiune while openvpn starts in background.
/sbin/startopenvpn.sh &

Script 2: /sbin/startopenvpn.sh. Questo script controlla se la data e` maggiore del 2005, se non lo e` suppone che l'orologio non sia stato impostato, ed esegue ntpclient per impostare la data. Ripete questo ciclo all'infinito fino a che non ottiene una data sensata, quindi lancia openvpn ed esce. Non ha senso secondo me prevedere di uscire dopo un certo numero di cicli falliti, perche` se la data non e` a posto openvpn non funzionera` MAI. Quindi, a meno che il tempo non torni indietro e non torniamo al 2005, non ha senso lanciare openvpn se l'anno dell'orologio non e` almeno 2006. Dal momento che lo script gira in background, non inficia il processo di boot.

# A simple script to run ntpclient multiple times to set the date
# before running openvpn. Useful on devices that do not have an RTC
# and so don't have the right time and date set at boot time.
while [ $((`date +%Y` < 2005 )) = 1 ];
do
    echo "Date not set. Running ntpclient again";
    /usr/sbin/ntpclient -c 1 -s -h pool.ntp.org;
    sleep 10s;
done
echo "Date correctly set. Starting openvpn now"

# loading tun kernel module
insmod tun
# starting openvpn.
cd /etc/openvpn
openvpn --daemon <nome del tunnel> --config <file di config> &

Il nome del tunnel compare in syslog, ed e` per riferimento. Il file di config puo` avere path assoluto oppure essere solo il nome del file stesso, in questo caso viene cercato nella directory corrente.

  • Ricorda di rendere eseguibili gli script altrimenti non funziona molto bene.
  • Ricorda che devi avere "ntpclient" installato (c'e` il pacchetto apposta)

OpenWrt/WhiteRussian/OpenVpn (last edited 2009-04-12 17:33:26 by localhost)