接下來的幾天我們將一起來學習VPDN技術,包括PPTP、L2TP、PPPOE的基本原理及在Cisco IOS上的實現。今天先來學習PPTP技術。
概述:
PPTP(Point-to-Point Tunnel Protocol 點對點隧道協議)不是一個標準協議。它由microsoft,Alcatel-Lucent和3COM聯合開發。PPTP由兩個協議組成,控制層面使用TCP的1723端口進行封裝,用來協商一些認證、加密等參數,類似於IPSEC ×××中的IKE協商階段;數據層面(即實際的數據流)使用GRE協議進行封裝,類似於IPSEC ×××第二階段中ESP的封裝。由於使用PPP來封裝具體的數據,而PPP不僅能夠封裝IP,還能夠封裝非IP的數據,如NetBEUI和IPX等。
PPTP的服務器有很多種,包括微軟自己的服務器操作系統(Windows Server 2003、Windows Server 2008、Windows Server 2012),一些路由器、防火牆廠商,基於於一些家用級別的小路由器都支持做爲PPTP的Server。這裏講兩個典型的案例,1、使用軟路由器Router OS可以做爲PPTP的Server(有興趣的讀者可以學習一個ROS);2、使用思科的路由器也可以做爲PPTP的Server。今天本文會講到PPTP的基本工作原理、封裝,以及基於Cisco Router IOS的PPTP Server配置和注意事項。
封裝:
控制信道的數據包封裝:
實際數據包的封裝:
未加密的數據包
經過加密的數據包
通過Omnipeek抓包的截圖:
注意事項:
PPTP本身是可以不加密的,但微軟操作系統(包括XP和Win7等)的PPTP客戶端默認開啓了加密,因此如果想要使用嚮導配置客戶端後不做修改的情況下撥通×××,一定要在Server端開啓加密。PPTP只支持微軟的MCCP加密。
PPTP由於是PPP封裝,因此PPTP的認證支持PAP、CHAP,但默認微軟操作系統(包括XP和WIN7等)默認都只勾選了MS-CHAP,因此如果想要使用嚮導配置客戶端後不做修改的情況下撥通×××,需要在Server端使用MS-CHAP。
在WINXP中默認是MS-CHAP V1,而在Win7中只支持MS-CHAP V2,如果在Server端只開啓了MS-CHAP V1,則WIN7會無法撥通。(可以通過實驗證明)
注意PPTP建立連接分爲兩個階段,控制信道用的是目標端口TCP 1723端口,如果1723端口被阻止,則無法撥通PPTP ×××。(在下面的實驗中會演示到)
注意實際的數據流是被封裝在GRE報文中的,而在實際工程中,一些防火牆默認可能並沒有開啓對GRE的狀態化檢測,因此可能會出現問題。這時候需要手工放行或開啓狀態化檢測。
注意防火牆等設備在做PAT時對GRE報文的處理。
實驗環境:
Cisco Router
IOS Version:C7200-ADVENTERPRISEK9-M 15.2(4)S
Client:
Windows XP
Windows7
以下實驗均可以通過模擬器實現,博主均使用模擬器。在Vmware workstation上安裝Windows XP和windows7操作系統,通過網卡橋接的方式與R2和R1相連。通過dynamips模擬器加載真實的72路由器的IOS來模擬思科路由器。大家只有多做實驗才能更加深刻的理解和吃透技術。紙上得來終覺淺,覺知此事要躬行。
網絡拓撲:
思科官方文檔配置實例鏈接:
PPTP實驗部分:
本系統關於PPTP的實驗包括以下內容:(本文只演示基本的PPTP實驗,其他實驗在後續博文中介紹)
實驗1:基本的PPTP Server配置和Client配置(WinXP和Win7)
實驗2:使用不加密的PPTP配置
實驗3:使用PAP或CHAP認證的PPTP配置
實驗4:PPTP問題1:TCP1723被阻止導致無法撥通
實驗5:GRE防火牆檢測和PAT轉換問題
實驗6:綜合實驗1:PPTP在實際工程的應用
實驗7:綜合實驗2:PPTP結合radius實現多用戶部署
實驗1:基本的PPTP Server配置和Client配置
R1基本配置:
R1(config)#int f0/0
R1(config-if)#ip add 12.1.1.1 255.255.255.0
R1(config-if)#no shut
R1(config-if)#int lo 0
R1(config-if)#ip add 172.16.1.1 255.255.255.0
R1(config-if)#ip route 0.0.0.0 0.0.0.0 12.1.1.2
R2基本配置:
R2(config)#int f0/0
R2(config-if)#ip add 12.1.1.2 255.255.255.0
R2(config-if)#no shut
R2(config-if)#int f1/0
R2(config-if)#ip add 23.1.1.2 255.255.255.0
R2(config-if)#no shut
PPTP Server configration:
!--- Enable virtual private dial-up networking.
R1(config)#vpdn enable //開啓×××D技術,一定要先敲這條命令。 !--- Enters VPDN group configuration mode for the specified VPDN group. R1(config)#vpdn-group 1 //創建一個vpdn-group 1 並進入 vpdn group配置模式 !--- Enters VPDN accept-dialin configuration mode !--- and enables the router to accept dial-in requests. R1(config-vpdn)#accept-dialin //進入accept-dialin配置模式,並開啓接受撥入請求 !--- Specifies which PPTP protocol is used. R1(config-vpdn-acc-in)#protocol pptp //選擇協議爲PPTP,這裏也可以選擇L2TP,這樣就是L2TP的×××,當然其他配置會有所不同。 !--- Specifies the virtual template that is used !--- in order to clone the virtual access interface. R1(config-vpdn-acc-in)#virtual-template 1 //指定一個virtual-template進行關聯,用來克隆virutal access 接口 R1(config-vpdn-acc-in)#exit R1(config)#ip local pool ***-address-pool 192.168.1.1 192.168.1.250 //建立一個地址池,用來爲撥入進來的用戶分配IP地址。 R1(config)#interface virtual-template 1 //創建一個virtual-template 1 R1(config-if)#encapsulation ppp //封裝類型配置爲PPP R1(config-if)#peer default ip address pool ***-address-pool //調用剛纔創建的地址池 R1(config-if)#ip unnumbered Loopback //借用IP地址,此處注意,Loopback接口上只要配置一個地址即可,也可以是物理接口 R1(config-if)#ppp encrypt mppe auto //"required" 關鍵字可以加也可以不加,不加表示可以加密,也可以不加密,加上表示強制使用MPPE加密,如果沒有則失敗 R1(config-if)#ppp authentication ms-chap ms-chap-v2 // 使用的認爲方式,這裏如果不加V2,VISIA以後系統都無法撥上來。 R1(config)#username cisco password cisco //創建用戶 Clients配置(Windows XP) 1.點擊開始菜單->所有程序->連接到->顯示所有連接
2.單擊“新建連接嚮導”-->在彈出的對話框中選擇下一步。
3.在嚮導中選擇“連接到我的工作場所的網絡”
4.選擇“虛擬專用網絡連接”
5.在此輸入的名字會是最後顯示在網絡鄰居和桌面上的×××的顯示名字,可後期更改
6.此處填寫PPTP服務器的IP地址或者域名。
7.完成新建連接嚮導。
8.點擊“完成”後輸入用戶名和密碼,剛剛設置的用戶名和密碼都是cisco。
9.可以看到正在連接的狀態。
10.可以看到×××已經連接上了。
11.察看×××,已經拿到了剛剛地址池分發的地址。
12.測試,ping R1身向的網絡172.16.1.1,可以ping通,×××工作正常。
Windows 7 配置
1.打開“控制面板”-->“網絡和共享中心”
2.點擊“設置新的連接或網絡”
3.選擇“連接到工作區”
4.選擇“使用我的Internet連接(×××)”
5.點擊“我將稍後設置Internet連接”
6.在Inetnet地址處填寫PPTP服務器的IP地址
7.輸入用戶名和密碼,創建連接,然後撥號就可以了。
PPTP服務器的配置不變,Win7 ping 12.1.1.1也正常,我們發現卻撥不上去。再仔細看,發現WIN7只支持MS-CHAP V2,而我們在服務器端只配置了MS-CHAP,因此PPP協調不成功。
可以看到默認×××的類型是自動,Windows 7支持 PPTP、L2TP、SSTP、IKEv2 四種自帶客戶端。
在數據加密部分可以看到默認的配置是“需要加密”,並且如果服務器拒絕將斷開連接。意思是服務器不支持加密就斷開。
在認證類型中可以看到默認支持CHAP和MS-CHAP V2,沒有MS-CHAP。自Windows Vista 起,微軟的操作系統不再支持MS-CHAP V1,只支持MS-CHAP V2。這一點配置的時候需要注意。
處理辦法:在Cisco路由器上加上MS-CHAP V2的認證方式
interface virtual-template 1
ppp authentication ms-chap ms-chap-v2
再次在Windows 7上撥號,成功。
可以看到Windows 7客戶端拿到了192.168.1.1的地址
進行ping測試,可以ping通R1身後的172.16.1.1.
在路由器進行驗證: