使用 vpnc 进行永久 VPN 连接

使用 vpnc 进行永久 VPN 连接

我需要知道如何在 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

相关内容