D***(Dynamic ***)简介
非常类似于思科的DM***,它核心协议是vam,它主要负责收集、维护、分发公网地址等信息,帮助用户快捷、方便的建立内部的安全隧道,通过server获取到其他站点的下一跳对应的公网地址,并且作为隧道目的地址进行封装,然后发送给目的地
D***的几个角色
1、D***节点:表示为动态***隧道两端设备,主要是建立隧道,作为VAM的客户端功能
2、VAM Server:D***服务器,它接收来自D***节点的注册信息,主要维护管理各个D***节点的信息。
3、VAM Client:D***客户端,它向VAM Server注册自己的私网地址、公网地址、VAM标识等信息,也会会向Server查询其他VAM Client的信息。VAM Client也是D***的一种
(Client发送的UDP报文包括,连接请求报文、初始化完成报文、注册请求报文和认证请求报文)
4、Hub:也是VAM Client,是一个***网络的中心设备,在Hub-Spoke结构中,也是数据转发的中心
5、Spoke:VAM Client的一种,通常是分支结构的设备
6、AAA服务器:对于用户进行认证、授权、和计费管理 【可选】
D***的主要特性
1、配置简单:通过Tunnel隧道来和多个***建立隧道关系,扩展性和维护都很方便
2、穿越NAT:D***采用UDP方式,所以穿越NAT非常方便
3、支持动态IP:在这个结构下,只用Server是固定IP即可,其余的可以是动态IP地址
4、支持自动建立隧道:Spoke之间的访问,可以通过Server的重定向功能自动获取到其他站点的Client信息,并且自动建立隧道会话
5、注册过程加密:必须通过CHAP或者PAP认证,并且需要用户名信息
6、支持身份证认证:通过Pre-sharekey来认证Client与Server
7、策略统一管理:
8、会话协商过程加密:通过IPSec来保护整个会话的安全性
9、支持多个***域:允许一个D***设备创建多个***域,方便隔离
10、支持动态路由协议:
拓扑说明:在实际环境中,通常情况下不会单独拿一条路由器出来作为VAM Server的,这时候可以用Center【hub】来代替,AAA服务器为可选,因为可以通过配置让它不认证或者是本地认证,这样Center即充当VAM Server,VAM Client,又还是AAA服务器。
Center端的配置
1、VAM Server配置
[center]vam server ip-address 202.100.1.1 【定义VAM Server 的IP地址,用来监听Client的VAM包】
[center]vam server *** 1 【***实例,可关联不同的客户端】
[center-vam-server-***-1]hub private-ip 10.1.1.1 【这里指定的是hub的Tunnel接口地址】
[center-vam-server-***-1]pre-shared-key simple ccieh3c.com 【定于与Client VAM直接的认证密钥】
[center-vam-server-***-1]authentication-method chap 【通过chap方式】
[center-vam-server-***-1]server enable 【最后开启服务】
2、定义AAA用户【可选】
这里用的是本地认证,所以默认是本地的,不需要定义Radius服务器等配置,如果是外部服务器的话,则需要定义AAA,这里直接创建用户即可,该用户名用来作为对客户端的验证。如果没有启用的话 则不需要AAA
[center]local-user ccieh3c
[center-luser-ccieh3c]password simple ccieh3c.com
[center-luser-ccieh3c]service-type d***
3、VAM Client配置
[center]vam client name hub 【定义一个Client】
[center-vam-client-name-hub]*** 1 【要关联Server的*** 1实例】
[center-vam-client-name-hub]server primary ip-address 202.100.1.1 【定义服务器地址在哪】
[center-vam-client-name-hub]pre-shared-key simple ccieh3c.com 【密钥与服务器一致】
[center-vam-client-name-hub]user ccieh3c password simple ccieh3c.com 【由于服务器启用了chap认证,所以这里必须输入服务器定义的用户信息】
[center-vam-client-name-hub]client enable 【最后开启服务】
4、IPSEC ***配置
[center]ike peer center
[center-ike-peer-center]pre-shared-key simple ccieh3c.com
【这里不需要配置remote-address,因为它本身不知道remote-address在哪】
[center]ipsec proposal center
[center-ipsec-proposal-center]
【采用默认策略】
[center]ipsec profile center
[center-ipsec-profile-center]ike-peer center
[center-ipsec-profile-center]proposal center
【使用Profile调用】
5、Tunnel接口【调用VAM Client与*** Profile】
[center]interface Tunnel 0
[center-Tunnel0]source g0/0/0
[center-Tunnel0]ip address 10.1.1.1 24 【配置一个地址,这个地址也是在VAM Server 指定的】
[center-Tunnel0]tunnel-protocol d*** udp 【Tunnel的类型为d*** udp】
[center-Tunnel0]vam client hub 【调用之前的VAM Client】
[center-Tunnel0]ipsec profile center 【调用IPSEC Profile】
6、路由
[center]ip route-static 0.0.0.0 0.0.0.0 202.100.1.10
分支配置
1、VAM Client
[spoke1]vam client name spoke1
[spoke1-vam-client-name-spoke1]*** 1
[spoke1-vam-client-name-spoke1]server primary ip-address 202.100.1.1
[spoke1-vam-client-name-spoke1]pre-shared-key simple ccieh3c.com
[spoke1-vam-client-name-spoke1]user ccieh3c password simple ccieh3c.com
[spoke1-vam-client-name-spoke1]client enable
2、IPSEC 配置
[spoke1]ike peer spoke1
[spoke1-ike-peer-spoke1]pre-shared-key simple ccieh3c.com
[spoke1]ipsec proposal spoke1
[spoke1-ipsec-proposal-spoke1]
[spoke1]ipsec profile spoke1
[spoke1-ipsec-profile-spoke1]ike-peer spoke1
[spoke1-ipsec-profile-spoke1]proposal spoke1
3、Tunnel接口配置
[spoke1]interface Tunnel 0
[spoke1-Tunnel0]source g0/0/1 【这里为了简化环境,所以没有定义PPPOE拨号了,如果是PPPOE的话,则是拨号接口】
[spoke1-Tunnel0]ip address 10.1.1.2 24
[spoke1-Tunnel0]tunnel-protocol d*** udp
[spoke1-Tunnel0]vam client spoke1
[spoke1-Tunnel0]ipsec profile spoke1
4、路由
[spoke1]ip route-static 0.0.0.0 0.0.0.0 202.100.2.10 【如果是PPPOE环境的话,则是拨号接口】
VAM查看【检查】
可以看到有3个映射列表,一个是hub【Center自身】,另外2个是Spoke的,它 通过VAM Client声明它Tunnel接口与公网接口的对应关系。
可以看到Spoke跟hub是永久的存在关系,那么Spoke之间互相通信下,则Spoke会有对应的其他Spoke的映射关系,这个是按需的。
可以看到直接通过在VAM 消息到Server端查找到10.1.1.3对应的公网地址,则立马出现了对应关系,这里默认为170s。
IPSEC ***
IPSEC ***会自动建立隧道,这里的难点并不是***,而是VAM那块,注意的是在所有的***配置中,并没有指定任何的remote-address和Tunnel Destination地址,那么Spoke是怎么知道hub端的地址是谁呢,那么所有的实现都是因为通过VAM功能实现的,Client通过指定的Server地址与Server建立连接关系【通过认证】,Server会通告hub端的映射关系给Spoke,而且是永久性的,这样的话hub就知道了hub的公网地址是什么了,则***发起建立的时候,直接发往该IP地址。
路由问题
这里路由问题完全可以通过静态路由和动态路由协议来解决,静态路由自然很好配置,这里主要说下OSPF的问题。
在OSPF中,有网络类型的存在,而Tunnel接口默认是点对点的,在这里显然是不行的,因为hub跟Spoke是点对N的关系,那么则有broadcast与P2MP选择,broadcast是需要选举DR,BDR的,所以在这种情况下 Spoke不能充当DR,否则的话很有可能许多DR,hub端会把Spoke都当成DR【可能Spoke端的Loo地址大】,这样的话路由传递就会有问题。所以这里只能hub充当dr
这样的话,就不会有什么问题了,P2MP的话 没啥问题需要注意的。
可以看到所有的路由都收到了。
Spoke与Spoke之间互访
可以看到现在只有hub的永久映射关系的,而Spoke与Spoke之间的互访是否通过hub呢。
可以看到通信是正常的,而我们关心的是它到低走的是spoke之间直接建立IPSEC邻居,还是通过IPSEC代转发。
可以看到直接一跳就完成了,如果经过了hub的话,那么是2跳。
这里VAM的映射关系也有了新的,是对方spoke的,也就是说,但Spoke2访问2.2.2.2的时候,它会查找路由的下一跳,
这里为10.1.1.2,那么它会通过vam client像Server查询10.1.1.2的对应表关系,来知道对应的公网地址,然后则通过IPSEC与对方建立***。
可以看到,Spoke2分别与hub ,然后spoke1也建立了IPSEC ***,这样的话***是不会通过总部转发的。
一些需要注意的地方
1、关于AAA服务器的存在,完全取决于VAM Server是否启用认证,可以通过 authentication-method 来定义为none,则不认证,不认证的话,则不需要通过用户名来认证Client了,也就无所谓AAA服务器了,默认为chap方式。
2、该技术是支持双hub的,如果是双hub的话,则需要在VAM Server定义 多个hub端地址。
3、使用OSPF路由协议的时候注意接口类型的问题,RIP的话注意水平分割,如果地址规划比较好的话,可以使用静态这样更加节省资源
4、如果使用动态路由协议的话,可以把Hello时间稍微改长点,这样减低设备的消耗。
本文转载于公众号:网络之路博客