一般来说 IPSEC的流量分布于基于总部与分支之间,分支与分支之间的流量分布较少,若分支到分支通信必须跨越中心,这会耗费中心的资源并导致带宽占用导致延时.而且分支多的时候,管理与维护必将繁琐,且不便于维护和排错.如果让分支到分支的流量不跨越中心,而且引入动态路由,将使得网络便于维护和得到充分利用.
但是IPSEC只支持单播加密,而动态路由的更新依赖于多播(RIPV1)或组播(RIPV2,EIGRP,OSPF),到这里我们便引入了动态多点××× (DM×××)的概念。
动态多点××× 依赖于GRE和NHRP
GRE:通用路由封装。它可以封装任意一种的网络协议,所以非常适合于×××中作为封装路由协议.由于GRE包是单播包(不加密),所以适合用IPSEC加密在×××之间传输,这样也可以作为GRE Over IPSec
百科连接 http://baike.baidu.com/view/1004.htm
NHRP:下一跳解析协议 用于连接到非广播多路访问(NBMA)式子网络的源站(主机或路由器)决定到达目标站间的 “ NBMA 下一跳 ”的互联网络层地址和 NBMA 子网地址。如果目的地与 NBMA 子网连接, NBMA 下一跳就是目标站;否则, NBMA 下一跳是从 NBMA 子网到目标站最近的出口路由器。 NHRP 被设计用于 NBMA 子网下的多重协议互联网络层环境中。
在到达要生成响应的站之前, NBMA 子网内的 NHRP 解析请求经过一个甚至更多的跳。包括源站在内的每个站选择一个它要转发 NHRP 解析请求所去的邻近 NHS 。 NHS 选择过程是:在能返回路由决定的协议层路由表上应用目的协议层地址。这种路由选择决定用于转发 NHRP 请求给下游的 NHS 。先前提到的目标协议层地址存放在 NHRP 解析请求包中。注意:即使一个协议层地址被用来获取路由选择决定, NHRP 包不会被封装于协议层头,而是通过由它自己的头描述的封装形式存放于 NBMA 层。
百科连接:http://baike.baidu.com/view/876129.htm
简单来说NHRP就是寻找到某条动态路由最近的下一跳而存在的
下面看动态隧道的建立
1.分支到中心(Spoke−to−Hub)的动态隧道建立
在DM×××网络中,各分支路由通过IPSEC加密GRE通道连接到中心路由,中心路由TUNNEL 配置如下:
- interface Tunnel0
ip address 192.168.1.1 255.255.255.0
ip nhrp authentication cisco
ip nhrp map multicast dynamic
ip nhrp network-id 999
ip nhrp cache non-authoritative
ip ospf network broadcast
tunnel source FastEthernet1/0
tunnel mode gre multipoint
tunnel protection ipsec profile cisco
其中某分支TUNNEL配置如下:
- interface Tunnel0
- ip address 192.168.1.3 255.255.255.0
- ip nhrp authentication cisco
- ip nhrp map multicast 202.96.128.2
- ip nhrp map 192.168.1.1 202.96.128.2
- ip nhrp network-id 999
- ip nhrp nhs 192.168.1.1
- ip nhrp cache non-authoritative
- ip ospf network broadcast
- tunnel source FastEthernet1/0
- tunnel mode gre multipoint
- tunnel protection ipsec profile cisco
由于分支路由器外网端口的IP地址是自动获取的(许多机构大都是采用ADSL),每次连接公网的IP地址可能不同,所以中心路由器无法根据该地址信息进行配置。分支路由器上则必须依据中心路由器的公网IP地址和NHRP协议来配置GRE隧道,中心路由器不必针对所有分支分别配置GRE或IPSec信息,新加入的分支路由器将自动注册到中心路由器,将大大简化中心路由器的配置。
2、分支到分支(Spoke−to−Spoke)的动态隧道建立
分支到中心(Spoke−to−Hub)的隧道一旦建立便持续存在,但各分支之间并不需要持续隧道。当一个分支需要向另一个分支需要通信时,它利用NHRP来动态获取目的分支的IP地址。该过程中,中心路由器充当NHRP服务器的角色,响应NHRP请求,向源分支提供目标分支的公网地址。于是,两个分支之间通过端口动态建立IPSec隧道,进行数据传输,过程就像DNS查询一样,该隧道在预定义的周期之后将关闭.
在路由器初始化后,中心路由器会通过持续存在的隧道向分支路由器宣告其它分支子网的可达路由。这样分支路由器的路由表中到达其它分支子网的“下一跳”地址仍是中心路由器的隧道端口地址,而不是其它分支路由器的隧道端口地址,这个问题如果我们使用的是链路状态路由协议的时候,是不存在下一跳地址被改变,但是如果我们使用的是距离向量型路由协议(RIP,EIGRP)的时候,默认是开启水平分割的,必须关闭,否则,分支路由器将无法学习到通往其它分支子网的路由。另外各点的TUNNEL下必须开启ip ospf broadcast,不然使用OSPF会导致上述问题
下面是主要配置
拓扑如下:
中心路由器R1配置如下:
- crypto isakmp policy 10 //ISAKMP策略
- encr 3des
- authentication pre-share
- crypto isakmp key 110 address 0.0.0.0 0.0.0.0
- !
- !
- crypto ipsec transform-set myset esp-3des esp-md5-hmac //统一IPSC策略集为ESP
- !
- crypto ipsec profile cisco //IPSEC配置profile
- set transform-set myset
- interface Tunnel0
- ip address 192.168.1.1 255.255.255.0
- no ip redirects
- ip nhrp authentication cisco //nhrp认证
- ip nhrp map multicast dynamic
- ip nhrp network-id 999 //network-id认证
- ip nhrp cache non-authoritative
- ip ospf network broadcast //OSPF接口类型
- tunnel source FastEthernet1/0
- tunnel mode gre multipoint //接口为GRE 多播
- tunnel protection ipsec profile cisco //启用IPSEC的profile
- !
- interface FastEthernet1/0
- ip address 202.96.128.2 255.255.255.0
- duplex auto
- speed auto
- !
- router ospf 100 //OSPF动态路由
- log-adjacency-changes
- router-id 192.168.1.1
- network 3.3.3.0 0.0.0.255 area 0
- network 192.168.1.0 0.0.0.255 area 0
- !
- ip route 0.0.0.0 0.0.0.0 202.96.128.1
分支R5配置:
- crypto isakmp policy 10
- encr 3des
- authentication pre-share
- crypto isakmp key 110 address 0.0.0.0 0.0.0.0
- !
- crypto ipsec transform-set myset esp-3des esp-md5-hmac
- !
- crypto ipsec profile cisco
- set transform-set myset
- !
- interface Loopback0
- ip address 2.2.2.1 255.255.255.0
- !
- interface Tunnel0
- ip address 192.168.1.2 255.255.255.0
- no ip redirects
- ip nhrp authentication cisco
- ip nhrp map multicast 202.96.128.2 //静态指向Hub的物理接口地址
- ip nhrp map 192.168.1.1 202.96.128.2 创建一个逻辑IP地址和NBMA地址的静态绑定
- ip nhrp network-id 999
- ip nhrp nhs 192.168.1.1 //NHS查询器地址
- ip nhrp cache non-authoritative
- ip ospf network broadcast
- tunnel source FastEthernet1/0
- tunnel mode gre multipoint
- tunnel protection ipsec profile cisco
- !
- interface FastEthernet0/0
- no ip address
- shutdown
- duplex half
- !
- interface FastEthernet1/0
- ip address 202.96.129.2 255.255.255.0
- duplex auto
- speed auto
- !
- interface FastEthernet1/1
- no ip address
- shutdown
- duplex auto
- speed auto
- !
- router ospf 100
- log-adjacency-changes
- network 2.2.2.0 0.0.0.255 area 0
- network 192.168.1.0 0.0.0.255 area 0
- !
- ip route 0.0.0.0 0.0.0.0 202.96.129.1
分支R6配置如下:
- crypto isakmp policy 10
- encr 3des
- authentication pre-share
- crypto isakmp key 110 address 0.0.0.0 0.0.0.0
- !
- crypto ipsec transform-set myset esp-3des esp-md5-hmac
- !
- crypto ipsec profile cisco
- set transform-set myset
- !
- interface Loopback0
- ip address 4.4.4.1 255.255.255.0
- !
- interface Tunnel0
- ip address 192.168.1.3 255.255.255.0
- no ip redirects
- ip nhrp authentication cisco
- ip nhrp map multicast 202.96.128.2
- ip nhrp map 192.168.1.1 202.96.128.2
- ip nhrp network-id 999
- ip nhrp nhs 192.168.1.1
- ip nhrp cache non-authoritative
- ip ospf network broadcast
- tunnel source FastEthernet1/0
- tunnel mode gre multipoint
- tunnel protection ipsec profile cisco
- !
- router ospf 100
- log-adjacency-changes
- network 4.4.4.0 0.0.0.255 area 0
- network 192.168.1.0 0.0.0.255 area 0
- !
- ip route 0.0.0.0 0.0.0.0 202.96.130.1
现在看一下分支与中心的路由表
中心R1
分支R5
分支R6
在R5上TRCKER一下4.4.4.1(在R6上)
OK.实验结束
转载于:https://blog.51cto.com/leadlxx/759479