L2TP原理及应用 openl2tp 功能



L2TP原理及应用

L2TP原理及应用[目录]. 1

1 关于VPN(Virtual Private Networks)... 3

1.1 VPN简介... 3

1.2 VPN网络的结构... 4

1.3 VPN协议的分类... 5

2 关于L2TP. 6

2.1 L2TP简介... 6

2.2 L2TP网络构成... 6

3.2 L2TP协商交互过程... 8

3.2.1 L2TP建立流程... 8

3.2.2 L2TP隧道的维护... 9

3.2.3 L2TP隧道拆除... 9

3.2.4 其他... 9

4 L2TP/VPN的应用(配置与调试信息)... 10

4.1 Intranet VPN应用,这也是最常见的L2TP应用环境:... 10

4.1.1 实验环境:... 10

4.1.2 Config配置!... 10

4.1.3 L2TP隧道和端口的状态信息(静态):... 11

4.1.4 L2TP隧道的建立、维护和拆链过程(动态):... 12

4.2 Access VPN应用:... 13

4.2.1 实验环境:... 13

4.2.2 Config配置:... 14

4.3 Extranet VPN应用:... 21

4.3.1 实验环境:... 21

4.3.2 Config配置:... 22

4.3.3 L2TP建立的交互过程:... 22

4.3.4 分析和说明:... 27

5 L2TP与其他功能模块的结合... 27

5.1 L2TP与NAT. 27

5.2.1 Router-Router[Ipsec对L2TP tunnel加密]. 27

5.2.2 Router-Router[Ipsec对上层数据加密]. 30

5.2.3 PC-Router. 32

6 其他:... 37

6.1 L2TP实际案例列举:... 37

1 关于VPN(Virtual Private Networks)

1.1 VPN简介

随着Internet的爆炸性发展,每个企业都在思考:“利用Internet能为我们的企业作哪些事呢?”。最初,企业做自己的网站,允许人们在Internet上访问,从而进行企业形象的宣传、促销、培训、技术支持等等。现在,Internet的潜力似乎是无穷无尽的,大家的目光开始转向电子商务,利用全球可以方便上网访问的Internet,使得授权用户可以容易的访问到企业内部传统的IT系统中的关键商务程序及数据。

为了得到安全保障,VPN提供了非常节省费用的解决方案。如下图所示,出差员工可以利用便携机在内的任何一台可以访问Internet的计算机,通过VPN隧道访问企业内部网络,企业内部可以对该用户进行授权、验证和审计;合作伙伴和分支机构也可以通过VPN组建私有网络,代替传统的昂贵的专线方式,而且具有同样的甚至更高的安全性。

虚拟私有网实际上就是将Internet看作一种公有数据网(Public Data Network),这种公有网和PSTN网在数据传输上没有本质的区别。因为从用户观点来看,数据都被正确传送到了目的地。相对地,企业在这种公共数据网上建立的用以传输企业内部信息的网络被称为为私有网。至于“虚拟”,则主要是相对现存企业Intranet的组建方式而言的。通常企业Intranet相距较远的各局域网都是用专用物理线路相连的,而虚拟私有网通过隧道技术提供Internet上的虚拟链路。

在现代社会,信息已经是一个企业能否生存的关键,计算机网络为企业的办公自动化和

信息的获取提供强大的构架。随着企业的发展以及移动用户的增多,企业为分支机构提

供互连,也为移动用户提供接入功能。预测在2002年将有90%的企业采用VPN技术来组建私有网。

1.2 VPN网络的结构

根据网络结构和应用的不同,VPN可以分为三类,分别为:远程访问虚拟专网(Access VPN/也叫VPDN)、企业内部虚拟专网(Intranet VPN)和扩展型企业内部虚拟专网(Extranet VPN),下面以他们的拓扑接口来说明。

A、远程访问虚拟专网

远程访问VPN又称VPDN(Virtual Private Dialup Network),这种方式的VPN解决了出差员工在异地访问企业内部私有网的问题,提供了身份验证授权和计费的功能,出差员工和外地客户甚至不必拥有本地ISP的上网权限就可以访问企业内部资源,原因是客户端直接与企业内部建立了VPN隧道,这对于流动性很大的出差员工和分布广泛的客户来说是很有意义的。

企业开设VPN服务所需的设备很少,只需在资源共享处放置一台支持VPN的路由器就可以了,资源享用者通过PSTN连入所在地NAS服务器后直接呼叫企业的VPN路由器,呼叫的方式和拥有PSTN连接的呼叫方式完全是一样的只需按当地的电话收费标准交付费用。当然也可能是ADSL的接入方式,情况是一样的!

B、企业内部虚拟专网

Intranet VPN是适应大中型企业和其在地域上分布不同的机构设置的网络,通过Intranet隧道,企业内部各个机构可以很好的交流信息,通过Internet在公司企业总部和国内国外的企业分支机构建立了虚拟私有网络,这种应用实质上是通过公用网在各个路由器之间建立VPN连接来传输用户的私有网络数据。目前大多数的企业VPN都是这种情况!

C、扩展型企业内部虚拟专网

这种情况和Access VPN在硬件结构上非常相象!不过客户端PC上不必配置任何关于VPN的设置或者软件,它需要做的就是拨号上网连接到NAS,而VPN隧道是由NAS来负责与企业内部的Router建立完成的!

1.3 VPN协议的分类

前面讲的几种VPN应用结构中,核心内容就是在合适的位置建立隧道;所以VPN协议是指用于实现隧道的协议,这些协议都是在隧道起点对原始报文进行封装然后在隧道终点进行解封装再得到原始报文,从而达到隧道传输的目的。常见的VPN协议根据层次来划分有:

二层隧道协议L2TP、PPTP;

三层隧道协议IPSEC、GRE等。

目前,MPLS/VPN也开始发展和成熟起来,尤其是在电信骨干网上面应用的非常广泛!不过本文的重点是介绍L2TP/VPN,所以所以其他的就只简单介绍一下!

2 关于L2TP

2.1 L2TP简介

L2TP协议是由IETF起草,微软、Ascend、Cisco、3COM等公司参予制定的二层隧道协议,它结合了PPTP和L2F两种二层隧道协议的优点,为众多公司所接受,已经成为IETF有关2层通道协议的工业标准。

L2TP的主要特性有:

l L2TP适合单个或少数用户接入企业的情况,其点到网连接的特性是其承载协议PPP所约定的;

l 由于L2TP对私有网的数据包进行了封装因此在Internet上传输数据时对数据包的网络地址是透明的,并支持接入用户的内部动态地址分配;

l 与PPP模块配合,支持本地和远端的AAA功能(认证、授权和记费)对用户的接入也可根据需要采用全用户名,用户域名和用户拨入的特殊服务号码来识别是否为VPN用户。

l 对数据报文的安全性可采用IPSEC协议采用该协议即可以在用户发往Internet之前对数据报文加密即用户控制方式也可采用在VPN端系统LAC侧加密即服务提供商控制方式。

l 对于拨号用户可以配置相应的VPN拨号软件,发起由用户直接对企业私有网的连接,这样用户在上网时可以灵活选择是否需要VPN服务。

2.2 L2TP网络构成

前面已经讲到,VPN的应用和组网结构分为三类,当然L2TP也是分为三种接入方式的,请参阅下图:

这个图不仅描述了L2TP三种常见的构建模式,而且也指出了组建L2TP网络需要的三要素:LNS、LAC和Client!

l LNS――L2TP Network Server,为L2TP企业侧的VPN服务器,该服务器完成对用户的最终授权和验证,接收来自LAC的隧道和连接请求,并建立连接LNS和用户的PPP通道。

l LAC――L2TP Access Concentrator,为L2TP的接入设备,它提供各种用户接入的AAA服务,发起隧道和会话连接的功能,以及对VPN用户的代理认证功能,它是ISP侧提供VPN服务的接入设备,在物理实现上,它即可以是配置L2TP的路由器,或接入服务器也可以是专用的VPN服务器。

3 L2TP协议

3.1 L2TP协议在TCP/IP协议栈中的位置

此图说明了L2TP协议在整个TCP/IP层次结构中位置,也指明了ip数据包在传输过程中所经过的协议栈结构和封装过程;

我们以一个用户侧的IP报文的传递过程来描述VPN工作原理,黄色标示的IP为需要传递的用户数据!

在LAC侧,的链路层将用户数据报文作为加上ppp封装,然后传递给L2TP协议,L2TP再封装成UDP报文,UDP再次封装成可以在Internet上传输的IP报文,此时的结果就是IP报文中又有IP报文,但两个IP地址不同,一般用户报文的IP地址是私有地址,而LAC上的IP地址为公有地址,至此完成了VPN的私有数据的封装;

在LNS侧,收到L2TP/VPN的IP报文后将IP、UDP、L2TP报文头去掉后就恢复了用户的PPP报文,将PPP报文头去掉就可以得到IP报文,至此用户IP数据报文得到,从而实现用户ip数据的透明隧道传输,而且整个PPP报头/报文在传递的过程中也保持未变,这也验证了L2TP是一个二层VPN隧道协议!

3.2 L2TP协商交互过程

为了在VPN用户和服务器之间传递数据报文,必须在LAC和LNS之间建立传递数据报文的隧道和会话连接,隧道是保证具有相同会话连接特性的一组用户可以共享的连接属性所定义的通道,而会话是针对每个用户与企业VPN服务器建立连接的PPP数据通道,多个会话复用在一个隧道连接上隧道和会话是动态建立与删除的。

会话的建立是由PPP模块触发,如果该会话在建立时没有可用的隧道结构,那么先建立隧道连接,会话建立完毕后开始进行数据传输!

3.2.1 L2TP建立流程

L2TP隧道的建立是一个三次握手的过程,首先由LAC发起隧道建立请求SCCRQ,LNS收到请求后进行应答SCCRP,最后LAC在收到应答后再给LNS返回确认SCCCN;隧道建立。

会话建立的过程与隧道类似,首先由LAC发起会话建立请求ICRQ,LNS收到请求后返回应答ICRP,LAC收到应答后返回确认ICCN,会话建立!

L2TP的会话建立由PPP触发,隧道建立由会话触发。由于多个会话可以复用在一条隧道上,如果会话建立前隧道已经建立,则隧道不用重新建立。

3.2.2 L2TP隧道的维护

隧道建立后,一直要等到该隧道所属会话全部下线后,再进行拆除,为了确认对端的隧道结构依然存在,需要定时发送与对端的维护报文,其流程为:LAC或LNS发出Hello报文,对应的LNS或LAC发出确认信息!

3.2.3 L2TP隧道拆除

隧道拆除流程比其建立过程要简单,隧道的任何一端发出拆链通知StopCCN,对端返回确认;会话的拆除流程为:会话一端发出拆链通知CDN,对端返回确认即可!

3.2.4 其他

L2TP连接的维护以及PPP数据的传送都是通过L2TP消息的交换来完成的,这些消息

再通过UDP的1701端口承载于TCP/IP之上。

L2TP报文分为控制报文和数据报文两类。控制报文包括L2TP通道的建立、维护、拆除,基于通道连接的会话连接的建立、维护、拆除,控制消息中的参数用AVP值对(Attribute Value Pair)来表示,使得协议具有很好的扩展性;在控制消息的传输过程中还应用了消息丢失重传和定时检测通道连通性等机制来保证了L2TP层传输的可靠性;

数据报文则用户传输PPP报文。

4 L2TP/VPN的应用(配置与调试信息)

这里我们就L2TP的几种常见应用模式给出配置举例!

4.1 Intranet VPN应用,这也是最常见的L2TP应用环境:

4.1.1 实验环境:

LNS局域网网关为192.168.100.254/24;LNS外网口地址为10.0.0.1/8

LAC局域网网关为192.168.200.254/24;LAC外网口地址为10.0.0.2/8

建立的L2TP隧道在172.16.0.0/16网段!

4.1.2 Config配置//配置中删除了无关的内容,且重要部分使用彩色字体标出!

LNS_Config:

ip local pool L2POOL 172.16.0.10 50 //动态地址池

username l2tp@bd.com password 0 bdcom //建立CHAP认证数据库

interface Virtual-template0 //建立虚拟拨号模板

ip address 172.16.0.1 255.255.0.0 //指定隧道本端地址,也可以Unnumber Loopback端口

ppp authentication chap //要求发起CHAP认证

ppp chap hostname l2tp@bd.com

peer default ip address pool L2POOL //调用地址池,给LAC分配ip地址

interface FastEthernet0/0 //LNS连接的中心局域网接口

ip address 192.168.100.254 255.255.255.0

no ip directed-broadcast

interface Ethernet2/0 //LNS的外外网口地址

ip address 10.0.0.1 255.0.0.0 //LNS外网口地址,一般为公网ip

no ip directed-broadcast

L2TP原理及应用 openl2tp 功能
ip route default *.*.*.* //路由器默认网关,实验中没有增加,但实际应用中一般要加上

ip route 192.168.200.0 255.255.255.0 Virtual-template //经过L2TP隧道指向对方局域网

vpdn enable //启动L2TP/VPDN

vpdn-group 1 //建立VPDN组

accept-dialin //配置为LNS端,接受远端呼叫

protocol l2tp //指定使用的二层隧道协议,如果使用PPTP,在这里修改即可!

local-name LNS

virtual-template 0 //调用前面建立的虚拟拨号模板

LAC_config:

username l2tp@bd.com password 0 bdcom //建立CHAP认证数据库

interface Virtual-tunnel0 //建立虚拟隧道端口

ip address negotiated

no ip directed-broadcast

ppp chap hostname l2tp@bd.com

interface FastEthernet0/0 //LAC外网口地址,一般为公网ip

ip address 10.0.0.2 255.0.0.0

no ip directed-broadcast

interface FastEthernet0/1 // LAC连接的网点局域网接口

ip address 192.168.200.254 255.255.255.0

no ip directed-broadcast

ip route default *.*.*.* //路由器默认网关,实验中没有增加,但实际应用中一般要加上

ip route 192.168.100.0 255.255.255.0 Virtual-tunnel0 //经过L2TP隧道指向对方局域网

vpdn enable //启动L2TP/VPDN

vpdn-group 1 //建立VPDN组

request-dialin //配置为LAC端,发起L2TP隧道建立请求

domain bd.com //指定VPDN域名,用于触发L2TP隧道建立

initiate-to ip 10.0.0.1 priority 1 //指定LNS的具体ip地址

protocol l2tp //指定使用的二层隧道协议,如果使用PPTP,在这里修改即可!

local-name LAC

注意:在BDCOM路由器上,CHAP认证所使用的用户名必须是***@**.**格式的,另外,在LNS的VPDN-group里面,如果配置了terminate-from ***的话,对方LAC的hostname必须和它匹配,否则无法互通,这也一定程度上提供了安全性!

4.1.3 L2TP隧道和端口的状态信息(静态):

前面的配置完成之后,隧道不会自动建立,此时隧道tunnel和链路session的状态都是空的!必须要有数据包配合路由来触发L2TP“拨号”后,才能建立tunnel和session,如下所示:

LAC#show l2tp tunnel

L2TP Tunnel Information:

Total tunnels 1 sessions 1 //显示目前隧道和链路的统计信息

Local_ID Remote_ID State Remote_Name Remote_Address UDP_Port Sessions

4 1 Est LNS 10.0.0.1 1701 1

红色字体就是显示的当前建立的隧道的详细信息:本地id和远端id分别为4和1,状态为Est(建立),隧道的远端名字为LNS,远端LNS的外网口ip地址为10.0.0.1,L2TP隧道使用额UDP端口为1701(协议默认值),另外这个隧道上面承载的session数量为1个! 其中本地id和远端id一般情况下都不会变,从1开始,如果隧道重新建立,id数量就依次递增1!

LAC#show l2tp session

L2TP Session Information:

Total tunnels 1 sessions 1 //显示目前隧道和链路的统计信息

Local_ID Remote_ID State Tunnel_ID Interface Username

1 1 Est 4 vn0 (null)

这里的信息和show l2tp tunnel的信息基本类似,不再赘述,如果一条tunnel上面承载的session有多条,那么此处的输出信息就会有多条!!

看了L2TP隧道的状态,再来看一下虚拟虚拟接口,比较简单:

LAC#show inter virtual-tunnel 0 //LAC侧虚接口状态

Virtual-tunnel0 is up, line protocol is up

Hardware is Unknown device

Internet address is 172.16.0.10/32

MTU 1500 bytes, BW 100000 kbit, DLY 10000 usec

Encapsulation PPP, loopback not set //封装的二层协议为PPP

Keepalive set(10 sec)

LCP Opened

CHAP Opened, Message: ' Welcome to BDCOM Router'

IPCP Opened

local IP address: 172.16.0.10 remote IP address: 172.16.0.1

LNS#show inter virtual-access 0 //LNS侧虚接口状态

Virtual-access0 is up, line protocol is up

Hardware is Virtual access interface

Interface address is 172.16.0.1/16

MTU 1500 bytes, BW 100000 kbit, DLY 10000 usec

Encapsulation PPP, loopback not set

Keepalive set(10 sec)

LCP Opened

CHAP Opened, Message: 'none'

IPCP Opened

local IP address: 172.16.0.1 remote IP address: 172.16.0.10

4.1.4 L2TP隧道的建立、维护和拆链过程(动态):

A、先看一下隧道建立的过程:(关键字使用粗体标明,阅读时结合前面的内容!)

LAC#ping 192.168.100.254 //在LAC上ping远端LNS的局域网地址,触发隧道

PING 192.168.100.254 (192.168.100.254): 56 data bytes

2002-1-1 00:54:04 [L2TP]: tunnel T5 to be created. //这里开始的四行为LAC初始化

2002-1-1 00:54:04 [L2TP] T5: state changed into IDLE

2002-1-1 00:54:04 [L2TP] T5: session S1 to be created.

2002-1-1 00:54:04 [L2TP] T5|S1: state changed into IDLE

2002-1-1 00:54:04 [L2TP] T5: TX -> SCCRQ to T0 //Tunnel建立的过程

2002-1-1 00:54:04 [L2TP] T5: state changed into WAIT REPLY

2002-1-1 00:54:04 [L2TP] T5: RX <- SCCRP from LNS T2

2002-1-1 00:54:04 [L2TP] T5: TX -> SCCCN to LNS T2

2002-1-1 00:54:04 [L2TP] T5: state changed into ESTABLISHED

2002-1-1 00:54:04 [L2TP] T5|S1: TX -> ICRQ to LNS T2|S0 //Session建立过程

2002-1-1 00:54:04 [L2TP] T5|S1: state changed into WAIT REPLY

2002-1-1 00:54:04 [L2TP] T5: RX <- ZLB from LNS T2

2002-1-1 00:54:04 [L2TP] T5|S1: RX <- ICRP from LNS T2|S1

2002-1-1 00:54:04 [L2TP] T5|S1: TX -> ICCN to LNS T2|S1

2002-1-1 00:54:04 [L2TP] T5|S1: state changed into ESTABLISHED

2002-1-1 00:54:04 Line on Interface Virtual-tunnel0, changed state to up

2002-1-1 00:54:04 [L2TP] T5: RX <- ZLB from LNS T2 //LNS发出的的隧道维护信息

2002-1-1 00:54:05 Line protocol on Interface Virtual-tunnel0, changed state to up

.!!!! //ping的第一个报文是触发隧道的,由于隧道建立需要时间,这个echo request肯定是timeout,而隧道建立之后后续的四个icmp报文就能够在隧道里正常传递!

B、下面是隧道的维护报文交互:

LAC#2002-1-1 00:55:04 [L2TP] T5: RX <- HELLO from LNS T2

2002-1-1 00:55:04 [L2TP] T5: TX -> ZLB to LNS T2

2002-1-1 00:56:05 [L2TP] T5: RX <- HELLO from LNS T2

2002-1-1 00:56:05 [L2TP] T5: TX -> ZLB to LNS T2

2002-1-1 00:57:05 [L2TP] T5: TX -> HELLO to LNS T2

………… //比较简单,每60″发送依次hello查询

C、L2TP拆链过程:

LAC#clear l2tp tunnel tunnelid 6

2002-1-1 01:25:07 [L2TP] T6: TX -> STOPCCN to LNS T3 //发送拆链通知

2002-1-1 01:25:07 [L2TP] T6: state changed into IDLE

2002-1-1 01:25:07 [L2TP] T6: session S1 to be cleared.

2002-1-1 01:25:07 [L2TP]: tunnel T6 to be cleared. //不等ZLB确认就直接清除隧道

2002-1-1 01:25:07 Line on Interface Virtual-tunnel0, changed state to down

2002-1-1 01:25:07 Line protocol on Interface Virtual-tunnel0, changed state to down

2002-1-1 01:25:07 Line on Interface Virtual-tunnel0, changed state to down

2002-1-1 01:25:07 Line on Interface Virtual-tunnel0, changed state to up

4.2 Access VPN应用:

L2TP三种应用中,不管结构怎么变化,配置如何灵活,但是原理是一样的,所以下面就只讲应用特点和配置,过程分析就省略了!

4.2.1 实验环境:

LNS局域网网关为192.168.100.254/24;LNS外网口地址为10.0.0.1/8

LAC/PC为Win2k/XP的主机,拨号连接,ip地址不固定

建立的L2TP隧道在172.16.0.0/16网段

4.2.2 Config配置:

LNS_Config: //和Intranet VPN的情况完全相同,所以就不再多说

ip local pool L2POOL 172.16.0.10 50

username l2tp@bd.com password 0 bdcom

interface Virtual-template0

ip address 172.16.0.1 255.255.0.0

ppp authentication chap

ppp chap hostname l2tp@bd.com

peer default ip address pool L2POOL

interface FastEthernet0/0

ip address 192.168.100.254 255.255.255.0

no ip directed-broadcast

interface Ethernet2/0

ip address 10.0.0.1 255.0.0.0

no ip directed-broadcast

ip route default *.*.*.*

vpdn enable

vpdn-group 1

accept-dialin

protocol l2tp

local-name LNS

virtual-template 0

注意:由于PC和BDCOM路由器设计上的差别,CHAP认证中,用户名无需配置成**@**.**格式!

PC客户端设置://以WinXP为例

网上邻居->属性->创建新连接,

选择第二项,

建立VPN,

给L2TP/VPN连接命名,

给定LNS服务器的公网ip地址,然后路由next,结束。

然后双击建立的VPN连接(名字为L2TP),

这里要填写CHAP认证的用户名和密码,并且进入“属性/properties”页面的安全和网络设置分支,分别设置为:

确认即可,然后进行L2TP拨号!

4.2.3 PC进行L2TP拨号的注意点:

1、开始L2TP拨号之前,必须先能够保证ping通10.0.0.1;

2、由于Windiws系统是默认将L2TP和IPSec捆绑起来的,而路由器配置中只有L2TP,所以要将Windows的捆绑拆开(通过修改注册表)!可以执行如下文件

3、PC进行L2TP拨号之后,如果它单纯的访问企业内部VPN网络,那就不存在问题,但如果它要同时访问internet,就会产生问题,PC无法访问公网了~原因是拨号之后,PC的路由表发生了变化,下面列出了PC几拨号前后的状态:

C:>ipconfig //拨号之前ip地址

Windows IP Configuration

Ethernet adapter Local Area Connection:

Connection-specific DNS Suffix . :

IP Address. . . . . . . . . . . . : 10.0.0.100 //PC网卡上的第二个ip地址

Subnet Mask . . . . . . . . . . . : 255.0.0.0

IP Address. . . . . . . . . . . . : 192.168.19.180 //PC网卡ip地址

Subnet Mask . . . . . . . . . . . : 255.255.0.0

Default Gateway . . . . . . . . . : 192.168.1.6 //默认网关

C:>route print //拨号之前PC的路由表

=====================================================

Interface List

0x1 ........................... MS TCP Loopback interface

0x2 ...00 0d 60 8c 0d c9 ...... Intel(R) PRO/1000 MT Mobile Connection - Packet

Scheduler Miniport

=====================================================

=====================================================

Active Routes:

Network Destination Netmask Gateway Interface Metric

0.0.0.0 0.0.0.0 192.168.1.6 192.168.19.180 20

10.0.0.0 255.0.0.0 10.0.0.100 192.168.19.180 20

10.0.0.100 255.255.255.255 127.0.0.1 127.0.0.1 20

10.255.255.255 255.255.255.255 10.0.0.100 192.168.19.180 20

127.0.0.0 255.0.0.0 127.0.0.1 127.0.0.1 1

192.168.0.0 255.255.0.0 192.168.19.180 192.168.19.180 10

192.168.19.180 255.255.255.255 127.0.0.1 127.0.0.1 10

192.168.19.255 255.255.255.255 192.168.19.180 192.168.19.180 10

224.0.0.0 240.0.0.0 192.168.19.180 192.168.19.180 20

255.255.255.255 255.255.255.255 192.168.19.180 192.168.19.180 1

Default Gateway: 192.168.1.6

=====================================================

Persistent Routes:

None

C:>ipconfig //拨号之后ip地址分配

Windows IP Configuration

Ethernet adapter Local Area Connection:

Connection-specific DNS Suffix . :

IP Address. . . . . . . . . . . . : 10.0.0.100

Subnet Mask . . . . . . . . . . . : 255.0.0.0

IP Address. . . . . . . . . . . . : 192.168.19.180

Subnet Mask . . . . . . . . . . . : 255.255.0.0

Default Gateway . . . . . . . . . : 192.168.1.6

PPP adapter L2TP:

Connection-specific DNS Suffix . :

IP Address. . . . . . . . . . . . : 172.16.0.10 //L2TP服务器分配的ip地址

Subnet Mask . . . . . . . . . . . : 255.255.255.255

Default Gateway . . . . . . . . . : 172.16.0.10

C:>route print //拨号之后PC路由表

=====================================================

Interface List

0x1 ........................... MS TCP Loopback interface

0x2 ...00 0d 60 8c 0d c9 ...... Intel(R) PRO/1000 MT Mobile Connection - Packet

Scheduler Miniport

0x40004 ...00 53 45 00 00 00 ...... WAN (PPP/SLIP) Interface //生成的虚拟ppp接口

=====================================================

=====================================================

Active Routes:

Network Destination Netmask Gateway Interface Metric

0.0.0.0 0.0.0.0 172.16.0.10 172.16.0.10 1

0.0.0.0 0.0.0.0 192.168.1.6 192.168.19.180 21

10.0.0.0 255.0.0.0 10.0.0.100 192.168.19.180 20

10.0.0.1 255.255.255.255 10.0.0.100 192.168.19.180 20

10.0.0.100 255.255.255.255 127.0.0.1 127.0.0.1 20

10.255.255.255 255.255.255.255 10.0.0.100 192.168.19.180 20

127.0.0.0 255.0.0.0 127.0.0.1 127.0.0.1 1

172.16.0.10 255.255.255.255 127.0.0.1 127.0.0.1 50

172.16.255.255 255.255.255.255 172.16.0.10 172.16.0.10 50

192.168.0.0 255.255.0.0 192.168.19.180 192.168.19.180 10

192.168.19.180 255.255.255.255 127.0.0.1 127.0.0.1 10

192.168.19.255 255.255.255.255 192.168.19.180 192.168.19.180 10

224.0.0.0 240.0.0.0 192.168.19.180 192.168.19.180 20

224.0.0.0 240.0.0.0 172.16.0.10 172.16.0.10 1

255.255.255.255 255.255.255.255 172.16.0.10 172.16.0.10 1

255.255.255.255 255.255.255.255 192.168.19.180 192.168.19.180 1

Default Gateway: 172.16.0.10

=====================================================

Persistent Routes:

None

显然,拨号之后,PC机上面多了一个虚拟的PPP接口(172.16.0.0/16网段),相应的生成了关于这个接口有关的几条路由,不过关键是生成了指向172.16.0.10的默认路由,且权限比之前指向本地局域网(192.168.1.6,可以上internet)的高!当然,此时PC无法正常上网!

解决的方式还是从PC路由表着手;原则就是在所有默认路由中,保持原来指向局域网(可以上internet)的路由优先权最高!方法如下:

在“L2TP”拨号属性->网络->TCP/IP设置->属性->高级界面,将“在远程网络上使用默认网关”的勾去掉,如图:

这样,PC进行L2TP拨号之后,就不会生成默认路由影响上internet了,但是还需要手工增加静态路由指向对方VPN网络,可以使用Windows自己的route add命令,也可以使用BDCOM自己开发的小软件,添加静态路由比较方便!

此时PC的路由表如下:

C:>route print

====================================================

Interface List

0x1 ........................... MS TCP Loopback interface

0x80002 ...00 0d 60 8c 0d c9 ...... Intel(R) PRO/1000 MT Mobile Connection - Pac

ket Scheduler Miniport

0x90004 ...00 53 45 00 00 00 ...... WAN (PPP/SLIP) Interface

====================================================

====================================================

Active Routes:

Network Destination Netmask Gateway Interface Metric

0.0.0.0 0.0.0.0 192.168.1.6 192.168.19.180 10

10.0.0.0 255.0.0.0 10.0.0.100 192.168.19.180 10

10.0.0.1 255.255.255.255 10.0.0.100 192.168.19.180 10

10.0.0.100 255.255.255.255 127.0.0.1 127.0.0.1 10

10.255.255.255 255.255.255.255 10.0.0.100 192.168.19.180 10

127.0.0.0 255.0.0.0 127.0.0.1 127.0.0.1 1

172.16.0.0 255.255.0.0 172.16.0.10 172.16.0.10 1

172.16.0.10 255.255.255.255 127.0.0.1 127.0.0.1 50

172.16.255.255 255.255.255.255 172.16.0.10 172.16.0.10 50

192.168.0.0 255.255.0.0 192.168.19.180 192.168.19.180 10

192.168.19.180 255.255.255.255 127.0.0.1 127.0.0.1 10

192.168.19.255 255.255.255.255 192.168.19.180 192.168.19.180 10

224.0.0.0 240.0.0.0 172.16.0.10 172.16.0.10 50

224.0.0.0 240.0.0.0 192.168.19.180 192.168.19.180 10

255.255.255.255 255.255.255.255 172.16.0.10 172.16.0.10 1

255.255.255.255 255.255.255.255 192.168.19.180 192.168.19.180 1

Default Gateway: 192.168.1.6

=====================================================

Persistent Routes:

None

可以看到,虽然PC还是因为L2TP拨号生成了一些相关路由,但是其默认网关没有变,还是指向192.168.1.6,此时需要做的就是增加静态路由,指向对方局域网即可:

route add 192.168.100.0 mask 255.255.255.0 172.16.0.10 metric 10

4.3 Extranet VPN应用:

前面已经提到:这个和Access VPN比较相似;这里面PC作为一个纯粹的客户端,不必做任何特殊的配置!

4.3.1 实验环境:

LNS局域网网关为192.168.100.254/24;LNS外网口地址为10.0.0.1/8

LAC有两个网络接口,一个为20.0.0.1/8,用于接受PC的PPP拨号,另外一个为10.0.0.2/8,与LNS连接,中继L2TP隧道!

建立的L2TP隧道在172.16.0.0/16网段。

4.3.2 Config配置:

Config_LNS:

与前面的Access VPN和Intranet VPN完全相同,此处略!

Config_LAC:

interface FastEthernet0/0 //LAC外网口地址

ip address 10.0.0.2 255.0.0.0

no ip directed-broadcast

interface Serial0/2 //LAC接PSTN网端口

physical-layer mode async

no ip address

no ip directed-broadcast

ppp authentication chap //要求对PC client认证

ppp chap hostname l2tp@bd.com //触发L2TP隧道建立

physical-layer speed 57600

line dial

vpdn enable //开启L2TP/VPDN功能

vpdn-group 1

request-dialin

domain bd.com

initiate-to ip 10.0.0.1 priority 1

protocol l2tp

local-name LAC

4.3.3 L2TP建立的交互过程:

A、以PC/BD2004为观察点,为了便于观察,使用BDCOM2004来代替PC;

Trace start s0 ppp 2

PPP:Port s0 Physical layer up //路由器端口UP,触发拨号

PPP:Port s0,Lcp Listen; Start

PPP:Port s0,Lcp Listen; Reset

PPP:Port s0 Lcp, making ACCM: 0x000a0000.

PPP:Port s0 Lcp, making Magic Number: 0x1f8be7d2.

PPP:Port s0 Lcp, making Protocol compression.

PPP:Port s0 Lcp, making Addr/Ctl compression.

PPP:Port s0,Lcp Listen ; Sending Config Req, id: 80, len: 20

PPP:Port s0,Lcp Req Sent; Processing Config Req, id: 247, len: 25

PPP:Port s0 Lcp,checking ACCM: 0x000a0000

PPP:Port s0 Lcp,result Config Ack, option 2, length 6

PPP Port s0 Lcp, checking Auth Protocol: 0xc223

PPP:Port s0 Lcp,result Config Ack, option 3, length 5

PPP:Port s0 Lcp, checking Magic Number: 0x42a8f8b6

PPP:Port s0 Lcp,result Config Ack, option 5, length 6

PPP Port s0 Lcp, checking Protocol compression

PPP:Port s0 Lcp,result Config Ack, option 7, length 2

PPP Port s0 Lcp, checking Addr/Ctl compression

PPP:Port s0 Lcp,result Config Ack, option 8, length 2

PPP:Port s0,Lcp Req Sent; Sending Config Ack, id: 247, len: 25

PPP:Port s0 Lcp, making ACCM: 0x000a0000.

PPP:Port s0 Lcp, making Magic Number: 0x1f8be7d2.

PPP:Port s0 Lcp, making Protocol compression.

PPP:Port s0 Lcp, making Addr/Ctl compression.

PPP:Port s0,Lcp Ack Sent; Sending Config Req, id: 81, len: 20

PPP:Port s0,Lcp Ack Sent; Processing Config Ack, id: 81, len: 20

PPP:Port s0 Lcp, making ACCM: 0x000a0000.

PPP:Port s0 Lcp, making Magic Number: 0x1f8be7d2.

PPP:Port s0 Lcp, making Protocol compression.

PPP:Port s0 Lcp, making Addr/Ctl compression.

PPP:Port s0,Lcp Ack Sent; Recv valid LCP ACK

PPP:Port s0,Lcp Ack Sent; Opened //以上为与LAC建立PPP/LCP链路

PPP Port s0,Chap Recv, option: Challenge, id: 248, len: 32

PPP Port s0,Chap Recv, option: Success, id: 248, len: 28

PPP:Port s0, CHAP receive MSG from remote host SUCCESS: Welcome to BDCOM Router

PPP:Port s0,Chap Req Sent; Open //与LAC完成CHAP认证

PPP:Port s0,IPcp Listen; Start

PPP:Port s0,IPcp Listen; Reset

PPP:Port s0 IPcp, making IP compression 0x002d with IP compression slots 16, flag 0

PPP:Port s0 IPcp, Making IP source address: 0.0.0.0

PPP:Port s0,IPcp Listen ; Sending Config Req, id: 82, len: 16

PPP:Port s0,start IPcp!

PPP:Port s0,IPcp Req Sent; Processing Config Req, id: 248, len: 10

PPP:Port s0,IPcp: Checking IP source address: 172.16.0.1

PPP:Port s0 Recv IPCP REQ: result Config Ack, option 3, length 6

PPP:Port s0,IPcp Req Sent; Sending Config Ack, id: 248, len: 10

PPP:Port s0,IPcp Ack Sent; Processing Config Reject, id: 82, len: 10

PPP:Port s0,Recv valid IPCP REJ

PPP:Port s0 IPcp, Making IP source address: 0.0.0.0

PPP:Port s0,IPcp Ack Sent; Sending Config Req, id: 83, len: 10

PPP:Port s0,IPcp Ack Sent; Processing Config Nak, id: 83, len: 10

PPP:Port s0,IPcp: Checking IP source address: 172.16.0.10

PPP:Port s0,Recv valid IPCP NAK

PPP:Port s0 IPcp, Making IP source address: 172.16.0.10

PPP:Port s0,IPcp Ack Sent; Sending Config Req, id: 84, len: 10

PPP:Port s0,IPcp Ack Sent; Processing Config Ack, id: 84, len: 10

PPP:Port s0 IPcp, Making IP source address: 172.16.0.10

PPP:Port s0,Recv valid IPCP ACK

PPP:Port s0,IPcp Ack Sent; Opened

//LNS通过tunnel,给BD2004分配ip地址,中间不再要求认证

B、以LAC为观察点

Debug l2tp event

Debug ppp negotiation

2002-1-1 22:55:33 Line on Interface Serial0/2, changed state to up //BD2004触发拨号

2002-1-1 22:55:33 PPP Serial0/2: LCP Listen ; Start

2002-1-1 22:55:33 making ACCM: 0x000a0000

2002-1-1 22:55:33 making Auth Protocol: 0xc223 //0223说明LAC这边要求CHAP认证

2002-1-1 22:55:33 making Auth algorithm: 0x05

2002-1-1 22:55:33 making Magic Number: 0x42a8efd6

2002-1-1 22:55:33 making Protocol compression

2002-1-1 22:55:33 making Addr/Ctl compression

2002-1-1 22:55:33 PPP Serial0/2: LCP Listen ; TX -> Config Req, id: 253, len: 25

2002-1-1 22:55:34 PPP Serial0/2: LCP Req Sent; RX <- Config Req, id: 98, len: 20

2002-1-1 22:55:34 checking ACCM: 0x000a0000

2002-1-1 22:55:34 result Config Ack, option 2, length 6

2002-1-1 22:55:34 making ACCM: 0x000a0000

2002-1-1 22:55:34 checking Magic Number: 0x219c0014

2002-1-1 22:55:34 result Config Ack, option 5, length 6

2002-1-1 22:55:34 making Magic Number: 0x219c0014

2002-1-1 22:55:34 checking Protocol compression

2002-1-1 22:55:34 result Config Ack, option 7, length 2

2002-1-1 22:55:34 making Protocol compression

2002-1-1 22:55:34 checking Addr/Ctl compression

2002-1-1 22:55:34 result Config Ack, option 8, length 2

2002-1-1 22:55:34 making Addr/Ctl compression

2002-1-1 22:55:34 PPP Serial0/2: LCP Req Sent; TX -> Config Ack, id: 98, len: 20

2002-1-1 22:55:34 PPP Serial0/2: LCP Ack Sent; RX <- Config Ack, id: 253, len: 25

2002-1-1 22:55:34 making ACCM: 0x000a0000

2002-1-1 22:55:34 making Auth Protocol: 0xc223

2002-1-1 22:55:34 making Auth algorithm: 0x05

2002-1-1 22:55:34 making Magic Number: 0x42a8efd6

2002-1-1 22:55:34 making Protocol compression

2002-1-1 22:55:34 making Addr/Ctl compression

2002-1-1 22:55:34 LCP ACK: valid //以上为LAC和BD2004的PPP/LCP建链

2002-1-1 22:55:34 PPP Serial0/2: LCP Ack Sent; Opened

2002-1-1 22:55:34 [L2TP]: tunnel T435 to be created.

2002-1-1 22:55:34 [L2TP] T435: state changed into IDLE

2002-1-1 22:55:34 [L2TP] T435: session S1 to be created.

2002-1-1 22:55:34 [L2TP] T435|S1: state changed into IDLE

2002-1-1 22:55:34 [L2TP] T435: TX -> SCCRQ to T0

2002-1-1 22:55:34 [L2TP] T435: state changed into WAIT REPLY

2002-1-1 22:55:34 [L2TP] T435: RX <- SCCRP from LNS T14

2002-1-1 22:55:34 [L2TP] T435: TX -> SCCCN to LNS T14 //LAC与LNS建立tunnel

2002-1-1 22:55:34 [L2TP] T435: state changed into ESTABLISHED

2002-1-1 22:55:34 [L2TP] T435|S1: TX -> ICRQ to LNS T14|S0

2002-1-1 22:55:34 [L2TP] T435|S1: state changed into WAIT REPLY

2002-1-1 22:55:34 [L2TP] T435: RX <- ZLB from LNS T14

2002-1-1 22:55:34 [L2TP] T435|S1: RX <- ICRP from LNS T14|S1

2002-1-1 22:55:34 making ACCM: 0x000a0000

2002-1-1 22:55:34 making Auth Protocol: 0xc223

2002-1-1 22:55:34 making Auth algorithm: 0x05

2002-1-1 22:55:34 making Magic Number: 0x42a8efd6

2002-1-1 22:55:34 making Protocol compression

2002-1-1 22:55:34 making Addr/Ctl compression

2002-1-1 22:55:34 making ACCM: 0x000a0000

2002-1-1 22:55:34 making Magic Number: 0x219c0014

2002-1-1 22:55:34 making Protocol compression

2002-1-1 22:55:34 making Addr/Ctl compression

2002-1-1 22:55:34 [L2TP] T435|S1: TX -> ICCN to LNS T14|S1 //以上LAC与LNS建session

2002-1-1 22:55:34 [L2TP] T435|S1: state changed into ESTABLISHED

2002-1-1 22:55:34 [L2TP] T435: RX <- ZLB from LNS T14

C、以LNS为观察点

Debug l2tp event

Debug ppp negotiation

2004-1-1 23:14:24 [L2TP] T14: session S2 to be created.

2004-1-1 23:14:24 [L2TP] T14|S2: state changed into IDLE

2004-1-1 23:14:24 [L2TP] T14|S2: RX <- ICRQ from LAC T435|S2

2004-1-1 23:14:24 [L2TP] T14|S2: TX -> ICRP to LAC T435|S2

2004-1-1 23:14:24 [L2TP] T14|S2: state changed into WAIT CONNECT

2004-1-1 23:14:24 [L2TP] T14|S2: RX <- ICCN from LAC T435|S2 //session建立

2004-1-1 23:14:24 [L2TP] T14: TX -> ZLB to LAC T435

2004-1-1 23:14:24 [L2TP] T14|S2: state changed into ESTABLISHED

2004-1-1 23:14:24 Line on Interface Virtual-access0, changed state to up

2004-1-1 23:14:24 PPP Virtual-access0: LCP Listen ; Start

2004-1-1 23:14:24 making ACCM: 0x000a0000

2004-1-1 23:14:24 making Magic Number: 0x78b8a974

2004-1-1 23:14:24 making Protocol compression

2004-1-1 23:14:24 making Addr/Ctl compression //LNS与LAC/2004协商PPP/LCP参数

2004-1-1 23:14:24 PPP Virtual-access0: LCP Listen ; TX -> Config Req, id: 0, len: 20

2004-1-1 23:14:24 PPP Virtual-access0: LCP Req Sent; Close

2004-1-1 23:14:24 make local response (len 16): 0x8d6aefa8aab21e1fee55db702335e22e

2004-1-1 23:14:24 CHAP: Valid Response

2004-1-1 23:14:24 PPP Virtual-access0: CHAP Req Sent; TX -> Chap Success, id: 0, len: 28

2004-1-1 23:14:24 PPP Virtual-access0: CHAP Req Sent; Open

2004-1-1 23:14:24 Line protocol on Interface Virtual-access0, changed state to up

2004-1-1 23:14:24 PPP Virtual-access0: IPCP Listen ; Start

2004-1-1 23:14:24 making IP source address: 172.16.0.1

2004-1-1 23:14:24 PPP Virtual-access0: IPCP Listen ; TX -> Config Req, id: 0, len: 10

2004-1-1 23:14:24 PPP Virtual-access0: IPCP Req Sent; RX <- Config Req, id: 103, len: 16

2004-1-1 23:14:24 checking IP compression 0x002d

2004-1-1 23:14:24 with IP compression slots 16, flag 0

2004-1-1 23:14:24 ipcp_check don't support ipcp compression

2004-1-1 23:14:24 result Config Reject, option 2, length 6

2004-1-1 23:14:24 making IP compression 0x002d

2004-1-1 23:14:24 with IP compression slots 16, flag 0

2004-1-1 23:14:24 checking IP source address: 0.0.0.0

2004-1-1 23:14:24 Get peer IP addr from pool

2004-1-1 23:14:24 result Config Nak, option 3, length 6

2004-1-1 23:14:24 PPP Virtual-access0: IPCP Req Sent; TX -> Config Reject, id: 103, len: 10

2004-1-1 23:14:24 PPP Virtual-access0: IPCP Req Sent; RX <- Config Ack, id: 0, len: 10

2004-1-1 23:14:24 making IP source address: 172.16.0.1

2004-1-1 23:14:24 IPCP ACK: valid

2004-1-1 23:14:24 PPP Virtual-access0: IPCP Ack Rcvd; RX <- Config Req, id: 104, len: 10

2004-1-1 23:14:24 checking IP source address: 0.0.0.0

2004-1-1 23:14:24 result Config Nak, option 3, length 6

2004-1-1 23:14:24 making IP source address: 172.16.0.10

2004-1-1 23:14:24 PPP Virtual-access0: IPCP Ack Rcvd; TX -> Config Nak, id: 104, len: 10

2004-1-1 23:14:24 PPP Virtual-access0: IPCP Ack Rcvd; RX <- Config Req, id: 105, len: 10

2004-1-1 23:14:24 checking IP source address: 172.16.0.10

2004-1-1 23:14:24 result Config Ack, option 3, length 6

2004-1-1 23:14:24 making IP source address: 172.16.0.10

2004-1-1 23:14:24 PPP Virtual-access0: IPCP Ack Rcvd; TX -> Config Ack, id: 105, len: 10

2004-1-1 23:14:24 PPP Virtual-access0: IPCP Ack Rcvd; Opened

2004-1-1 23:14:24 PPP Virtual-access0: IPCP Add route to peer (172.16.0.10) OK!

//LNS给BD2004分配ip地址

4.3.4 分析和说明:

从上面的debug跟踪信息可以看出,PC/BD2004首先触发拨号,与LAC路由器建立PPP连接,协商LCP参数,此时LAC会在LCP的参数指明要求CHAP认证,但是当PC/BD2004的认证信息送过来以后,却不在本地认证,他将这些信息送给LNS,在LNS侧完成认证,这个信息在LNS的debug中也可以看到!所以在LAC上配置CHAP的时候只需写上两条命令ppp authen chap和ppp chap hostname ***即可,这仅仅是用于触发LAC和LNS之间的L2TP隧道的!

等认证完成之后,也就是隧道建立完成之后,所有的内容都是LNS和PC/BD2004之间的协商了!另外,LAC和PC/BD2004之间建立的仅仅是二层的连接,所以相应的串口/PPP里面无需指定ip地址!

5 L2TP与其他功能模块的结合

5.1 L2TP与NAT

由于L2TP本身设计的原因,无论是LNS还是LAC,完全可以进行NAT穿越,而不影响其功能,这里就不在多说。

5.2 L2TP与IPSec

L2TP虽然是一个非常优秀且高效的二层隧道协议,可满足大多数的应用组网需求,但是由于本身的缺陷,无法提供更高的安全加密特性~所以在很多对数据加密比较敏感的领域,L2TP就无法胜任了;这里我们就重点说一下L2TP和IPSec的结合应用。

这里牵涉到IPSec的详细内容,这里就不详细说明了,下面只将配置和应用要点!

5.2.1 Router-Router[Ipsec对L2TP tunnel加密]

5.2.1.1 实验环境:

假设LNS端为固定ip[10.0.0.1]的光纤接入,内网地址192.168.100.0/24;LAC外网是ADSL接入,这里假设分配到的地址10.0.0.2,内网192.168.200.0/24;L2TP隧道的网段为172.16.0.0/16;

既然我们假设了LAC端为动态ip地址,所以LNS端IPSec也配置成动态了!

5.2.1.2 LNS_Config: //红色为Ipsec配置,蓝色为L2TP配置

ip local pool L2POOL 172.16.0.10 10

username l2tp@bd.com password 7 03340C313B4A

crypto isakmp key bdcom 0.0.0.0 0.0.0.0

crypto isakmp policy 100 //这里两行为IKE协商参数

crypto ipsec transform-set bdcom

crypto dynamic-map bd

set transform-set bdcom

crypto map bdcom 100 ipsec-isakmp dynamic bd //这四行为IPSEC协商参数

interface Virtual-template0

ip address 172.16.0.1 255.255.0.0

no ip directed-broadcast

ppp authentication chap

ppp chap hostname l2tp@bd.com

peer default ip address pool L2POOL

interface FastEthernet0/0

ip address 192.168.100.254 255.255.255.0

no ip directed-broadcast

interface Ethernet2/0

ip address 10.0.0.1 255.0.0.0

no ip directed-broadcast

crypto map bdcom //应用到端口,Ipsec生效

duplex half

ip route default Virtual-template0

vpdn enable

vpdn-group 1

accept-dialin

protocol l2tp

local-name LNS

virtual-template 0

5.2.1.3 LAC_Config:

username l2tp@bd.com password 0 bdcom

crypto isakmp key bdcom 10.0.0.1 255.255.255.255

crypto isakmp policy 100

crypto ipsec transform-set bdcom

crypto map bdcom 100 ipsec-isakmp // LNS外网具有固定ip,所以使用这里使用静态IPSec

set peer 10.0.0.1

set transform-set bdcom

match address bdcom

interface Virtual-tunnel0

ip address negotiated

no ip directed-broadcast

ppp chap hostname l2tp@bd.com

no peer neighbor-route

interface FastEthernet0/0

ip address 10.0.0.2 255.0.0.0

no ip directed-broadcast

crypto map bdcom //应用到端口生效

interface FastEthernet0/1

ip address 192.168.200.254 255.255.255.0

no ip directed-broadcast

ip route default Virtual-tunnel0

ip access-list extended bdcom //这里定义需要加密的内容[L2TP:UDP1701端口]

permit udp 10.0.0.2 255.255.255.255 10.0.0.1 255.255.255.255 eq 1701

vpdn enable

vpdn-group 1

request-dialin

domain bd.com

initiate-to ip 10.0.0.1 priority 1

protocol l2tp

local-name LAC

5.2.1.4 验证:

LAC#show crypto ipsec sa detail

Interface: FastEthernet0/0

Crypto map name:bdcom , local addr. 10.0.0.2

local ident (addr/mask/prot/port): (10.0.0.2/255.255.255.255/17/0)

remote ident (addr/mask/prot/port): (10.0.0.1/255.255.255.255/17/1701)

local crypto endpt.: 10.0.0.2, remote crypto endpt.: 10.0.0.1

inbound esp sas:

spi:0x84e2e093(2229461139)

transform: esp-des

in use settings ={ Tunnel }

sa timing: remaining key lifetime (k/sec): (4607968/1832)

#pkts decaps: 395, #pkts decrypt: 395, #pkts auth: 0

#pkts decaps err: 0, #pkts decrypt err: 0, #pkts auth err: 0

#pkts replay failed: 0

outbound esp sas:

spi:0x8b5542f4(2337620724)

transform: esp-des

in use settings ={ Tunnel }

sa timing: remaining key lifetime (k/sec): (4607961/1832)

#pkts encaps: 395, #pkts encrypt: 395, #pkts auth: 0

#pkts encaps err: 0, #pkts encrypt err: 0, #pkts auth err: 0

#pkts replay failed: 0

――――――――――――――――――――――――――――――――――――――――――

LAC#show l2tp tunnel

L2TP Tunnel Information:

Total tunnels 1 sessions 1

Local_ID Remote_ID State Remote_Name Remote_Address UDP_Port Sessions

4 1 Est LNS 10.0.0.1 1701 1

5.2.1.5 说明:

这是一种最常见的L2TP+IPSec的应用模式,使用IPSec对整个L2TP隧道加密,提高了L2TP安全性,从而拓展了L2TP的应用范围,但是由于BDCOM路由器目前还不支持IPSec的NAT穿透,所以,应用上还是有限制!那么我们换一下思路:先将需要传的内容加密,然后放在L2TP隧道里面传输,前面已经提到,我们的L2TP是能够进行NAT穿透的!

5.2.2 Router-Router[Ipsec对上层数据加密]

环境和5.2.1的完全相同,假设条件也相同!先看配置:

5.2.2.1 LNS_Config:

ip local pool L2POOL 172.16.0.10 10

username l2tp@bd.com password 7 03340C313B4A

crypto isakmp key bdcom 0.0.0.0 0.0.0.0

crypto isakmp policy 100 //这里两行为IKE协商参数

crypto ipsec transform-set bdcom

crypto dynamic-map bd

set transform-set bdcom

crypto map bdcom 100 ipsec-isakmp dynamic bd //这四行为IPSEC协商参数

interface Virtual-template0

ip address 172.16.0.1 255.255.0.0

no ip directed-broadcast

crypto map bdcom //应用到端口,Ipsec生效

ppp authentication chap

ppp chap hostname l2tp@bd.com

peer default ip address pool L2POOL

interface FastEthernet0/0

ip address 192.168.100.254 255.255.255.0

no ip directed-broadcast

interface Ethernet2/0

ip address 10.0.0.1 255.0.0.0

no ip directed-broadcast

duplex half

ip route default Virtual-template0

vpdn enable

vpdn-group 1

accept-dialin

protocol l2tp

local-name LNS

virtual-template 0

5.2.2.2 LAC_Config:

username l2tp@bd.com password 0 bdcom

crypto isakmp key bdcom 172.16.0.1 255.255.255.255

crypto isakmp policy 100

crypto ipsec transform-set bdcom

crypto map bdcom 100 ipsec-isakmp // LNS外网具有固定ip,所以使用这里使用静态IPSec

set peer 172.16.0.1

set transform-set bdcom

match address bdcom

interface Virtual-tunnel0

ip address negotiated

no ip directed-broadcast

crypto map bdcom //应用到端口生效

ppp chap hostname l2tp@bd.com

no peer neighbor-route

interface FastEthernet0/0

ip address 10.0.0.2 255.0.0.0

no ip directed-broadcast

interface FastEthernet0/1

ip address 192.168.200.254 255.255.255.0

no ip directed-broadcast

ip route default Virtual-tunnel0

ip access-list extended bdcom //这里定义需要加密的内容[双方局域网互通的ip]

permit ip 192.168.200.0 255.255.255.0 192.168.100.0 255.255.255.0

vpdn enable

vpdn-group 1

request-dialin

domain bd.com

initiate-to ip 10.0.0.1 priority 1

protocol l2tp

local-name LAC

5.2.2.3 验证:

这里我们发现这个实验无法完全成功,L2TP隧道能够建立,但是Ipsec无法协商通过,原因是LNS端的IPSEC配置是在Virtual-temp模板里面的,但是实际的数据接收是在virtual-access端口里面,而且如果一条L2TP隧道上面承载了多条session的话,就会生成多个virtual-access端口,此时如果要把vt模板的ipsec全部“copy”到各个va端口就会导致很多问题,就是说,目前BDCOM路由器还无法实现L2TP传输IPSec加密的数据!

LNS#show l2tp tunnel

L2TP Tunnel Information:

Total tunnels 1 sessions 1

Local_ID Remote_ID State Remote_Name Remote_Address UDP_Port Sessions

2 5 Est LAC 10.0.0.2 1701 1

――――――――――――――――――――――――――――――――――――――――――

LNS#show crypto ipsec sa

Interface: Virtual-template0

Crypto map name:bdcom , local addr. 172.16.0.1

local ident (addr/mask/prot/port): (192.168.100.0/255.255.255.0/0/0)

remote ident (addr/mask/prot/port): (192.168.200.0/255.255.255.0/0/0)

local crypto endpt.: 172.16.0.1, remote crypto endpt.: 172.16.0.10

inbound esp sas:

spi:0x57a2ec38(1470295096)

transform: esp-des

in use settings ={ Tunnel }

sa timing: remaining key lifetime (k/sec): (4608000/3573)

outbound esp sas:

spi:0xab5cc748(2874984264)

transform: esp-des

in use settings ={ Tunnel }

sa timing: remaining key lifetime (k/sec): (4608000/3573)

Interface: Virtual-access0 //可以看到实际接收数据的va端口没有ipsec的相关参数

Crypto map name:bdcom , local addr. 172.16.0.1

5.2.3 PC-Router

前面已经说过,BDCOM路由器还无法支持ipsec数据放在L2TP隧道中传输,那我们的PC-Router实验也就不考虑这种模式了,直接是ipsec去加密L2TP隧道!

5.2.3.1 实验环境

LNS局域网网关为192.168.100.254/24;LNS外网口地址为10.0.0.1/8;

LAC/PC为Win2k/XP的主机,拨号连接,ip地址不固定;

建立的L2TP隧道在172.16.0.0/16网段。

5.2.3.2 LNS_Config

LNS的配置与前面5.2.1.2的基本相同相同,但为了为了突出与Windows协商时需要注意的参数,这里再重复一遍://红色为Ipsec配置,蓝色为L2TP配置

ip local pool L2POOL 172.16.0.10 10

username l2tp@bd.com password 0 bdcom

crypto isakmp key bdcom 0.0.0.0 0.0.0.0

crypto isakmp policy 100

encryption 3des

group 2

lifetime 28800

crypto ipsec transform-set bdcom

mode transport

transform-type esp-des esp-md5-hmac

crypto dynamic-map bd

set security-association lifetime kilobytes 100000

set security-association lifetime seconds 900

set transform-set bdcom

crypto map bdcom 100 ipsec-isakmp dynamic bd

interface Virtual-template0

ip address 172.16.0.1 255.255.0.0

no ip directed-broadcast

ppp authentication chap

ppp chap hostname l2tp@bd.com

peer default ip address pool L2POOL

interface FastEthernet0/0

ip address 192.168.100.254 255.255.255.0

no ip directed-broadcast

interface Ethernet2/0

ip address 10.0.0.1 255.0.0.0

no ip directed-broadcast

crypto map bdcom

duplex half

ip route default Virtual-template0

vpdn enable

vpdn-group 1

accept-dialin

protocol l2tp

local-name LNS

virtual-template 0

5.2.3.3 PC配置

因为Win2K/XP在L2TP+IPSec上的基本相似,虽然配置的界面稍有差别,但不影响讲述,后面就以WinXP为例:由于WinXP/2K默认的L2TP+IPSec是需要“证书”来支持的,当然,这个功能在我们路由器上面还无法支持,也就是说:默认情况下Windows和BDCOM router还无法进行L2TP+IPSec的连接!

不过,如果利用之前所讲的,修改注册表将WinXP中L2TP和IPSec默认的绑定关系拆开,然后在分别配置L2TP连接和IPSec加密,这种方式和绑定时的差别就是:可以自己定义Ipsec的加密方式,或者说可以不必使用“证书”!实验证明也是可行的!

当然配置的时候是要分为L2TP和IPSec两部分的,前者的配置和单独使用L2TP拨号没有任何区别;而IPSec的配置这里也不想详细列出,请参阅我的专门文档,不过要注意的是IPSec中要指定加密的对象为UDP:1701报文,如下:

5.2.3.4 验证:

PC进行L2TP拨号时,首先会发起L2TP隧道建立,这个报文进而会触发Ipsec协商!

debug l2tp event

debug crypto isakmp

debug crypto ipsec

2004-1-1 05:37:45 ISAKMP: received packet from 10.0.0.150 //数据触发L2TP拨号

2004-1-1 05:37:45 ISAKMP(171): a state in <R>M_SA_SETUP, (with conn "4 bdcom 100 d161")

2004-1-1 05:37:45 ISAKMP(171): dealing with Delete Payload

2004-1-1 05:37:45 ISAKMP: deleting ISAKMP-SA(171)

2004-1-1 05:37:45 ISAKMP: delete dynamic conn "4 bdcom 100 d161"

2004-1-1 05:38:08 ISAKMP: received packet from 10.0.0.150

2004-1-1 05:38:08 ISAKMP: new state 173

2004-1-1 05:38:08 ISAKMP: state 173 bind conn '4 bdcom 100 d163'

2004-1-1 05:38:08 ISAKMP(173): processing ISAKMP-SA payload.

2004-1-1 05:38:08 ISAKMP(173): Checking ISAKMP transform 1

2004-1-1 05:38:08 encrypt: OAKLEY_3DES_CBC

2004-1-1 05:38:08 hash: OAKLEY_SHA

2004-1-1 05:38:08 group: OAKLEY_GROUP_MODP1024

2004-1-1 05:38:08 auth: OAKLEY_PRESHARED_KEY

2004-1-1 05:38:08 life-seconds: 28800

2004-1-1 05:38:08 attrs accept again isakmp policy 100 //IPSec IKE协商

2004-1-1 05:38:08 ISAKMP(173): sending packet to 10.0.0.150

2004-1-1 05:38:08 ISAKMP: received packet from 10.0.0.150

2004-1-1 05:38:08 ISAKMP(173): a state in <R>M_SA_XCHG, (with conn "4 bdcom 100 d163")

2004-1-1 05:38:09 ISAKMP(173): sending packet to 10.0.0.150

2004-1-1 05:38:09 ISAKMP: received packet from 10.0.0.150

2004-1-1 05:38:09 ISAKMP(173): a state in <R>M_KEY_XCHG, (with conn "4 bdcom 100 d163")

2004-1-1 05:38:09 ISAKMP: received packet from 10.0.0.150

2004-1-1 05:38:09 ISAKMP(173): a state in <R>M_KEY_XCHG, (with conn "4 bdcom 100 d163")

2004-1-1 05:38:09 ISAKMP(173): sending packet to 10.0.0.150

2004-1-1 05:38:09 ISAKMP: received packet from 10.0.0.150

2004-1-1 05:38:09 ISAKMP(173): a state in <R>M_SA_SETUP, (with conn "4 bdcom 100 d163")

2004-1-1 05:38:09 ISAKMP: new state 174

2004-1-1 05:38:09 ISAKMP(174): dealing with ID-payload

2004-1-1 05:38:09 ISAKMP: type ID_IPV4_ADDR

2004-1-1 05:38:09 ISAKMP: peer 10.0.0.150/255.255.255.255/17/0

2004-1-1 05:38:09 ISAKMP: local 10.0.0.1/255.255.255.255/17/1701

2004-1-1 05:38:09 ISAKMP(174): processing IPsec-SA payload.

2004-1-1 05:38:09 transform: ESP_DES

2004-1-1 05:38:09 encapsulation: ENCAPSULATION_MODE_TRANSPORT

2004-1-1 05:38:09 auth: AUTH_ALGORITHM_HMAC_MD5

2004-1-1 05:38:09 life-seconds: 900

2004-1-1 05:38:09 life-kliobytes: 100000

2004-1-1 05:38:09 ISAKMP: attr accept again transform-set bdcom //Ipsec阶段协商

2004-1-1 05:38:09 ISAKMP(174): add inbound sa

2004-1-1 05:38:09 <dest: 10.0.0.1, proto: ESP, spi: 0x459bb1f3(1167831539)>

2004-1-1 05:38:09 ISAKMP(174): sending packet to 10.0.0.150

2004-1-1 05:38:09 ISAKMP: received packet from 10.0.0.150

2004-1-1 05:38:09 ISAKMP(174): a state in <R>Q_IDLE_2, (with conn "4 bdcom 100 d164")

2004-1-1 05:38:09 ISAKMP(174): add outbound sa

2004-1-1 05:38:09 <dest: 10.0.0.150, proto: ESP, spi: 0x7c17792a(2081913130)>

2004-1-1 05:38:09 [L2TP]: tunnel T26 to be created.

2004-1-1 05:38:09 [L2TP] T26: state changed into IDLE

2004-1-1 05:38:09 [L2TP] T26: RX <- SCCRQ from bdcom-4mqk0vxk5 T21

2004-1-1 05:38:09 [L2TP] T26: TX -> SCCRP to bdcom-4mqk0vxk5 T21

2004-1-1 05:38:09 [L2TP] T26: state changed into WAIT CONNECT

2004-1-1 05:38:09 [L2TP] T26: RX <- SCCCN from bdcom-4mqk0vxk5 T21

2004-1-1 05:38:09 [L2TP] T26: TX -> ZLB to bdcom-4mqk0vxk5 T21 //L2TP隧道建立

2004-1-1 05:38:09 [L2TP] T26: state changed into ESTABLISHED

2004-1-1 05:38:09 [L2TP] T26: session S1 to be created.

2004-1-1 05:38:09 [L2TP] T26|S1: state changed into IDLE

2004-1-1 05:38:09 [L2TP] T26|S1: RX <- ICRQ from bdcom-4mqk0vxk5 T21|S1

2004-1-1 05:38:09 [L2TP] T26|S1: TX -> ICRP to bdcom-4mqk0vxk5 T21|S1

2004-1-1 05:38:09 [L2TP] T26|S1: state changed into WAIT CONNECT

2004-1-1 05:38:09 [L2TP] T26: RX <- ZLB from bdcom-4mqk0vxk5 T21

2004-1-1 05:38:09 [L2TP] T26|S1: RX <- ICCN from bdcom-4mqk0vxk5 T21|S1

2004-1-1 05:38:09 [L2TP] T26: TX -> ZLB to bdcom-4mqk0vxk5 T21 //L2TP链路建立

2004-1-1 05:38:09 [L2TP] T26|S1: state changed into ESTABLISHED

2004-1-1 05:38:09 Line on Interface Virtual-access0, changed state to up

2004-1-1 05:38:10 [L2TP] T26: RX <- ZLB from bdcom-4mqk0vxk5 T21

2004-1-1 05:38:10 Line protocol on Interface Virtual-access0, changed state to up

由此,我们可以发现,的确是首先进行ipsec协商,之后再进行L2TP隧道建立,也就是说Ipsec实现了对L2TP的加密!

  

爱华网本文地址 » http://www.413yy.cn/a/25101012/136371.html

更多阅读

DLP拼接屏的原理及应用 dlp大屏拼接

DLP是“Digital LightProcession”的缩写,即为数字光处理,也就是说这种技术要先把影像信号经过数字处理,然后再把光投影出来。它是基于TI(德州仪器)公司开发的数字微镜元件——DMD(DigitalMicromurrorDevice)来完成显示数字可视信息的技术

人工智能的原理及应用——论文 人工智能原理

人工智能的原理及应用姓名:厉森彪 班级:软件工程 学号:200726410110摘要人工智能(Artificial Intelligence,AI)一直都处于计算机技术的最前沿,经历了几起几落……长久以来,人工智能对于普通人来说是那样的可望而不可及,然而它却吸引了无数

偏光显微镜原理及应用二 偏光显微镜的原理

时间:2010-5-4 10:29:54来源:中国材料显微镜网作者:admin点击:1294次2. 光的吸收一束光线照射到物质的表面,一部分光线被反射,另一部分光线透过(透明材料),还有一部分光线要被物质所吸收。光的吸收主要是光的波动能转换为热能等其他形式的结

emule应用及原理(转载) 微机原理及应用

来到vc也有很长时间了,从不再潜水到现在有一个月的时间了,在作为技术区版主的一个月期间,我认真留意了好多朋友提出的问题,发现不仅是我们刚接触emule的朋友,就算是一些玩了几个月的朋友,对于一些emule的问题也是模棱两可,存在不少误解之处

声明:《L2TP原理及应用 openl2tp 功能》为网友划清界线分享!如侵犯到您的合法权益请联系我们删除