在Linux中通过命令行openVPN断开连接

有没有办法断开free-radius与shell命令行build立的openvpn连接?

我有关于openvpn连接的所有信息:

  • 用户名
  • 客户端IP
  • AccountSeassionID

pkill -SIGTERM -f“openvpn –daemon –conf $ OPENVPNCONFFILE'

pkill命令允许您基于名称或其他属性发出进程信号

这会将SIGTERM发送到openvpn,使其正常退出并closurestun接口。 您可能/将需要修改-f之后的部分,以匹配您启动openvpn连接的方式。

我在openvpn手册页的Signals部分find了这个。

SIGINT, SIGTERM Causes OpenVPN to exit gracefully. 

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) 

并closures它:

 sudo ifconfig tap0 down 

这里是我为RedHat编写的init脚本:

 #! /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 

那么你可以像往常一样使用它:

 # /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... 

我从来没有使用过free-radius,但是我对OpenVPN中类似的问题很熟悉。 如果连接是从命令行启动的,则VPN客户端或者在提示中保持活动状态,或者后退到后台,但没有命令显式停止连接。
在Linux下,停止连接的唯一方法是使用“kill”或“killall”命令。 可能类似于自由半径连接。

只是以为我会用更全面的答案来更新我的评论(这可能不相关,考虑到我不知道自由半径)。

我一直在使用Debian Linux发行版,并安装了openvpn软件包。 在Debian中的客户端configuration可以通过命令行启动,这导致了一个似乎没有完整的方式来终止/pipe理连接的问题…

我今天得知,有一个在启动时运行的/etc/init.d/openvpn脚本,如果将openvpnconfiguration文件放在/ etc / openvpn /中(文件扩展名必须是.conf),我可以控制连接通过使用/etc/init.d/openvpn stop,etc / init.d / openvpn start(或者“service openvpn stop”)。

将configuration文件放在/ etc / openvpn /中也会导致VPN隧道在启动时自动启动。 它也自动断开连接后重新连接。