前面发了一篇关于ADVPN(Auto Discovery Virtual Private Network,自动发现虚拟专用网络)的介绍文档(ADVPN和IPsec有啥关系?),可以看出,ADVPN的底层实现还是基于IPsec来的,只不过对相关技术实现和管理提出了新的要求。关于ADVPN要求的RFC文档是2013年9月正式发布的,但是对应的技术规范却没有正式文档。

从IETF的交互邮件中我们可以看到,目前ADVPN的协议结构还只是草案,并且已经于2014年4月份过期了。但是邮件介绍到了Juniper是方案的主要起草厂商,并且已经完成规模化应用。理论上讲,应该用Juniper的设备来验证,才是最科学的,但是能力有限,只能用华三的了。
华三官网介绍,ADVPN是一种基于VAM(VPN Address Management,VPN地址管理)协议的动态VPN技术,在企业网各分支机构使用动态地址接入公网的情况下,可以利用ADVPN在各分支机构间建立VPN。
支持就行了,就可以做实验了。

在Hub-Spoke的组网方式下,数据通过Hub-Spoke隧道进行转发。VAM服务器负责管理、维护各个节点的信息,并兼顾对VAM客户端的认证管理。Spoke与Hub之间建立永久的ADVPN隧道。

创建一个新的ISP域advpn,配置AAA方案为local,并将域advpn配置为默认域。
#domain advpnauthentication advpn local#domain default enable advpn
创建3个新的本地用户,类型为advpn。
#local-user HUB class networkpassword simple HUBservice-type advpn#local-user SPOKE1 class networkpassword simple SPOKE1service-type advpn#local-user SPOKE2 class networkpassword simple SPOKE2service-type advpn
创建ADVPN域ADVPN,创建Hub组HUB,并指定Hub组内Hub和Spoke的IPv4私网地址。
#vam server advpn-domain ADVPN id 1hub-group HUBhub private-address 10.10.10.1spoke private-address range 10.10.10.0 10.10.10.255
配置VAM Server的预共享密钥为ADVPN,对VAM Client进行CHAP认证,并开启该ADVPN域的VAM Server功能。
#vam server advpn-domain ADVPN id 1simple ADVPNchapserver enable

创建VAM Client HUB,配置VAM Client所属的ADVPN域为ADVPN,配置VAM Client的预共享密钥、认证用户名和密码。配置VAM Server的IP地址,并使能VAM Client功能。
#vam client name HUBADVPNserver primary ip-address 15.1.1.5simple ADVPNuser HUB password simple HUBclient enable
配置IKE框架。
#ike keychain ADVPNpre-shared-key address 0.0.0.0 0.0.0.0 key simple ADVPN#ike profile ADVPNkeychain ADVPN
配置IPsec安全框架。
#ipsec transform-set ADVPNencapsulation-mode transportesp encryption-algorithm des-cbcesp authentication-algorithm sha1#ipsec profile ADVPN isakmptransform-set ADVPNike-profile ADVPN
配置私网的OSPF路由信息。
#ospf 1area 0.0.0.0network 10.10.10.0 0.0.0.255network 22.1.1.0 0.0.0.255
配置GRE封装的IPv4 ADVPN隧道接口Tunnel1。
#interface Tunnel1 mode advpn greip address 10.10.10.1 255.255.255.0ospf network-type p2mpsource GigabitEthernet0/0tunnel protection ipsec profile ADVPNvam client HUB

创建VAM Client SPOKE1,配置VAM Client所属的ADVPN域为ADVPN,配置VAM Client的预共享密钥、认证用户名和密码。配置VAM Server的IP地址,并使能VAM Client功能。
#vam client name SPOKE1ADVPNserver primary ip-address 15.1.1.5simple ADVPNuser SPOKE1 password simple SPOKE1client enable
配置IKE框架。
#ike keychain ADVPNpre-shared-key address 0.0.0.0 0.0.0.0 key simple ADVPN#ike profile ADVPNkeychain ADVPN
配置IPsec安全框架。
#ipsec transform-set ADVPNencapsulation-mode transportesp encryption-algorithm des-cbcesp authentication-algorithm sha1#ipsec profile ADVPN isakmptransform-set ADVPNike-profile ADVPN
配置私网的OSPF路由信息。
#ospf 1area 0.0.0.0network 10.10.10.0 0.0.0.255network 33.1.1.0 0.0.0.255
配置GRE封装的IPv4 ADVPN隧道接口Tunnel1。
#interface Tunnel1 mode advpn greip address 10.10.10.2 255.255.255.0ospf network-type p2mpsource GigabitEthernet0/0tunnel protection ipsec profile ADVPNvam client SPOKE1

配置和SPOKE1配置相似,直接上配置。
#vam client name SPOKE2ADVPNserver primary ip-address 15.1.1.5simple ADVPNuser SPOKE2 password simple SPOKE2client enable#ike keychain ADVPNaddress 0.0.0.0 0.0.0.0 key simple ADVPN#ike profile ADVPNkeychain ADVPN#ipsec transform-set ADVPNtransportesp encryption-algorithm des-cbcesp authentication-algorithm sha1#ipsec profile ADVPN isakmpADVPNADVPN#ospf 1area 0.0.0.0network 10.10.10.0 0.0.0.255network 44.1.1.0 0.0.0.255#interface Tunnel1 mode advpn greip address 10.10.10.3 255.255.255.0ospf network-type p2mpsource GigabitEthernet0/0tunnel protection ipsec profile ADVPNvam client SPOKE2


显示注册到主VAM Server的所有VAM Client的IPv4私网地址映射信息,可以看到HUB和SPOKE设备对应的隧道接口地址、公网地址、角色等信息。

显示HUB上的IPv4 ADVPN隧道信息,可以看到类型是H-S,说明本端是HUB角色,对端是SPOKE角色。

显示SPOKE1上的IPv4 ADVPN隧道信息,可以看到类型是S-H,说明本端是SPOKE角色,对端是HUB角色。

查看隧道接口状态。

查看OSPF邻居状态,邻居状态建立正常。

查看SPOKE1设备路由,已经通过OSPF学习到了HUB和SPOKE2的私网路由。

查看SPOKE1建立的IKE SA和IPsec SA信息,可以看到,隧道只存在于HUB和SPOKE1之间。

从SITE2追踪到SITE1的路径信息,可以看到,流量先到达网关SPOKE2,再到达HUB,再到达SPOKE1,最后到达SITE2,符合Hub-Spoke模型的转发路径,即:Spoke之间不能建立隧道直接通信,只能通过Hub转发数据。
