Antworten:
pkill -SIGTERM -f 'openvpn --daemon --conf $ OPENVPNCONFFILE'
Mit dem Befehl pkill können Sie einen Prozess basierend auf dem Namen oder anderen Attributen signalisieren
Dadurch wird SIGTERM an openvpn gesendet, wodurch das Tun-Interface ordnungsgemäß beendet und geschlossen wird. Möglicherweise müssen / müssen Sie den Abschnitt nach -f so ändern, dass er der Art und Weise entspricht, wie Sie die openvpn-Verbindung gestartet haben.
Ich habe dies im Abschnitt "Signale" der openvpn-Manpage gefunden.
SIGINT, SIGTERM
Causes OpenVPN to exit gracefully.
Bestimmen Sie die virtuelle Schnittstelle mit 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)
und herunterfahren mit:
sudo ifconfig tap0 down
Hier ist das Init-Skript, das ich für RedHat geschrieben habe:
#! /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
dann können Sie es wie gewohnt verwenden:
# /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...
Ich habe noch nie freien Radius verwendet, bin aber mit einem ähnlichen Problem in OpenVPN vertraut. Wenn die Verbindung über die Befehlszeile gestartet wird, bleibt der VPN-Client entweder an der Eingabeaufforderung am Leben oder er zieht sich in den Hintergrund zurück, es gibt jedoch keinen Befehl zum expliziten Beenden der Verbindung.
Unter Linux kann die Verbindung nur mit einem Befehl "kill" oder "killall" unterbrochen werden. Könnte für Verbindungen mit freiem Radius ähnlich sein.
Ich dachte nur, ich würde meinen Kommentar mit einer ausführlicheren Antwort aktualisieren (was möglicherweise nicht relevant ist, wenn man bedenkt, dass ich nichts über den freien Radius weiß).
Ich habe eine Debian Linux-Distribution verwendet und das openvpn-Paket installiert. Die Client-Konfiguration in Debian kann über die Befehlszeile gestartet werden, was zu dem Problem führt, dass es anscheinend keine saubere Möglichkeit gibt, die Verbindung zu beenden / zu verwalten ...
Ich habe heute jedoch erfahren, dass es ein /etc/init.d/openvpn-Skript gibt, das beim Booten ausgeführt wird. Wenn ich die openvpn-Konfigurationsdatei in / etc / openvpn / ablege (die Dateierweiterung muss .conf sein), kann ich die Verbindung steuern mit /etc/init.d/openvpn stop und etc / init.d / openvpn start (oder "service openvpn stop").
Wenn Sie die Konfigurationsdatei in / etc / openvpn / ablegen, wird der VPN-Tunnel beim Booten automatisch gestartet. Es wird auch nach dem automatischen Trennen automatisch wieder verbunden.
sudo pkill openvpn