1.gifL2TP应用模型

L2TP是一种典型的二层VPDN应用,具有简单高效,应用灵活等特性。

但该协议不具有加密特性,所以不适用于对信息安全比较敏感的场合。
在internet网络中,只要两台路由器之间的广域网能够互通,那么依靠L2TP这样的协议就可以实现两个对应的 局域网互通
L2TP的网络拓扑中,分为LNS、LAC、Client三个组成部分,但通常用路由器组网过程中,LAC和client通常由一台设备在充当,所以很多时候我们就简单的说L2TP的服务器端(LNS)和客户端(LAC+Client)
LNS参考配置:


aaa authentication ppp default local            //指定为本地认证方式
!
username test password test            //指定认证的具体用户名和密码
!
interface Virtual-template0           //设定VPDN拨号时的端口模版
 ip address 10.0.1.1 255.255.255.0           //L2TP隧道的本段地址
 no ip directed-broadcast
 ppp authentication pap           //启用认证,方式为pap
 peer default ip address 10.0.1.2           //如果认证通过,对端可获取的ip地址
!
!
interface FastEthernet0/0           //路由器的公网接口
 ip address 202.1.1.1 255.255.255.252
 no ip directed-broadcast
!

interface FastEthernet0/1           //路由器的内网接口
 ip address 172.16.1.1 255.255.255.0
 no ip directed-broadcast
!
!
!
vpdn enable           //开启(L2TP)VPDN服务进程
!
vpdn-group 0
 accept-dialin
           //设定为服务器端
 port Virtual-template0           //调用虚拟拨号模版
 protocol l2tp           //指定虚拟拨号用的协议
 local-name default

 
200811261710767300.png
 
 
 
LAC参考配置:

aaa authentication ppp default local            //指定为本地认证方式
!
username test password test            //指定认证的具体用户名和密码
!
interface Virtual-tunnel0           //设定VPDN拨号时的虚拟接口
 ip address negotiated           //L2TP隧道的本段地址通过认证后,由服务器协商确定
 no ip directed-broadcast
 ppp pap sent-username test password test           //设定拨号时所用的认证账号信息
!
interface FastEthernet0/0           //路由器的公网接口
 ip address 58.1.1.1 255.255.255.252
 no ip directed-broadcast
!
interface FastEthernet0/1           //路由器的内网接口
 ip address 172.16.2.1 255.255.255.0
 no ip directed-broadcast
!
!
!
vpdn enable           //开启(L2TP)VPDN服务进程
!
vpdn-group 0
 request-dialin
           //设定为客户端
 protocol l2tp           //指定虚拟拨号用的协议
 initiate-to ip 222.1.1.1 priority 1           //指定所要连接的服务器所在位置(IP)和优先级
 local-name default
 
注意:
 
1、由于实际应用中,LNS和LAC并不处于用一个网络中,所以必须要通过设置路由才能协助L2TP的协商互通;前面为了突出L2TP的配置模版,我省略了路由设置

 2、L2TP协商完成,并建立隧道之后,还需要添加路由。因为两个局域网要跨过internet互通,其互通的下一跳必须是建立在隧道接口上的,如virtual-tunnel0

 3、配置中的ip地址、认证账号都仅作为参考使用,实际应用时需要进行调整

 4、上述的L2TP配置也只是最典型应用。

 5、由于L2TP建立隧道时,是由客户端向服务器发起的,所以最好要给服务器端申请一个具有固定IP地址的广域网线路
 
 
完成之后在LAC或者LNS上均可查看隧道的状态(本处以LAC为例):

------------------------------------------------------------

Router#show l2tp tunnel
L2TP Tunnel Information:
Total tunnels 1 sessions 1

Local_ID Remote_ID  State  Sessions Remote_Name      UDP_Port Remote_Address
1        1          Est    1        default          1701     202.1.1.1

-----------------------------------------------------------

Router#show l2tp session
L2TP Session Information:
Total tunnels 1 sessions 1

Local_ID Remote_ID  State  Tunnel_ID  Interface  Username
1        1          Est    1          vn0


------------------------------------------------------------
Router#show inter virtual-tunnel 0
Virtual-tunnel0 is up, line protocol is up
  Hardware is Unknown device
  MTU 1500 bytes, BW 100000 kbit, DLY 10000 usec
  Internet address is 10.0.1.2/32
  Encapsulation PPP, loopback not set
  Keepalive set(10 sec)
  LCP  Opened
  PAP  Opened,  Message: 'Welcome to BDCOM Router'
  IPCP Opened
       local IP address: 10.0.1.2  remote IP address: 10.0.1.1
 

扩展介绍1:
有些时候,我们建立一个L2TP/PPTP服务器端之后,可能同时会有多个用户拨号过来,此时我们给对方分配地址的指令 peer default ip address 10.0.1.2 就不太合适了,毕竟网络中多个主机不可能使用相同的IP地址。

 
这时我们需要ip地址池,完整的配置就应该为:
ip local pool <pool_name> 10.0.1.10 50                //建立一个pool,需要指定起始ip和ip地址的总数量
!
aaa authentication ppp default local
!
username test password test
!
interface Virtual-template0
 ip address 10.0.1.1 255.255.255.0
 no ip directed-broadcast
 ppp authentication pap
 peer default ip pool <pool_name>           //如果认证通过,对端可获取的ip地址
!
interface FastEthernet0/0
 ip address 202.1.1.1 255.255.255.252
 no ip directed-broadcast
!

 
interface FastEthernet0/1
 ip address 172.16.1.1 255.255.255.0
 no ip directed-broadcast
!
!
vpdn enable
!
vpdn-group
0
 accept-dialin
 port Virtual-template0
 protocol l2tp
 local-name default

显然,l2tp配置的主题部分与之前的所有内容完全相同,只是需要单独建立一个ip pool以供调用。
 
注意,此时客户端拨号获得的ip地址是从整个pool中轮询分配并获得的,即ip为“动态”,使用时请注意
 
扩展介绍2:

如果我们的网络需要有多个客户端,显然此时需要pool形式的地址分配;
但是我们也知道,如果使用pool,某个确定用户得到的ip将是不固定的,这给网络的上层应用带来了一些不便;

如何解决这个问题呢?

思路如下:

1、使用peer defult ip address ***来代替pool方案;

2、要简历多个interface virtual-template模板,否则无法给多个用户分配ip。相应需要多个vpdn-group来 调用virtual-template;

3、由于是是vpdn-group调用vt模板,也就是说用户端拨号到LNS服务器之后,要先选择vpdn-group,那么如何选择呢?

按照上面的vpdn-group配置模板,是没有任何约束条件的。也就是说,任意一个vpdn-group都可以匹配所有的客户端拨号,这显然无法实现我们的要求。

对了,要增加约束条件:使用 terminate-from <hostname>来对客户端进行分拣。
参考配置如下:
aaa authentication ppp default local
!
username test password test
!
interface Virtual-template0
 ip address 10.0.1.1 255.255.255.0
 no ip directed-broadcast
 ppp authentication pap
 peer default ip address 10.0.1.10
!
interface Virtual-template1
 ip address 10.0.1.1 255.255.255.0
 no ip directed-broadcast
 ppp authentication pap
 peer default ip address 10.0.1.20
!
vpdn enable
!
vpdn-group 0
 accept-dialin
 port Virtual-template0
 protocol l2tp
 terminate-from test0
 local-name default
!
vpdn-group 1
 accept-dialin
 port Virtual-template1
 protocol l2tp
 terminate-from test1
 local-name default
注释:

1、对于客户端来讲,只要进行正常的L2TP拨号即可,如果在发起拨号的时候,其自己的hostname是test0,那么将匹配vpdn-group0,并因此而调用到vt0这个模板,最后通过认证之后分配到的ip将肯定是10.0.1.10
2、如果客户端的hostname是test2,那么得到的地址一定是10.0.1.20;
3、如果用户的host主机名是其他情况,那么L2TP将失败(找不到合适的vpdn-group)
4、在这里,多个vt模板的ip地址都是一样的,都为10.0.1.1,这个没有关系。虽然路由器的多个端口的ip地址不能是同一网段,但这里的vt是拨号模板,而不是具体接口,所以无此限制。但它们给客户分配的地址一定要不一样的
5、这里要匹配的hostname。如果客户端是普通PC,就是其windows的主机名;如果是博达路由器,就是其LAC配置的vpdn-group中的 local-name