Risposte:
network-manager-openvpn
non fornisce tale funzionalità, è necessario utilizzare openvpn
direttamente.
Passalo --script-security 2 --up /path/to/your/script
quando ti connetti. Se stai utilizzando un file di configurazione situato in /etc/openvpn/
, aggiungi le righe successive al tuo file di configurazione:
script-security 2
# run /etc/openvpn/up.sh when the connection is set up
up /etc/openvpn/up.sh
Dalla manpage OpenVPN :
--script-security level [metodo] Questa direttiva offre un controllo a livello di policy sull'utilizzo di OpenVPN di programmi e script esterni. I valori di livello inferiore sono maggiori valori più restrittivi e più elevati sono più permissivi. Impostazioni per livello: 0 - Assolutamente nessuna chiamata a programmi esterni. 1 - (impostazione predefinita) chiama solo gli eseguibili incorporati come ifconfig, ip, route o netsh. 2 - Consenti la chiamata di eseguibili integrati e definiti dall'utente script. 3 - Consentire il passaggio delle password agli script via ambientale variabili (potenzialmente non sicure). --up cmd Comando Shell da eseguire dopo l'apertura corretta del dispositivo TUN / TAP (pre - modifica UID utente). Lo script up è utile per specificare comandi route che instradano il traffico IP destinato al privato sottoreti esistenti all'altra estremità della connessione VPN in la galleria. Ordine di esecuzione degli script --up Eseguito dopo il bind del socket TCP / UDP e TUN / TAP aperti. --down Eseguito dopo la chiusura di TCP / UDP e TUN / TAP.
Ci sono più eventi per l'esecuzione degli script, quelli possono essere trovati nella pagina del manuale .
Crea /etc/openvpn/up.sh
e concedi le autorizzazioni di esecuzione (diciamo 755 o 700). Contenuto di esempio per l'aggiunta di un indirizzo IPv6 e di un percorso (mostrato a scopo didattico, non copiarlo direttamente):
#!/bin/sh
# add an IPv6 address to device $dev (environment variable)
ip -6 addr add 2001:db8::1:2/112 dev $dev
# and the IPv6 route for this net using gateway 2001:db8::1
ip -6 route add 2001:db8::1:0/112 via 2001:db8::1 dev $dev
Si noti che questo up
script viene eseguito come root. Se non hai specificato a User
e Group
impostazione, OpenVPN eseguirà anche script come down
root.
openvpn
direttamente. Durante l'impostazione di un server, ho notato che OpenVPN tenterà di riconnettersi quando il server si è spento. Non sono sicuro se OpenVPN continua a provare quando l'interfaccia di rete non funziona.
Alla domanda: "Come posso associare uno script a OpenVPN in modo che venga eseguito quando la VPN è connessa correttamente?" Voglio sottolineare che Lekensteyn ha fornito una risposta eccellente . Ma, al momento in cui la sua risposta fu composta, mancava un po 'di chiarezza su come gli argomenti della riga di comando di openvpn dovevano essere forniti per avviare openvpn su una macchina Ubuntu, specialmente in modo che funzioni allo stesso modo dopo il riavvio.
Naturalmente, è possibile avviare openvpn da una riga di comando con qualsiasi opzione legale disponibile. Ma, su una macchina Ubuntu, se si desidera avviare openvpn con gli stessi argomenti della riga di comando dopo un riavvio, dovrebbero prendere in considerazione la modifica del file /etc/default/openvpn
. Esamina le seguenti righe:
# Optional arguments to openvpn's command line
OPTARGS=""
Dalla pagina man della community di openvpn in poi--script-security
--script-livello di sicurezza Questa direttiva offre un controllo a livello di policy sull'utilizzo di OpenVPN da parte di utenti esterni programmi e script. I valori di livello inferiore sono più restrittivi, più alti i valori sono più permissivi. Impostazioni per livello: 0 - Assolutamente nessuna chiamata a programmi esterni. 1 - (impostazione predefinita) chiama solo gli eseguibili integrati come ifconfig, ip, route, o netsh. 2 - Consenti la chiamata di eseguibili integrati e script definiti dall'utente. 3 - Consentire il passaggio delle password agli script tramite variabili ambientali (potenzialmente non sicuro). Le versioni OpenVPN prima della v2.3 supportavano anche un flag di metodo che indicava come OpenVPN dovrebbe chiamare script e comandi esterni. Questo potrebbe essere o eseguire o sistema. A partire da OpenVPN v2.3, questo flag non è più accettato. Nella maggior parte dei * nix ambienti l'approccio execve () è stato usato senza problemi. Alcune direttive come --up consentono di passare le opzioni allo script esterno. In questi casi, assicurarsi che il nome dello script non contenga spazi o il parser di configurazione si strozzerà perché non è in grado di determinare dove si trova lo script il nome termina e iniziano le opzioni di script.
Combinato con una sezione abbreviata su --up
--up cmd Eseguire il comando cmd dopo aver aperto correttamente il dispositivo TUN / TAP (modifica UID preutente). cmd consiste in un percorso di script (o programma eseguibile), facoltativamente seguito per argomenti. Il percorso e gli argomenti possono essere tra virgolette singole o doppie e / o fuggito usando una barra rovesciata e dovrebbe essere separato da uno o più spazi.
Sul mio computer con un server.conf openpvn, ho le seguenti righe nel mio /etc/default/openvpn
file:
OPTARGS="
--script-security 2
--up /etc/openvpn/nat.sh
"
Per inciso, nat.sh imposta la traduzione dell'indirizzo di rete per instradare il traffico di rete privata dai client openvpn a Internet pubblico; che è buono per quando non si ha fiducia in un punto di accesso WIFI pubblico.
Oltre a consentire il riavvio come previsto dopo un riavvio, quando /etc/openvpn/[client or server].conf
e i /etc/default/openvpn
file sono configurati correttamente, openvpn può essere avviato o arrestato con:
sudo service openvpn start
sudo service openvpn stop
Altre opzioni utili disponibili per service openvpn
includere cond-restart,force-reload,reload, restart,soft-restart, start, status, stop
.
Dato che è un thread piuttosto vecchio, non sono sicuro che sia ancora interessante. Se desideri comunque utilizzare NetworkManager per connetterti a una VPN, puoi aggiungere una semplice regola udev come quella:
KERNEL=="vpn0", RUN+="/PATH_TO_THE_SCRIPT/SCRIPT_NAME"
Questo dovrebbe eseguire qualsiasi script dopo la creazione della VPN.
Mi sono imbattuto nella risposta nella mia ricerca per risolvere questo problema e ho scoperto che la soluzione migliore è (utilizzando il server openvpn) come segue:
Crea uno script da eseguire:
# nano /etc/openvpn/up.sh
<file:contents>
#!/bin/sh
# export >> /var/log/openvpn/openvpn-up.log
D=`date "+%Y-%m-%d %H:%M"`
echo "[$D] ($local_port_1:$proto_1) $X509_0_CN: $trusted_ip => $ifconfig_pool_remote_ip" >> /var/log/openvpn/openvpn-up.log
</file>
Aggiungi le seguenti righe nella configurazione di openvpn (di solito /etc/openvpn/server.conf
). Nella risposta sopra è stato utilizzato su e giù, che vengono utilizzati all'avvio (riavvio) del server. La direttiva client-connect (e client-disconnect) viene utilizzata quando il client si connette (si disconnette).
# nano /etc/openvpn/server.conf
<file:add>
script-security 2
client-connect /etc/openvpn/up.sh
</file>