【防火墙技术连载22】强叔侃墙 VPN篇 L2TP Client-Initiated VPN

[复制链接]
发表于 : 2014-6-13 11:54:46 最新回复:2018-11-19 16:26:48
28286 33
强叔侃墙
强叔侃墙 官方号

现在大家普遍对PC、PAD或手机上的各种客户端不太陌生了,最常见的是PPPoE客户端,其次是VPN客户端。VPN客户端的作用就是帮助用户在PC或PAD或手机上触发建立一条直通公司总部网络的隧道,实现用户自由访问总部网络的意愿。当然用户能轻松进入隧道也必须可以自由离开隧道??切换到直接访问Internet,这有点像是掌握了通往地球(总部网络)的“虫洞”入口的都教授可以瞬间自由往来于两个遥远的星球,当然也可乘坐星际飞行器在宇宙中漫游(Internet)。无论是在现实社会还是在虚拟网络世界,幸福生活似乎只有在消除了时空距离后方能体会,强叔用真实体验告诉大家Client-Initiated VPN可以助您轻松过上都教授的幸福生活。

都教授要借助L2TP客户端穿越“虫洞”进入公司网络,必然要先通过“门神”LNS的身份检查(检查手段毫不含糊,用户名称、密码、主机名称、隧道验证应有尽有)。LNS为通过验证的用户发放特别通行证(公司内网IP地址),对试图混入的人说bye-bye。Client-Initiated VPN配置中体现的就这样一个简单的思路(本例仅给出本地认证配置):

L2TP Client

LNS

l 对端IP地址

l 登录用户(PPP用户)名称

l 登录用户(PPP用户)密码

l 主机名称(可选,也叫隧道名称。Windows自带的L2TP客户端无法配置隧道名称。)

l PPP认证模式(PAP/CHAP/EAP,有些客户端默认CHAP

l 隧道验证(可选,有些客户端不支持)

前三项是必配内容,后三项可能会因客户端不同有所取舍。

l2tp enable

 l2tp domain suffix-separator @                                

interface LoopBack0                                                            

 ip address 192.168.5.1 255.255.255.0

interface Virtual-Template1                                                     

 ppp authentication-mode chap                                              

 ip address unnumbered interface LoopBack0                                     

 remote address pool                                            

l2tp-group 1                                                                   

 undo tunnel authentication                                                    

 allow l2tp virtual-template 1 remote client1 //指定VT接口和对端主机名称 。对端使用Windows自带的L2TP客户端时不指定对端主机名称。                                      

 tunnel name LNS         //本端隧道名称                                                      

 tunnel timer hello 0     

aaa

local-user l2tp@radius password cipher %$%$y>z_1xG|mINC.~+P.b()4+"v%$%$  //本地用户名、密码     

local-user l2tp@radius service-type ppp                                        

domain radius

ip pool 0 10.21.80.1 10.21.80.254

VT接口大家感觉比较陌生吧?它是用于二层协议通信的逻辑接口,比如PPP和L2TP协议通信、PPP和Ethernet协议通信,都会用到它,所以在L2TP VPN中要开启VT接口所在安全区域跟L2TP物理接口所在安全区域之间的包过滤,保证PPP和L2TP协议通信畅通无阻。
思想是神经元活动的结果,配置最终体现到一系列的消息交互中。配置不太复杂,但消息交互可不太简单。为了让大家一目了然,并方便跟下期的NAS-Initiated VPN做对比,强叔画了一张简图,然后对着这张图对L2TP Client与LNS之间的消息交互进行深入剖析。


结合抓包情况来讲解一下Client-Initiated VPN建立的完整过程:

阶段1 建立L2TP隧道(控制连接):3条消息协商进入虫洞时机
L2TP Client和LNS通过交互三条消息协商隧道ID、UDP端口(LNS用1701端口响应Client隧道建立请求)、主机名称、L2TP的版本、隧道验证(Client不支持隧道验证时LNS的隧道验证要关闭,例如WIN7操作系统)等参数。

仅给出隧道ID协商过程:

步骤1

Client:LNS兄,用88作为Tunnel ID跟我通信吧。

 

步骤2

LNS:OK。Client,用1作为Tunnel ID跟我通信。

步骤3

Client:OK。

 

阶段2 建立L2TP会话:3条消息唤醒虫洞门神
L2TP Client和LNS通过交互三条消息协商Session ID,建立L2TP会话。跟“门神”对上话了,才可能提交身份认证材料呀!

注:ZLB表示目前空闲,没有消息要发送。
Session ID协商过程:

步骤1

ClientLNS,采用1作为Session ID跟我通信吧。

 

步骤2

LNSOKClient,采用37作为Session ID跟我通信吧。

步骤3

Client:OK。

 

阶段3 创建PPP连接:身份认证,发放特别通行证
1. LCP协商。LCP协商是两个方向分开协商的,主要协商MRU大小。
说明:MRU 是PPP的数据链路层参数,类似以太网中的MTU。如果PPP链路一端设备发送的报文载荷大于对端的 MRU,这个报文在传送时就会被分片。

2. PPP验证。
验证方式包括CHAP、PAP、EAP(高端防火墙不支持),CHAP或PAP可以在本地认证、也可在AAA服务器上认证;EAP只能在AAA服务器上进行认证。EAP认证比较复杂,我们等到IPSec部分再详解,此处仅给出最常用的CHAP验证过程:

经典的三次握手过程:

步骤1

LNSClient,发给你一个“挑战(Challenge)”,用它来加密你的密码吧。

步骤2

ClientOK,把我的用户名和加密后的密码发给你,请验证。

步骤3

LNS:验证通过,欢迎来到PPP的世界。

LNS(或AAA服务器)上配置的用户名和密码是用来验证Client的,当然要求“本人”和“签证”完全一致,即要求L2TP Client和LNS上配置的用户名和密码完全一致。这里详解一下什么叫用户名完全一致:

这是很多人问过的问题,道理很简单,但却是大家干活时常犯的错误。
讲了半天domain的问题,大家会不会问划分domain有何意义?
对于大企业来说,往往会按部门来划分多个domain, LNS(或AAA服务器)都支持根据domain给不同部门创建不同的地址池,也就是不同部门的网段可以通过地址池规划分开,这样方便后续部署不同的访问控制策略。
3. IPCP协商,成功后分配IP地址。
分配给Client的IP地址是10.21.80.2,后续交互的报文都是由10.21.80.2??Client的私网地址发出的。


看到这里大家会不会问VT接口地址、地址池地址和总部网络地址如何规划?注意以下两点即可:
首先,VT接口地址和地址池地址可以规划在同一网段,也可以不在同一网段。如果在同一网段,请将两者配置为不重叠的地址,即VT接口地址不能包含在地址池地址中。
其次,建议把地址池地址和总部网络地址规划为不同的网段。如果万不得已,将地址池地址和总部网络地址配置为同一网段后,则必须在LNS连接总部网络的接口上开启ARP代理功能,并且开启L2TP虚拟转发功能,保证LNS可以对总部网络服务器发出的ARP请求进行应答。
假设LNS连接总部网络的接口是GigabitEthernet1/1/16,开启ARP代理功能和L2TP虚拟转发功能的配置如下: 

interface GigabitEthernet1/1/16

 ip address 192.168.0.1 255.255.255.0 

 arp-proxy enable     //开启ARP代理功能

 virtual-l2tpforward enable     //开启L2TP虚拟转发功能


总结一下Client-Initiated VPN的特点: 

  • L2TP VPN跟GRE VPN有很大不同。GRE VPN没有隧道协商过程,是没有控制连接的隧道,是没有状态的隧道,所以也无法查看隧道、检查隧道状态。但L2TP VPN是有控制连接的隧道,可以查看到隧道和会话。(IPSec VPN表现的更好,后续再讲)
  • 对于Client-Initiated VPN来说Client和LNS之间存在一条L2TP隧道,隧道中只有一条L2TP会话,PPP连接就承载在此L2TP会话上。(这一点跟NAS-Initiated VPN不同,需要关注一下)

阶段4 数据封装传输:穿越虫洞,访问地球
想把都教授如何穿越虫洞的过程讲清楚很困难,但是把L2TP客户端的数据如何穿越L2TP隧道达到总部网络的过程讲清楚不太难,这就涉及到了L2TP数据报文的封装过程。这个过程跟GRE报文穿“马甲”脱“马甲”的过程很相似,不同的是马甲的样式有点变化:

说明:本例中是两个Client之间通信,所以私有IP地址为两个内网地址。

至此,L2TP Client可以畅通无阻访问总部网络了,就像都教授穿过虫洞回到温暖的家。但有一个疑问,Client发出的报文进入隧道到达总部服务器没有问题了,但从总部服务器到Client的回程报文是如何进入隧道返回Client的?我们似乎并没有配置什么路由将回程报文引导到隧道呀?查看LNS路由表,发现了一个有趣的现象:LNS为获得私网IP地址的Client自动下发了一条主机路由。

这条自动生成的主机路由协议类型为UNR(User Network Route),下一跳为Client本身的地址,出接口是InLoopBack0。这条路由就是LNS上虫洞的入口,指引去往Client的报文进入虫洞,回程报文就不愁找不到隧道入口了。看来在虫洞建立时,L2TP就已经为都教授的来去自如做好了充分准备,那还有什么可担心的呢?
上文我们只使用了一个Client来讲解,实际环境中会有多个Client同时穿过虫洞访问总部网络。如果Client已经不满足只访问总部网络,还想访问其他的Client,即Client之间实现相互访问,L2TP能做到吗?别忘了,LNS是连接多个虫洞的中转站,通过LNS来转发,两个Client之间也可以自如访问。当然,前提是双方要知道LNS为对方分配的IP地址。


Client-Initiated VPN的美妙之处强叔已经展示给各位了,下期强叔要为大家推出NAS-Initiated VPN,一种更强大的L2TP VPN。

最后强叔提问:

出差员工上网的环境不固定,可能需要经过NAT后才能接入到互联网,那么经过NAT后可以正常连接到LNS吗?

附录:

现在无论PC、还是PAD、还是手机都已经考虑到了大家穿越时空的需求,当然强叔也为大家提供了最丰富的参考资料??华为VPN Client软件,WINDOWS、苹果、安卓客户端详细配置可以参考《维护宝典》中相关内容。PC用户通过L2TP VPN访问总部同时连接Internet的秘诀也在其中,有需要的话可以耐心一步步操作,肯定不会让你失望的。
http://support.huawei.com/enterprise/docinforeader.action?contentId=DOC1000037511&idPath=7919710|9856724|7923140|9859047|5799165

 

 

 

上一篇 VPN篇 L2TP VPN的诞生及演进

下一篇 VPN篇 L2TP NAS-Initiated VPN

汇总贴

本帖被以下专题推荐:

  • x
  • 常规:

点评 回复

跳转到指定楼层
Cullen
Cullen   发表于 2014-8-11 13:37:27 已赞(0) 赞(0)

Hello 

    强叔

    我想咨询下个问题,在上文中您提到了MRS: Maximum Receive Unit,这个和MSS:Maximum Segment Size 有没有什么区别?

  • x
  • 常规:

点评 回复

强叔侃墙
强叔侃墙 官方号 发表于 2014-8-11 19:27:25 已赞(0) 赞(0)

回复 14 楼

Maximum Receive Unit是PPP的数据链路层参数,决定一个信息字段的最大长度,与MTU相对应。MSS表示TCP连接的对端发往本端的最大TCP报文段的长度,是在TCP三次握手中协商出来的参数,属于传输层的范畴。
  • x
  • 常规:

点评 回复

周中斌
周中斌   发表于 2014-9-16 16:08:10 已赞(0) 赞(0)

L2TP隧道协商中,没用使用到IP地址信息,可以说该协议与NAT是可以共存的。
  • x
  • 常规:

点评 回复

安宁庄前街东口
安宁庄前街东口   发表于 2014-6-13 12:11:57 已赞(0) 赞(0)

抢沙发支持强叔~~ 强叔就是防火墙的都教授!
  • x
  • 常规:

点评 回复

新知
新知  新锐 发表于 2014-6-13 12:14:12 已赞(0) 赞(0)

只做前三 不争第一 终于抢到沙发了 顶强叔...
  • x
  • 常规:

点评 回复

shadowboy
shadowboy   发表于 2014-6-13 13:52:02 已赞(0) 赞(0)

经过nat可以连接。。。支持强叔 
  • x
  • 常规:

点评 回复

noita
noita   发表于 2014-6-13 13:53:30 已赞(0) 赞(0)

第一时间看完了。先接触的SSL VPN,再来看L2TP Client-Initiated VPN,果然两者有很多相似之处,报文封装、路由等等。期待墙叔后面能讲讲这两个的区别和优劣比较。

  • x
  • 常规:

点评 回复

hierarch
hierarch   发表于 2014-6-13 17:32:56 已赞(0) 赞(0)

问下,想针对不同的移动办公用户分配不同网段的地址,用domain来怎么控制呀
  • x
  • 常规:

点评 回复

DoubleDong
DoubleDong   发表于 2014-6-14 11:17:01 已赞(1) 赞(1)

看完,点个赞!
  • x
  • 常规:

点评 回复

发表回复
您需要登录后才可以回帖 登录 | 注册

警告 内容安全提示:尊敬的用户您好,为了保障您、社区及第三方的合法权益,请勿发布可能给各方带来法律风险的内容,包括但不限于政治敏感内容,涉黄赌毒内容,泄露、侵犯他人商业秘密的内容,侵犯他人商标、版本、专利等知识产权的内容,侵犯个人隐私的内容等。也请勿向他人共享您的账号及密码,通过您的账号执行的所有操作,将视同您本人的行为,由您本人承担操作后果。详情请参看“隐私声明
如果附件按钮无法使用,请将Adobe Flash Player 更新到最新版本!
登录参与交流分享

登录参与交流分享

登录