多厂商VPN系列之六:Cisco DMVPN【基于IPSEC的高扩展性技术】 | 网络之路博客(公众号同名)(其他平台网络之路Blog)
登录
  • 欢迎网络之路博客网站,分享有用的知识点,公众号:网络之路博客,B站:网络之路Blog
  • 如果您觉得本站对您有帮助,那么赶紧使用Ctrl+D 收藏吧,支持我们下
  • 远程技术支持的淘宝店铺已经开张了哦,传送门:需要的朋友可以点击查看

多厂商VPN系列之六:Cisco DMVPN【基于IPSEC的高扩展性技术】

【汇总】学习VPN其实很简单

文档帖子汇总学习视频Book与实验手册学习必备软件
    博主也只是业余时间写写技术文档,请大家见谅,大家觉得不错的话,可以推荐给朋友哦,博主会努力推出更好的系列文档的。如果大家有任何疑问或者文中有错误跟疏忽的地方,欢迎大家留言指出,博主看到后会第一时间修改,谢谢大家的支持,更多技术文章尽在网络之路博客,http://ccieh3c.com

简介

类似于思科DMVPN技术的,其他厂商的 H3C的叫DVPN,HW的叫DSVPN,Juniper的叫 AC-vpn(Netscreen支持) ,SRX的话只支持NHTB,不过效果比DMVPN差很多。

Cisco DMVPN是为了解决大型的企业的需求而出现的。基于传统的IPsec VPN的缺点。
1、如果基于Hub-spoke的模型,就像上面的图,如果上海的分支需要访问长沙分支,那么就必须经过总部到达,这样一样经过总部就需要解密然后加密发送出去,center端的路由器负担非常重。而且延迟也大,对于一些敏感的流量是不允许的。
2、如果实现full mash的话,那么就必须每两个路由器之间建立一个IPsec通道,这对于配置跟管理都是非常繁琐的,并且必须依赖于固定IP地址,在如今IPv4的网络中,固定IP越来越难获得了。

Cisco DMVPN就是解决这个问题,它主要为大型企业网络提供的解决方案,扩展性强。它由几个协议共同完成
我们都知道GRE是一个典型的VPN隧道,它实现一个点对点的连接,如果需要与另外的节点建立tunnel,那么就需要建立多个GRE才能完成。DMVPN使用的是Mutiple Gre 动态多点GRE,非常类似于我们的帧中继,一个tunnel对应多个分支的tunnel, 但是它并不知道对方的地址,它的建立必须依赖于NHRP。

NHRP:下一跳解析协议,它是一个C/S模型,我们通常把S放在Hub端,而client为spoke,它的工作原理是当client启动后,就会向server发送一个注册信息,这个注册信息包含这个tunnel地址和公网IP,所以在MGRE与NHRP配合的情况下,使得除了server端必须是固定IP地址以外,其余的client可以是动态的。这样server就会知道所有client的公网地址,从而实现了DMVPN。

DMVPN技术总体实现:client通过NHRP自动向server端注册自己的地址,这样一来,server那就有了所有的动态地址信息,这样无论是建立VPN还是Spoke之间通信都不成问题了,当一个Spoke想发送数据到另外一个Spoke的时候,它会先向server端询问Spoke的公网地址并把数据包发送出去,server收到这个数据包和查询包,会先代为转发,并且回复这个查询。当Spoke端收到这个查询后得到对方的公网地址,建立VPN隧道,但是这个隧道是有时间限制的,默认为2个小时。

 image001.png

原理弄懂了的话,就很容易理解了。下面做实验配置,图还是之前那个,北京作为center,上海和长沙作为spoke端,实现效果就是Cisco-Center和spoke是永久建立tunnel,而spoke之间是按需的。

Cisco-Center:
nterface FastEthernet0/0
ip address 192.168.1.1 255.255.255.0
!
interface FastEthernet1/0
ip address 12.1.1.1 255.255.255.0
!
ip route 0.0.0.0 0.0.0.0 12.1.1.2

Internet
interface FastEthernet0/0
ip address 12.1.1.2 255.255.255.0
!
interface FastEthernet0/1
ip address 23.1.1.2 255.255.255.0
!
interface FastEthernet1/0
ip address 24.1.1.2 255.255.255.0

SCisco-HSpoke
interface FastEthernet0/0
ip address 192.168.2.1 255.255.255.0
!
interface FastEthernet1/0
ip address 24.1.1.1 255.255.255.0
ip route 0.0.0.0 0.0.0.0 24.1.1.2

HNSpoke
interface FastEthernet0/0
ip address 192.168.3.1 255.255.255.0
!
interface FastEthernet1/0
ip address 23.1.1.1 255.255.255.0
ip route 0.0.0.0 0.0.0.0 23.1.1.2

基本配置已经完了,各个公网口能够Ping通。开始配置Mgre
Cisco-Center
interface tunnel 0
tunnel source 12.1.1.1
tunnel mode gre multipoint
ip address 172.16.1.1 255.255.255.0

SCisco-HSpoke & NCisco-HSpoke
interface tunnel 0
tunnel source fastEthernet 1/0
tunnel mode gre multipoint
ip address 172.16.1.2 255.255.255.0 | ip address 172.16.1.3 255.255.255.0这里注意的是Spoke的源因为是通过动态获取地址的,所以只需要指定接口就行,实际环境可能为Dialer口。另外一点就是关于12.4以前的版本需要注意tunnel必须设置key才能up。

NHRP配置:
center

ip nhrp network-id 100
ip nhrp authentication cisco
Cisco-Center端的设置非常简单,只需要设置一个network-id,这个ID跟EIGRP的AS一样,必须一致。认证是可选的,可有可无。

SPoke端:
ip nhrp network-id 100
ip nhrp authentication ciscoip nhrp nhs 172.16.1.1
ip nhrp map 172.16.1.1 12.1.1.1
我们来看下为什么要这么设置,我们之间了解过NHRP是基于C/S模式的,Cisco-Center端只需要配置一个网络标识就行了,它只需负责进行client的动态注册,那么SPoke端相当于client,它必须知道server是谁,所以IP nhrp nhs 172.16.1.1,这里必须是tunnel地址,这样CLient还是不知道server怎么去,所以在后面做了一个map映射,把去往172.16.1.1 的地址对应12.1.1.1 ,这个地址就是server的公网地址。 这是不是很像帧中继的DLCi MAP。这里MGRE也是一个典型的NBMA网络。

 image002.jpg

在server端上shw ip nhrp 的结果会显示两个地址信息,172.16.1.2对应公网地址24.1.1.1 type为dynamic。

 image003.jpg

在CLient端,show ip nhrp nhs查看是否注册成功,RE的标志表示成果,如果只有R话,那么就表示server端没有回应,因该查看配置。

 image004.jpg

[v_act]这时候SH的IP为172.16.1.2 ,它只知道server端的地址信息,当需要访问172.16.1.3的时候,它会向server端询问,server端有所有CLient的注册信息,所以响应了这个请求。 跟上面一样当ping 172.16.1.3后,show ip nhrp 关于 172.16.1.3这个地址动态的映射到了23.1.1.1上,而关于到172.16.1.1这个地址由于是静态指定的 所以为static。

关于一个完整的mGRE已经建立完毕了,剩下的就是动态路由协议来学习各自的路由,关于加密的实施最后在说明,DMVPN的难点在于NHRP与动态路由协议在这个环境下的状况。 mGRE支持RIP、EIGRP、OSPF、BGP、关于ISIS好像实现不了。这里只证明EIGRP和OSPF,因为它们是企业用得最多,另外一个就是在这个环境下有许多的问题。

Cisco-Center(config)#router eigrp 1
Cisco-Center(config-router)#no au
Cisco-Center(config-router)#no auto-summary
Cisco-Center(config-router)#network 172.16.1.0 0.0.0.255
Cisco-Center(config-router)#network 192.168.1.0 0.0.0.255

Cisco-HSpoke(config)#router eigrp 1
SCisco-HSpoke(config-router)#no auto-summary
SCisco-HSpoke(config-router)#network 172.16.1.0 0.0.0.255
SCisco-HSpoke(config-router)#network 192.168.2.0 0.0.0.255

Cisco-HNSPOKE(config)#router eigrp 1
Cisco-HNSPOKE(config-router)#no auto-summary
Cisco-HNSPOKE(config-router)#network 172.16.1.0 0.0.0.255
Cisco-HNSPOKE(config-router)#network 192.168.3.0 0.0.0.255

 image005.jpg

会发现根本没有EIGRP邻居的发现,这是为什么呢。如果对帧中继熟悉的朋友,一定看出来了,在帧中继中默认是不支持broadcast和Muticast,它的实现是基于伪广播,就是一个相同的数据包,复制多份发给多个DLCI,而这个mGRE也是一样,它是一个典型的NBMA网络,默认也不支持组播。下面有一列是NBMA addessr 23.1.1.1[/v_act]

 image002.jpg

解决办法跟帧中继一样,让它支持组播。

Cisco-Center(config-if)#ip nhrp map multicast dynamic
SCisco-HSpoke(config-if)#ip nhrp map multicast 12.1.1.1
Cisco-HNSPOKE(config-if)#ip nhrp map multicast 12.1.1.1
Cisco-Center作为server端,所以使用dynamic来接收来自各个CLient的组播包,而CLient端只需要把地址设置为server的公网地址即可,其实CLient也可以为dynamic,只是实现的效果就会变成SPoke之间也建立了动态路由协议,有邻居关系,这个是我们不需要的,我们只希望需要的时候才建立。

 image006.png

我们会发现这时候,Cisco-Center已经有邻居关系了,可SPoke缺没有,这是一个需要注意的地方,这时候需要把tunnel 全部shuodwn,然后在Cisco-Center端先No shutdown,在开启其他的。 这个问题还会出现在 当你NHRP设置错误的时候,当你改回来后需要shutdown,no shutdown接口才能改正,否则也会解析不正常。

 image007.png

邻居已经成功建立了,SPoke端只学到了到了Cisco-Center的路由,这是典型的水平分割原则,所以需要关闭水平分割。
Cisco-Center(config-if)#no ip split-horizon eigrp 1

 image008.jpg

路由已经正常学习了,还有一个问题就是下一跳解析问题,它的流量还是经过了Cisco-Center,而不是对方的SPoke为下一跳,所以我们需要关闭next-hop-self,不然它改变下一跳,这个命令是专门为EIGRP开出来支持DMVPN环境的。
Cisco-Center(config-if)#no ip next-hop-self eigrp 1

 image009.jpg

这时候下一跳解析正常了。trackrouter 192.168.2.2这个主机,查看它的流量是不是直接发往172.16.1.2。而不是经过了172.16.1.1

 image010.jpg

下一跳直接发送给172.16.1.2,然后转发给192.168.2.2。
这里为EIGRP的在这个NBMA环境的各种问题,其实发现麻烦挺多的,所以在实际实施的时候,一步到位,直接配置完全部在设置路由协议,这样就不会出现问题,这里主要是为了演示在这个环境下出现的问题。
OSPF在这个环境中存在的问题,删除掉EIGRP。

Cisco-Center
Router ospf 1
router-id 1.1.1.1
log-adjacency-changes
network 172.16.1.0 0.0.0.255 area 0
network 192.168.1.0 0.0.0.255 area 0

SHSPoke
router ospf 1
router-id 2.2.2.2
log-adjacency-changes
network 172.16.1.0 0.0.0.255 area 0
network 192.168.2.0 0.0.0.255 area 0

HNSPoke
router ospf 1
router-id 3.3.3.3
log-adjacency-changes
network 172.16.1.0 0.0.0.255 area 0
network 192.168.3.0 0.0.0.255 area 0
当启用后,第一个现象就是Cisco-Center端的邻居一会up,一会down,这是因为tunnel的网络类型默认是Point-to-point,所以一会跟这边建立邻居,一会与那边建立邻居,改变的方法有两种point-to-multipie 还有种就是broadcast,这里推荐第二种,因为broadcast会自动优化下一跳,而在多点下它不会自动切换,这样就不优化了。

 image011.png

Cisco-Center
ip ospf network broadcastSpoke
ip ospf network broadcast
ip ospf priority 0
这样做是为了让Cisco-Center永远是DR,因为本地链路组播的TTL都为1。

 image012.jpg

OSPF的在这个NBMA环境的问题就这些。
最后一部分是关于IPsec VPN的,为什么放到最后来说是因为它在这个VPN中不是难点,难点在于NHRP和动态路由协议的问题。VPN的配置就不做解释了。
crypto isakmp policy 10
authentication pre-share
crypto isakmp key cisco address 0.0.0.0 0.0.0.0
crypto ipsec transform-set trans esp-des esp-md5-hmac
mode transport
crypto ipsec profile dmvpn
set transform-set trans
interface tunnel 0
tunnel protection ipsec profile dmvpn
这里的配置都可以复制到各个路由器上,通用的,Spoke的key不为固定的原因是,有时候Spoke之间需要建立临时的通道所以也为任意。

 image013.jpg
 image014.jpg

center端有两个sa的内容,这是正常的,Cisco-Center和Spoke之间是永久建立,这里主要查看spoke之间建立按需tunnel的细节。

 image015.png

这里我用Spoke Ping另外的Spoke 100个数据包,从图上可以看出它跟本没有走Cisco-Center,因为Cisco-Center的加解密才46~50之间,这是关于OSPF动态路由协议的,而下面Spoke的加解密有一对是95,明明是100个数据包,为什么就只有95了呢,因为当建立VPN后,所以的注册信息都清除了,当上海这边访问长沙分支的时候,首先会发送查询包到Cisco-Center关于长沙分支的地址信息,紧接着数据包也会发出去,Cisco-Center收到以后,会代为转发,并回复这个请求。当上海这边收到以后会自动切换到本地信息快速建立VPN,而实现不丢包的情况,所以还有5个包是有Cisco-Center代为转发了。
最后一个优化,关于MTU,官方建议把MTU改成1436~1440
Cisco-Center(config-if)#ip mtu 1440
因为物理接口默认为1500,当一个本来小于1500的数据包进入加密的tunnel后,会封装GRE,然后打上ESP的头部,这样很容易就超过了1500,造成分片,这对路由器的性能和数据的传递都是影响巨大。
EtherⅡ | IP头部20字节| ESP 37字节 | GRE 4字节| IP头部 20字节 | ICMP 头部8字节 | data

关于DMVPN配置的思路
1、先运行tunnel,配置mode为多点GRE
2、运行NHRP,主要是Spoke端之间(spoke端之间的配置是可以互相复制的)
3、启用DVI 的IPsec VPN
4、启用动态路由协议。
NHRP注意的两点就Spoke端正确指定nhs,然后就是设置支持组播协议,否则需要shutdown接口来激活。

下载对应文档

百度盘下载博客资源汇总与学习思路
如果下载地址失效,请联系博主或者在下面留言,谢谢。下面也有其他您需要的资源推荐哦

关于博客资源下载说明

首先,感谢大家对网络之路博客的支持,本站所有资源都是开放下载,不做任何限制,资源都是上传在百度盘,分为两种类型:
(1)第一种是书籍PDF与视频类,全部放在博客分享,觉得对大家学习有帮助的博主会收集好、然后以博主的经验整理分类后排序好分享出来。
(2)第二种是技术性文章与视频,全部放在公众号(网络之路博客)/B站(网络之路Blog)发布,以博主原创为主,主要分享系列为主,由浅入深的带大家了解工作中常用到的一些网络技术,当然也会分享一些比较经典的案例。
(3)分享资源有涉及到您的利益以及版权问题,请联系博主,24小时候内删除。
想第一时间收到最新更新内容吗,点击获取~~~

点击查看详情

(广告)博主自主原创最新实战课程

点击查看详情


(广告)远程技术支持(设备调试),有搞不定的找我,价格实惠,为您解决实际工作上的问题

远程技术调试与技术支持,点击查看详情


原创与收集的内容,允许转载,转载时请务必以超链接形式标明文章原始出处,博客地址http://ccieh3c.com。

喜欢 (1)
[]
分享 (0)
公众号:网络之路博客(其他平台网络之路Blog)
分享一些自己懂的技术知识点,希望对大家有帮助。
发表我的评论
取消评论
表情 贴图 加粗 删除线 居中 斜体 签到

Hi,您需要填写昵称和邮箱!

  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址