Réponses:
pkill -SIGTERM -f 'openvpn --daemon --conf $ OPENVPNCONFFILE'
la commande pkill vous permet de signaler un processus basé sur le nom ou d'autres attributs
Cela enverra SIGTERM à l'openvpn, ce qui le fermera et fermera gracieusement l'interface tun. Vous devrez peut-être modifier la section après -f pour qu'elle corresponde à la façon dont vous avez démarré la connexion openvpn.
J'ai trouvé cela dans la section Signaux de la page de manuel openvpn.
SIGINT, SIGTERM
Causes OpenVPN to exit gracefully.
Déterminez l'interface virtuelle avec ifconfig
:
tap0 Link encap:Ethernet HWaddr 32:28:a4:04:34:cc
inet addr:172.22.18.14 Bcast:172.22.18.255 Mask:255.255.255.0
UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1
RX packets:0 errors:0 dropped:0 overruns:0 frame:0
TX packets:0 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:100
RX bytes:0 (0.0 B) TX bytes:0 (0.0 B)
et arrêtez-le avec:
sudo ifconfig tap0 down
Voici le script init que j'ai écrit pour RedHat:
#! /bin/bash
#
# openvpn-client Start/Stop the openvpn client
#
# chkconfig: 2345 90 60
# description: start openvpn client at boot
# processname: openvpn
# Source function library.
. /etc/init.d/functions
daemon="openvpn"
prog="openvpn-client"
conf_file="/vagrant/vpn/client-dept18-payment.ovpn"
start() {
echo -n $"Starting $prog: "
if [ -e /var/lock/subsys/openvpn-client ] && [ $(pgrep -fl "openvpn --config /vagrant/vpn/client-dept18-payment.ovpn" | wc -l) -gt 0 ]; then
echo_failure
echo
exit 1
fi
runuser -l root -c "$daemon --config $conf_file >/dev/null 2>&1 &" && echo_success || echo_failure
RETVAL=$?
echo
[ $RETVAL -eq 0 ] && touch /var/lock/subsys/openvpn-client;
return $RETVAL
}
stop() {
echo -n $"Stopping $prog: "
pid=$(ps -ef | grep "[o]penvpn --config $conf_file" | awk '{ print $2 }')
kill $pid > /dev/null 2>&1 && echo_success || echo_failure
RETVAL=$?
echo
[ $RETVAL -eq 0 ] && rm -f /var/lock/subsys/openvpn-client;
return $RETVAL
}
status() {
pgrep -fl "openvpn --config /vagrant/vpn/client-dept18-payment.ovpn" >/dev/null 2>&1
RETVAL=$?
if [ $RETVAL -eq 0 ]; then
pid=$(ps -ef | grep "[o]penvpn --config $conf_file" | awk '{ print $2 }')
echo $"$prog (pid $pid) is running..."
else
echo $"$prog is stopped"
fi
}
restart() {
stop
start
}
case "$1" in
start)
start
;;
stop)
stop
;;
restart)
restart
;;
status)
status
;;
condrestart)
[ -f /var/lock/subsys/openvpn-client ] && restart || :
;;
*)
echo $"Usage: $0 {start|stop|status|restart|condrestart}"
exit 1
esac
alors vous pouvez l'utiliser comme d'habitude:
# /etc/init.d/openvpn-client start
Starting openvpn-client: [ OK ]
# /etc/init.d/openvpn-client start
Starting openvpn-client: [FAILED]
# /etc/init.d/openvpn-client status
openvpn-client (pid 5369) is running...
# /etc/init.d/openvpn-client stop
Stopping openvpn-client: [ OK ]
# /etc/init.d/openvpn-client stop
Stopping openvpn-client: [FAILED]
# /etc/init.d/openvpn-client status
openvpn-client is stopped
# /etc/init.d/openvpn-client restart
Stopping openvpn-client: [ OK ]
Starting openvpn-client: [ OK ]
# /etc/init.d/openvpn-client status
openvpn-client (pid 5549) is running...
Je n'ai jamais utilisé de rayon libre, mais je connais un problème similaire dans OpenVPN. Si la connexion est démarrée à partir de la ligne de commande, le client VPN reste actif à l'invite ou se retire en arrière-plan, mais il n'y a aucune commande pour arrêter explicitement la connexion.
Sous Linux, le seul moyen d'arrêter la connexion est d'utiliser une commande "kill" ou "killall". Peut être similaire pour les connexions à rayon libre.
Je pensais juste mettre à jour mon commentaire avec une réponse plus complète (qui peut ne pas être pertinente, étant donné que je ne connais pas le rayon libre) ..
J'ai utilisé une distribution Debian Linux et installé le paquet openvpn. La configuration du client dans Debian peut être lancée via la ligne de commande, ce qui conduit à ce problème de n'avoir apparemment aucun moyen de terminer / gérer la connexion ...
J'ai appris aujourd'hui cependant qu'il y a un script /etc/init.d/openvpn qui s'exécute au démarrage et si je place le fichier de configuration openvpn dans / etc / openvpn / (l'extension de fichier doit être .conf), je peux contrôler la connexion en utilisant /etc/init.d/openvpn stop et etc / init.d / openvpn start (ou "service openvpn stop").
Le fait de placer le fichier de configuration dans / etc / openvpn / fait également apparaître automatiquement le tunnel VPN au démarrage. Il se reconnecte également automatiquement après la déconnexion.
sudo pkill openvpn