Risposte:
network-manager-openvpnnon fornisce tale funzionalità, è necessario utilizzare openvpndirettamente.
Passalo --script-security 2 --up /path/to/your/scriptquando 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.she 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 upscript viene eseguito come root. Se non hai specificato a Usere Groupimpostazione, OpenVPN eseguirà anche script come downroot.
openvpndirettamente. 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/openvpnfile:
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].confe i /etc/default/openvpnfile sono configurati correttamente, openvpn può essere avviato o arrestato con:
sudo service openvpn start
sudo service openvpn stop
Altre opzioni utili disponibili per service openvpnincludere 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>