PPTP VPN在Cisco Router上的应用
接下来的几天我们将一起来学习VPDN技术,包括PPTP、L2TP、PPPOE的基本原理及在Cisco IOS上的实现。今天先来学习PPTP技术。
概述:
PPTP(Point-to-Point Tunnel Protocol 点对点隧道协议)不是一个标准协议。它由microsoft,Alcatel-Lucent和3COM联合开发。PPTP由两个协议组成,控制层面使用TCP的1723端口进行封装,用来协商一些认证、加密等参数,类似于IPSEC VPN中的IKE协商阶段;数据层面(即实际的数据流)使用GRE协议进行封装,类似于IPSEC VPN第二阶段中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客户端默认开启了加密,因此如果想要使用向导配置客户端后不做修改的情况下拨通VPN,一定要在Server端开启加密。PPTP只支持微软的MCCP加密。
PPTP由于是PPP封装,因此PPTP的认证支持PAP、CHAP,但默认微软操作系统(包括XP和WIN7等)默认都只勾选了MS-CHAP,因此如果想要使用向导配置客户端后不做修改的情况下拨通VPN,需要在Server端使用MS-CHAP。
在WINXP中默认是MS-CHAP V1,而在Win7中只支持MS-CHAP V2,如果在Server端只开启了MS-CHAP V1,则WIN7会无法拨通。(可以通过实验证明)
注意PPTP建立连接分为两个阶段,控制信道用的是目标端口TCP 1723端口,如果1723端口被阻止,则无法拨通PPTP VPN。(在下面的实验中会演示到)
注意实际的数据流是被封装在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实验部分:
本文的实验包括以下内容:
实验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 //开启VPND技术,一定要先敲这条命令。 !--- 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的VPN,当然其他配置会有所不同。 !--- 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 vpn-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 vpn-address-pool //调用刚才创建的地址池 R1(config-if)#ip unnumbered Loopback //借用IP地址,此处注意,Loopback接口上只要配置一个地址即可,也可以是物理接口 R1(config-if)#ppp encrypt mppe auto //"required" 关键字可以加也可以不加,不加表示可以加密,也可以不加密,加上表示强制使用MPPE加密,如果没有则失败 R1(config-if)#ppp authentication pap chap ms-chap // 使用的认为方式 R1(config)#username cisco password cisco //创建用户 Clients配置(Windows XP) 1.点击开始菜单->所有程序->连接到->显示所有连接
2.单击“新建连接向导”-->在弹出的对话框中选择下一步。
3.在向导中选择“连接到我的工作场所的网络”
4.选择“虚拟专用网络连接”
5.在此输入的名字会是最后显示在网络邻居和桌面上的VPN的显示名字,可后期更改
6.此处填写PPTP服务器的IP地址或者域名。
7.完成新建连接向导。
8.点击“完成”后输入用户名和密码,刚刚设置的用户名和密码都是cisco。
9.可以看到正在连接的状态。
10.可以看到VPN已经连接上了。
11.察看VPN,已经拿到了刚刚地址池分发的地址。
12.测试,ping R1身向的网络172.16.1.1,可以ping通,VPN工作正常。
本文出自 “杨森的IT之路” 博客,请务必保留此出处http://senyang.blog.51cto.com/3427514/1652654
郑重声明:本站内容如果来自互联网及其他传播媒体,其版权均属原媒体及文章作者所有。转载目的在于传递更多信息及用于网络分享,并不代表本站赞同其观点和对其真实性负责,也不构成任何其他建议。