轉:http://allen686.blog.51cto.com/6758434/1923211
邏輯拓撲示意圖:
目前客戶痛點簡述:
客戶在數據中心有一臺服務器和一臺思科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的配置方法都有些時日了,我這裏也給大家再更新一版。這一版我多花一些時間介紹下,也希望後面看到市面上雜亂的配置方法的網工能節省更多的時間去學習更深。
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截圖:
結論:實現了國內流量從國內走、國際流量從國際走
最後皆大歡喜,非常享受這十幾天,學習了很多,也認識到自己有很多不足。把學習當成一種習慣或是一種信仰,對你的未來絕對百利無一害!!
——————來自一個努力奮鬥的網工分享
本人能力有限,遇到說法不嚴謹或者錯誤的地方,希望大家指正,祝大家愉快。
QQ:549675970
QZONE:http://user.qzone.qq.com/549675970
E-mail: