Come posso associare uno script a OpenVPN in modo che venga eseguito quando la VPN è connessa correttamente?
Migliore risposta
network-manager-openvpn
non fornisce tale funzionalità, devi usare openvpn
direttamente.
Passa --script-security 2 --up /path/to/your/script
ad esso durante la connessione. Se stai utilizzando un file di configurazione che si trova 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 di OpenVPN:
--script-security level [method] This directive offers policy-level control over OpenVPN’s usage of external programs and scripts. Lower level values are more restrictive, higher values are more permissive. Settings for level: 0 -- Strictly no calling of external programs. 1 -- (Default) Only call built-in executables such as ifconfig, ip, route, or netsh. 2 -- Allow calling of built-in executables and user-defined scripts. 3 -- Allow passwords to be passed to scripts via environmental variables (potentially unsafe). --up cmd Shell command to run after successful TUN/TAP device open (pre --user UID change). The up script is useful for specifying route commands which route IP traffic destined for private subnets which exist at the other end of the VPN connection into the tunnel. Script Order of Execution --up Executed after TCP/UDP socket bind and TUN/TAP open. --down Executed after TCP/UDP and TUN/TAP close.
Ci sono più eventi per l'esecuzione dello script, quelli possono essere trovati nella pagina di manuale.
Crea /etc/openvpn/up.sh
e dargli le autorizzazioni di esecuzione (ad esempio, 755 o 700). Esempio di contenuto 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
Nota che questo up
lo script viene eseguito come root. Se non hai specificato un User
e Group
impostazione, OpenVPN eseguirà script come down
anche come root.