我需要知道如何在 Centos 5.6 上使用 vpnc 与 Cisco VPN 建立 VPN 连接。我可以启动连接,但一段时间后运行时,vpnc 进程不存在于进程列表中
# pgrep vpnc
我不知道这是因为连接本身中断还是其他什么原因?如果是这样,那么我怎样才能使连接永久保持?
配置文件如下所示
## generated by pcf2vpnc
IPSec ID xxxx
IPSec gateway xx.xx.xx.xx
IPSec secret xxxxx
Xauth username xxxxxx
Xauth password xxxxxx
我尝试了这篇文章中的解决方案这里但这并没有解决问题!
有人能帮助我吗?
提前致谢,
答案1
没有特别相关vpnc
,但我会提供我能想到的...
通常,客户端 VPN 连接会因为隧道中有一段时间不活动而中断。解决此问题的最简单方法是将连接保留ping -t
到隧道另一端的已知设备。
否则,如果您的vpnc
进程出现故障,可能是因为 VPN 端点超载,任一端点正在发送数据包,而另一端点认为这些数据包无效,因此将其关闭,或者vpnc
表面上出现故障。查看其相关日志文件中是否提到任何内容。
需要指出的是,据我了解,这vpnc
是一个客户工具,而不是服务/守护进程。对于您的端点,使用更面向服务的工具可能更合适(或者甚至是便宜的硬件站点到站点网关/防火墙/路由器)。不确定哪些基于软件的解决方案可以做到这一点。
剩下的选择是编写脚本/编码您的流程,以便它们在每个工作单元之前检查目标服务器地址和/或进程是否存在,如果未找到则vpnc
启动。vpnc
但实际上,硬件设备应该用于永久连接。您可以选择一个基本的 Linksys/Netgear/D-Link/等设备,这些设备可以以足够低的成本使用基本协议。
答案2
我已经编写了一个脚本来解决这个问题。
Linux vpnc - 如何在 vpnc 中定义特定的 tunX 号码
也许你想尝试进行必要的调整,例如:
#!/bin/bash
# Run script as # nohup ./vpn-monitor.sh /dev/null 2>&1 &
vpn_clientA(){
vpnName="clientA"
endpoint="10.10.10.10" # endpoint1 inside tunnel
endpoint2="10.20.30.40" # endpoint2 inside tunnel
count=$( ping -c 3 $endpoint | grep icmp* | wc -l )
count2=$( ping -c 3 $endpoint2 | grep icmp* | wc -l )
if [ $count -eq 0 -a $count2 -eq 0 ] # Echo reply not received.
then
# Ping failed
echo "Ping FAILED $(date)" >> /var/log/vpnc/$vpnName.log
# Sending email notification
echo "Ping for $endpoint FAILED! More info /var/log/vpnc/$vpnName.log " | mail -s "VPN $vpnName failed " [email protected]
# restart connection
# pkill vpnc
/usr/sbin/vpnc /etc/vpnc/vpn_clientA --local-port 0 >> /var/log/vpnc/$vpnName.log &
else
echo "Ping replied $(date)" >> /var/log/vpnc/$vpnName.log
fi
}
while : # infinite cycle
do
# call function every 30 seconds
vpn_clientA
sleep 30
done