Câu trả lời:
pkill -SIGTERM -f 'openvpn --daemon --conf $ OPENVPNCONFFILE'
lệnh pkill cho phép bạn báo hiệu một quá trình dựa trên tên hoặc các thuộc tính khác
Điều này sẽ gửi SIGTERM đến openvpn khiến nó thoát ra một cách duyên dáng và đóng giao diện điều chỉnh. Bạn có thể / sẽ cần sửa đổi phần sau -f để khớp với cách bạn bắt đầu kết nối openvpn.
Tôi tìm thấy điều này trong phần Tín hiệu của trang man openvpn.
SIGINT, SIGTERM
Causes OpenVPN to exit gracefully.
Xác định giao diện ảo với 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)
và tắt nó với:
sudo ifconfig tap0 down
Đây là tập lệnh init mà tôi đã viết cho RedHat dựa trên:
#! /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
sau đó bạn có thể sử dụng nó như bình thường:
# /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...
Tôi chưa bao giờ sử dụng bán kính tự do, nhưng tôi quen với một vấn đề tương tự trong OpenVPN. Nếu kết nối được bắt đầu từ dòng lệnh, thì máy khách VPN vẫn tồn tại trên dấu nhắc hoặc nó rút lui vào nền, nhưng không có lệnh dừng kết nối rõ ràng.
Trong Linux, cách duy nhất để dừng kết nối là bằng lệnh "kill" hoặc "killall". Có thể tương tự cho các kết nối bán kính tự do.
Chỉ cần nghĩ rằng tôi sẽ cập nhật nhận xét của mình bằng một câu trả lời đầy đủ hơn (có thể không liên quan, vì tôi không biết về bán kính tự do) ..
Tôi đã sử dụng bản phân phối Debian Linux và cài đặt gói openvpn. Cấu hình máy khách trong Debian có thể được khởi chạy thông qua dòng lệnh, điều này dẫn đến một vấn đề là dường như không có cách nào gọn gàng để chấm dứt / quản lý kết nối ...
Tôi đã học được ngày hôm nay mặc dù có tập lệnh /etc/init.d/openvpn chạy khi khởi động và nếu tôi đặt tệp cấu hình openvpn trong / etc / openvpn / (phần mở rộng tệp phải là .conf), tôi có thể kiểm soát kết nối bằng cách sử dụng /etc/init.d/openvpn stop và etc / init.d / openvpn start (hoặc "dịch vụ openvpn stop").
Đặt tệp cấu hình vào / etc / openvpn / cũng khiến đường hầm VPN tự động xuất hiện khi khởi động. Nó cũng kết nối lại sau khi ngắt kết nối tự động là tốt.
sudo pkill openvpn