通过VPNC访问CISCO的VPN服务过程记录

来源:互联网 发布:淘宝店货款多久到账 编辑:程序博客网 时间:2024/06/15 15:24

Ø  背景:

公司需要在centos云主机上访问电信客户内部网络的代码,使用jenkins服务器把代码通过svn下载到本地,然后做静态代码检查和动态测试。

Ø  总结:

1、遇到云主机问题,如果在qq群里没有人解决,就发邮件到RD-Cloud-Service@asiainfo.com,可以得到更多的关注,问题也会有及时回复。给公司云主机集成服务部门点赞。

2、遇到问题不要陷入,不要丧失信心,打开思路,有些事情一开始思路就错了,通过电话支持,度娘等途径获取资源,佛家一棍棒喝醐醍灌顶指的就是点拨。

3、多学习,一叶蔽目不见泰山,有时一个小小坑就足以让人翻死在沟里了。

Ø  难点和解决思路:

1、没有使用vpnclient在Linux上部署过,之前部门使用vpnclient在window7上部署遇到过诸多问题,后面发现版本问题,折腾了许久才解决,此次部署会遇到什么困难一点底都没有。

思路1:下载linux版本的vpnclient部署(http://helpdesk.ugent.be/vpn/en/akkoord.php)

我的centos是CentOS Linux release7.2.1511 (Core) ,参考这个帖子(http://blog.csdn.net/my_vips/article/details/18707505),执行到编译步骤就废了,出现各种内核头文件缺少,尝试下载,修改路径,一路坎坷,死活编译不过,能力有限,看来这条路是走不通了。此时变换思路想,访问cisio难道就一定要vpnclient吗?赶紧度娘一把,发现可以使用vpnc,pptp等方式。

思路2:使用vpnc或pptp部署客户端访问vpn

vpnc安装参考这个帖子(http://www.cnblogs.com/xinus/p/centos_vpnc_conf.html),很顺利一步步都操作下来,启动服务执行vpnc,咔......,过了一分钟,返回了vpnc: no response from target,什么鬼?难道vpnc访问不了,把几个帖子都反复看了几遍,没有头绪,好吧,换pptp。

pptp安装参考这个帖子(http://blog.csdn.net/kuailedesky/article/details/41551077),发现ppp服务已经装上了,把pptpd和epel-release服务装上,参考着步骤搞下来,过程不想说了,结果还是一样,访问不通。静静喝杯茶开始思考人品了

思路3:如果linux端不行,通过windows2008系统总该可以了吧,(采用这个策略,需要通过异步同步代码,即通过win2008把代码从电信内网下载到本地,再上传到内网的svn服务器,jenkins服务器再去获取。这个策略是不得已才采用,因为中间有很多弊端,另外还要添加工作量开发异步同步代码的脚本)

把之前在window7上成功安装的vpnclient上传到window2008上部署上后,启动服务连接,返回了个412的错误,表示对端不通,把防火墙关闭,也不行,怪了,服务器IP可以ping通,但是服务无法提供,多半是端口的问题,使用netstat -ano和本地比对了端口使用,确实有差异,把两个环境再比较一遍,猜测问题就出在网络路由或防火墙端口限制上,通过qq咨询了云服务集成支持工程师,都没有给出解决办法。没辙了,把现象描述一把,整了个邮件发给云主机集成服务部门寻求支持,然后开始开发异步同步代码的脚本,等着回结果。

第二天周五早上过来打开邮箱,惊喜发现回复邮件了,果不其然,端口问题,赶紧把另外一台linux服务器的IP也一并添加,放开端口访问限制。等到当天下午回复端口都放开了,带着激动的心情再次尝试访问vpn服务,通了,通了,通了!linux 和 window2008都可以访问哈!

Lab防火墙开放IP的对外IPsecVPN连接的端口:

Tcp 1721

Tcp  1723

Udp 500

Udp 4500

 

2、电信局方提供的vpn用户并行访问限制数=3,意味着jenkins服务器不能长时间连接vpnc占用有限的资源,而jenkins工程默认第一步都是执行源码更新,没法在工程执行前执行shell命令。

思路1、jenkins应该也是通过svn命令进行更新,如果尝试重定义svn命令,应该可以解决问题。

在jenkins用户下的.bash_profile文件里定义svn,判断如果访问电信IP则先拨通vpn服务,否则就默认直接使用vpn。修改完文件,在jenkins创建了个工程,启动工程后,发现没有生效。把工程执行过程日志翻出来看了下,发现jenkins是直接使用内置的svn插件,通过一个jar包调用实现,悲剧了,这步执行不通。

思路2、jenkins工程执行触发器可以通过工程与工程之间的关联进行依赖触发

先创建A工程,用来拨通vpn,然后触发B工程,B工程在更新完源码后,在第一步构建步骤中添加vpnc-disconnect命令,把vpn访问端口,这样就可以实现vpn资源使用最小化。

备注:直接使用jenkins用户是无法执行vpnc和vpnc-disconnect命令,需要使用sudo,但是sudo又需要输入root密码,这个问题可以通过在/etc/sudoers文件里添加如下两条命令,即jenkins通过sudo执行这两个命令可以不需要输入root密码。

jenkins   ALL=NOPASSWD: /usr/sbin/vpnc
jenkins   ALL=NOPASSWD: /usr/sbin/vpnc-disconnect

3、vpn一旦连上,受到路由限制,在外网就无法访问云主机。

一开始就担心vpn万一拨上去就无法通过外网访问云主机了(后来验证也确实存在这样的问题),在安装vpnclient前就先了云主机集成服务工程师通了电话咨询,后来给了思路,可以找个同网段的云主机,再用ssh或telnet访问。


0 0
原创粉丝点击