好几没更新了,今天来讲讲一个PPTP访问×××的售前与交付实施的故事,今天直接上正文,不扯其他的情怀了。

 

 

逻辑拓扑示意图:

 

目前客户痛点简述:

客户在数据中心有一台服务器和一台思科1921-k9,接入国内BGP线路。目前因客户终端办公用户近期增量较大,虽然cisco-1921在成本上解决了拨入并发的问题,但访问www.salesforce.com延迟依旧过大,≥300ms已经对员工的办公效率造成了不同程度的影响,需立刻解决该问题。

 

目前访问延迟截图:

 

目前访问路径MTR截图:

 

需求设计思路:
1.新增一条国际出口

2.国内&国际双链路负载

3.解决DNS污染问题(各种传说中的防火墙)

 

优化后的架构图:

 

PS:新增一条国际出口,实现流量区别待遇(国内走国内、国际走国际)

 

 

依据需求与逻辑拓扑图涉及出来的流量走向图:

【红色箭头为国际侧的流量访问走向】

【黑色箭头为国内侧的流量访问走向】

 

 

在该项目中遇到的技术挑战:

1.    思科双链路如何NAT负载,使用传统的nat配合方法不可行

2.    如何做缺省路由扔国际,明细路由扔国内

3.    PPTP、L2TP over IPSEC--(mobile、PC)国内基于8.8.8.8DNS解析会被污染,如何解决?

 

 

写给做售前咨询的工程师————

       尤其是刚刚走上售前的工程师,大家一定要把思路从专注实施和解决问题上转向前端设计上,这一点我个人已经深深栽了好几个跟头,所以痛的教训大家一定要汲取。做售前你不能专注在实施上,这个会让你仍然是一个售后工程师的思维。所这个时候一定把前期的调研和架构设计目标做好做完成。不要仅仅只是满足功能,在这个期间很有可能就会忽略很多细节问题,这有可能就成为了方案中最“老鼠屎”的一个细节。

 

好了,不秀自己过去踩过的坑了。这里考虑到市面上有很多PPTP、L2TP、L2TP overipsec的配置方法都有些时日了,我这里也给大家再更新一版。这一版我多花一些时间介绍下,也希望后面看到市面上杂乱的配置方法的网工能节省更多的时间去学习更深。

 

1921-k9许可证情况:

 

 

OS固件版本:

CiscoIOS Software, C1900 Software (C1900-UNIVERSALK9-M), Version 15.4(3)M3

 

PS:注意,如果没有security 许可证,就不能配置关联***功能,截图如下:

 

献上2017年5月1日梳理并亲自验证后的PPTP的配置脚本

R(config)#aaanew-model  【启用3A认证策略】

R(config)#aaaauthentication ppp default local    【建立ppp认证策略】

R(config)#usernamecisco password 0 cisco       【建立登陆账号】         

R(config)#vpdnenable    【启用vpdn服务(外接称思科隐藏模式)】

R(config)#vpdn-grouppptp-***    【命名pptp-***的vpdn的服务】

R(config-vpdn)#accept-dialin     【接受拨入方式】

R(config-vpdn-acc-in)#protocolpptp   【如果写any,即l2tp 和 pptp 都可以用】

R(config-vpdn-acc-in)#virtual-template8

R(config-vpdn-acc-in)#exit

R(config-vpdn)#nol2tp tunnel authentication 【如果两个都需要使用,记住将L2TP的隧道认证关闭,否则L2TP无法正常拨入】

 

R(config)#iplocal pool ***_ip_pool_vpdn 172.25.7.1 172.25.7.254   【建立local pool 地址池】

R(config)#interfaceVirtual-Template8     【建立虚拟地址池】

R(config-if)#ipunnumbered FastEthernet0/0              【借用公网出接口、或者自定义lop接口均可】

R(config-if)#ipflow ingress

R(config-if)#encapsulationppp     【封装ppp】

R(config-if)#peerdefault ip address pool ***_ip_pool_vpdn  【联动本地定义的地址池】

R(config-if)#pppencrypt mppe auto

R(config-if)#pppipcp dns 8.8.8.8  【给拨入用户下发dns】

R(config-if)#pppauthentication chap pap ms-chap ms-chap-v2  【ppp认证方式】

R(config-if)#end

 

PS:有几项没有备注,在网络上查到的作用有很多,说实在的我也不知道怎么去测试去验证到底哪个说的是对的,这也说明了我确实很少上国外的网站去“原装”的文档,我得好好反省下自己了。至于到底什么干嘛用的,大家花点时间去看看资料去学习,不要去学别人做一个伸手党,因为你这样做了,你学到任何思想和思路。你仅仅只是技术的搬运工!!!遇到下次你还会手足无措!!!

 

 

L2TP的配置脚本:

PS:其实思科L2TP和PPTP的配置几乎完全一样,但有个小地方需要注意,否则你的pc和mobile会一直拨入不成功,这里只写区别,有利于大家去理解配置思路。避免养成复制和“傻瓜式”的贴配置,最后什么都不会的情况出现

R(config)#vpdn-grouppptp-***

R(config-vpdn)#accept-dialin

R(config-vpdn-acc-in)#protocolpptp   【如果写any,即l2tp 和 pptp 都可以用

R(config-vpdn-acc-in)#virtual-template8

R(config-vpdn-acc-in)#exit

R(config-vpdn)#nol2tp tunnel authentication 【如果两个都需要使用,记住将L2TP的隧道认证关闭,否则你拨入L2TP的时候会一直报错,PPTP正常可拨入

 

L2TPOVER IPSEC 的配置脚本我这里不更新了,我在网络上找了很多配置脚本并一一验证了确认可用,所以这里就不班门弄斧了,免得大家认为我就是想上主页。无意间又暴露出我自命清高的一面了。

 

 

好了,前面的配置都是配菜,而且是基本功,请一定要练好后再往下看,看我们如何集中解决那三个技术上的挑战,再列下遇到的技术挑战:

1.思科双链路如何NAT负载,使用传统的nat挂接口overload方法不可行

2.如何做缺省路由扔国际,明细路由扔国内

3.PPTP、L2TP over IPSEC--(mobile、PC)国内基于8.8.8.8DNS解析会被污染

 

 

列下解决思路:

1.思科双链路如何NAT负载,使用传统的nat挂接口overload方法不可行

解决方案:

       传统的配置方法:ip nat inside source list 100interface GigabitEthernet0/0 overload

 优化的配置方法:ip nat inside source route-mapisp1 interface GigabitEthernet0/0 overload

 

PS:不要问我为什么要这么做,自己去debug去google,去反复的观察数据流量的走向。这对于你才是最好的。我直接告诉你,那有什么意义

 

2.如何做缺省路由扔国际,明细路由扔国内?

解决方法:

       配置方法:ip route 0.0.0.0 0.0.0.0 118.184.5.1 name guoji

                        ip route 国内汇总后的路由表

http://download.jh.51idc.com:8000/shell  有个route.list的文件,打开就可以开始快乐的刷了

 

3.PPTP、L2TP over IPSEC--(mobile、PC)国内基于8.8.8.8DNS解析会被污染,如何解决?

解决方法:

       PC终端解决思路,直接把8.8.8.8扔到国际出口上,切勿在本地设置一些dns代理

       Mobile解决思路,在虚拟接口上设置PPP ipcp dns 8.8.8.8 下发给拨入user dns使用

 

PS:第三个问题是我们团队用了非常久的时间彻底解决,我们在配置配ipcp后,确实在首次拨入后dns获取没什么问题,但后续中断后执行第二次拨入后,就无法获取dns了。这个问题头疼了3天多,但仍然找不到解决办法。

 

补充,我们回到刚刚的PPTP/L2TP虚拟接口的配置文件上:

R(config)#interfaceVirtual-Template8     【建立虚拟地址池】

R(config-if)#ipunnumbered FastEthernet0/0               【借用公网出接口、或者自定义lop接口均可】

R(config-if)#ipflow ingress

R(config-if)#encapsulationppp     【封装ppp】

R(config-if)#peer default ipaddress pool ***_ip_pool_vpdn   【联动本地定义的地址池】

R(config-if)#pppencrypt mppe auto

R(config-if)#pppipcp dns 8.8.8.8  【给拨入用户下发dns】

R(config-if)#pppauthentication chap pap ms-chap ms-chap-v2  【ppp认证方式】

R(config-if)#end

 

注意我标红的一段,别问我怎么想到的,其实我也是被客户逼的,到处再机会下手解决问题!!

R(config-if)#peerdefault ip address ?

  dhcp      Use DHCP proxy client mechanism to allocate a peer IP address

  dhcp-pool Use local DHCP pools to allocate a peer IP address

  pool      Use IP pool mechanism to allocate a peer IP address

 

我们在前面调用的方式是基于pool的方式,大家也看到可以基于DHCP,所以这里我们在全局新增DHCP配置:
ip dhcp pool ***

 network 172.25.7.0 255.255.255.0

 dns-server 8.8.8.8

 

PS:非常的简单,相当于我们利用DHCP服务去做分发,也不要问我为什么这么简单前面在方案设计上没有想到,因为我也是一个初来乍到的售前,所以很多实施上的潜在问题我根本没法考虑到,所以对不起,我坑了!!

 

最后测试,拨入成功:

 

 

回到我们测试原来的网站:www.salesforce.com

统计与汇总:

未优化的延迟:319ms

优化后的延迟:243ms

延迟优化空间:76ms

 

优化后的路径MTR截图:

 

等等,最后还有一个问题没有确认噢,就是国内的流量国内进出、国际的流量国际进出。

 

那现在我们来测试下:

 

访问我们大腾讯的官网:www.qq.com

ipip.net查看:

 

可以看到延迟非常低,这基本上已经证明了就是从国内的口出去的,不着急接下来可以去看访问路径:

 

 

访问我们大谷歌:www.google.com

 

ipip.net查看如下:

 

访问google的路径MTR截图:

 

 

结论:实现了国内流量从国内走、国际流量从国际走

 

最后皆大欢喜,非常享受这十几天,学习了很多,也认识到自己有很多不足。把学习当成一种习惯或是一种信仰,对你的未来绝对百利无一害!!

                                                                 ——————来自一个努力奋斗的网工分享

 

 

本人能力有限,遇到说法不严谨或者错误的地方,希望大家指正,祝大家愉快。

 

 

 

 

人生格言:越努力、越幸运