L2TP应用模型
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
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
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
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
1 1 Est 1 default 1701 202.1.1.1
-----------------------------------------------------------
Router#show l2tp session
L2TP Session Information:
Total tunnels 1 sessions 1
L2TP Session Information:
Total tunnels 1 sessions 1
Local_ID Remote_ID State Tunnel_ID Interface Username
1 1 Est 1 vn0
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
!
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
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将是不固定的,这给网络的上层应用带来了一些不便;
但是我们也知道,如果使用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
注释:
参考配置如下:
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
转载于:https://blog.51cto.com/mmfrancis/256120