前面发了一篇关于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 advpn
authentication advpn local
#
domain default enable advpn
创建3个新的本地用户,类型为advpn。
#
local-user HUB class network
password simple HUB
service-type advpn
#
local-user SPOKE1 class network
password simple SPOKE1
service-type advpn
#
local-user SPOKE2 class network
password simple SPOKE2
service-type advpn
创建ADVPN域ADVPN,创建Hub组HUB,并指定Hub组内Hub和Spoke的IPv4私网地址。
#
vam server advpn-domain ADVPN id 1
hub-group HUB
hub private-address 10.10.10.1
spoke 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 1
simple ADVPN
chap
server enable
创建VAM Client HUB,配置VAM Client所属的ADVPN域为ADVPN,配置VAM Client的预共享密钥、认证用户名和密码。配置VAM Server的IP地址,并使能VAM Client功能。
#
vam client name HUB
ADVPN
server primary ip-address 15.1.1.5
simple ADVPN
user HUB password simple HUB
client enable
配置IKE框架。
#
ike keychain ADVPN
pre-shared-key address 0.0.0.0 0.0.0.0 key simple ADVPN
#
ike profile ADVPN
keychain ADVPN
配置IPsec安全框架。
#
ipsec transform-set ADVPN
encapsulation-mode transport
esp encryption-algorithm des-cbc
esp authentication-algorithm sha1
#
ipsec profile ADVPN isakmp
transform-set ADVPN
ike-profile ADVPN
配置私网的OSPF路由信息。
#
ospf 1
area 0.0.0.0
network 10.10.10.0 0.0.0.255
network 22.1.1.0 0.0.0.255
配置GRE封装的IPv4 ADVPN隧道接口Tunnel1。
#
interface Tunnel1 mode advpn gre
ip address 10.10.10.1 255.255.255.0
ospf network-type p2mp
source GigabitEthernet0/0
tunnel protection ipsec profile ADVPN
vam client HUB
创建VAM Client SPOKE1,配置VAM Client所属的ADVPN域为ADVPN,配置VAM Client的预共享密钥、认证用户名和密码。配置VAM Server的IP地址,并使能VAM Client功能。
#
vam client name SPOKE1
ADVPN
server primary ip-address 15.1.1.5
simple ADVPN
user SPOKE1 password simple SPOKE1
client enable
配置IKE框架。
#
ike keychain ADVPN
pre-shared-key address 0.0.0.0 0.0.0.0 key simple ADVPN
#
ike profile ADVPN
keychain ADVPN
配置IPsec安全框架。
#
ipsec transform-set ADVPN
encapsulation-mode transport
esp encryption-algorithm des-cbc
esp authentication-algorithm sha1
#
ipsec profile ADVPN isakmp
transform-set ADVPN
ike-profile ADVPN
配置私网的OSPF路由信息。
#
ospf 1
area 0.0.0.0
network 10.10.10.0 0.0.0.255
network 33.1.1.0 0.0.0.255
配置GRE封装的IPv4 ADVPN隧道接口Tunnel1。
#
interface Tunnel1 mode advpn gre
ip address 10.10.10.2 255.255.255.0
ospf network-type p2mp
source GigabitEthernet0/0
tunnel protection ipsec profile ADVPN
vam client SPOKE1
配置和SPOKE1配置相似,直接上配置。
#
vam client name SPOKE2
ADVPN
server primary ip-address 15.1.1.5
simple ADVPN
user SPOKE2 password simple SPOKE2
client enable
#
ike keychain ADVPN
address 0.0.0.0 0.0.0.0 key simple ADVPN
#
ike profile ADVPN
keychain ADVPN
#
ipsec transform-set ADVPN
transport
esp encryption-algorithm des-cbc
esp authentication-algorithm sha1
#
ipsec profile ADVPN isakmp
ADVPN
ADVPN
#
ospf 1
area 0.0.0.0
network 10.10.10.0 0.0.0.255
network 44.1.1.0 0.0.0.255
#
interface Tunnel1 mode advpn gre
ip address 10.10.10.3 255.255.255.0
ospf network-type p2mp
source GigabitEthernet0/0
tunnel protection ipsec profile ADVPN
vam 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转发数据。