在发出停止 pptpd 的命令后,pptpd 不会停止,直到所有 VPN 客户端都断开连接。以下代码显示发出停止命令后 pptpd 仍在运行。
ubuntu@ip-10-138-31-87:~$ sudo /etc/init.d/pptpd stop
Stopping PPTP: pptpd.
ubuntu@ip-10-138-31-87:~$ ps -ef |grep pptpd
root 5524 1 0 21:46 ? 00:00:00 pptpd [<myIp>:8544 - 0000]
root 5525 5524 0 21:46 pts/1 00:00:00 /usr/sbin/pppd local file /etc/ppp/pptpd-options 115200 192.168.0.1:192.168.0.234 ipparam <myIP> plugin /usr/lib/pptpd/pptpd-logwtmp.so pptpd-original-ip <myIP>
ubuntu 5564 4668 0 21:50 pts/4 00:00:00 grep --color=auto pptpd
手动断开所有活动的 vpn 客户端连接后,pptpd 便会停止。有没有办法在有活动的 vpn 客户端连接的情况下强制停止 pptpd?
答案1
花费足够的时间来正确编写脚本,您应该能够使用 init 脚本中的 tcpkill 或 cutter 命令,以便在尝试停止守护进程之前关闭连接(假设您还没有尝试使用 kill 命令,并且这里发生了某种形式的自动重生,这可能会限制其有效性)。
http://www.cyberciti.biz/tips/cutting-the-tcpip-network-connection-with-cutter.html http://www.cyberciti.biz/howto/question/linux/kill-tcp-connection-using-linux-netstat.php
答案2
killall pppd
这显然会终止所有 ppp 连接,包括 pptp 客户端
现在我想我们都不再使用 ppp 拨号,所以您不会冒险中断任何活动的互联网连接,所以这对您来说应该有用。
或者,你可以做一个
ps -aux | grep ppp
并获取与 pptp 连接关联的 pid 列表并逐一手动终止它们。