1183
Comment:
|
2492
|
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)