前一篇文章我们介绍了ADVPN的Hub-Spoke模型(ADVPN:Hub-Spoke模型组网实验),华三实现ADVPN是基于VAM协议来的。可以看出ADVPN的底层实现还是基于IKE和IPsec来的,采用Client/Server模型,其中VAM作为服务器端,负责收集、维护和分发客户端(ADVPN节点)动态变化的公网地址等信息。
ADVPN节点分为Hub设备和Spoke设备。其中Hub设备是ADVPN网络的中心设备,它是路由信息交换的中心。Spoke设备是ADVPN网络的分支设备,通常是企业分支机构的网关。
从上次的实验中,我们可以看到,Hub-Spoke模型中,Spoke设备之间不能建立隧道直接通信,只能通过Hub设备转发数据。而ADVPN组网结构的另一种模型就是Full-Mesh模型,这种模型下,Spoke设备和Spoke设备之间是可以建立隧道直接通信的。
还是上次的组网拓扑。
在Hub-Spoke模型中,只有Hub设备和Spoke设备之间建立的H-S隧道或S-H隧道。
而在Full-Mesh模型中,Spoke设备和Spoke设备之间也建立起了S-S隧道,可以直接通信,无需绕转Hub设备。这条隧道又称为shortcut(捷径)。
在Full-Mesh的组网方模型,Spoke设备与Hub设备之间建立永久的ADVPN隧道,Spoke设备之间在有数据时动态建立ADVPN隧道。VAM服务器负责管理、维护各个节点的信息,并兼顾对VAM客户端的认证管理。
VAM的配置和Hub-Spoke模型配置一致。
#
domain advpn
authentication advpn local
#
domain default enable advpn
#
HUB class network
password simple HUB
advpn
#
SPOKE1 class network
password simple SPOKE1
advpn
#
SPOKE2 class network
password simple SPOKE2
advpn
#
vam server advpn-domain ADVPN id 1
HUB
hub private-address 10.10.10.1
spoke private-address range 10.10.10.0 10.10.10.255
#
vam server advpn-domain ADVPN id 1
simple ADVPN
chap
server enable
HUB设备的配置大体和Hub-Spoke模型配置一致,但需要调整GRE封装的ADVPN隧道接口Tunnel1的配置,将OSPF接口的网络类型由p2mp修改为broadcast。
#
vam client name HUB
ADVPN
server primary ip-address 15.1.1.5
simple ADVPN
user HUB password simple HUB
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 22.1.1.0 0.0.0.255
#
interface Tunnel1 mode advpn gre
ip address 10.10.10.1 255.255.255.0
ospf network-type broadcast
source GigabitEthernet0/0
tunnel protection ipsec profile ADVPN
vam client HUB
和HUB设备一样,将ADVPN隧道接口的OSPF接口网络类型由p2mp修改为broadcast。接口的DR优先级决定了该接口在选举DR/BDR时所具有的资格,数值越大,优先级越高。此时需要将DR优先级配置为0,使设备不参与DR/BDR选举。
#
vam client name SPOKE1
ADVPN
server primary ip-address 15.1.1.5
simple ADVPN
user SPOKE1 password simple SPOKE1
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 33.1.1.0 0.0.0.255
#
interface Tunnel1 mode advpn gre
ip address 10.10.10.2 255.255.255.0
ospf network-type broadcast
ospf dr-priority 0
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 broadcast
ospf dr-priority 0
source GigabitEthernet0/0
tunnel protection ipsec profile ADVPN
vam client SPOKE2
查看注册到主VAM Server的所有VAM Client的IPv4私网地址映射信息,可以看到HUB和SPOKE设备对应的隧道接口地址、公网地址、角色等信息。
在HUB设备上查看OSPF邻居信息。状态为DROther,表示路由器既不是所连网络的指定路由器,也不是所连网络的备份指定路由器。
查看HUB上的IPv4 ADVPN隧道信息,可以看到类型是H-S,说明本端是HUB角色,对端是SPOKE角色。
查看SPOKE2上的IPv4 ADVPN隧道信息,可以看到类型是S-H,说明本端是SPOKE角色,对端是HUB角色。
此时SPOKE2和SPOKE1之间是没有隧道的,我们需要手工触发一下。
可以看到,第一次触发的时候,TTL还是254,此时ADVPN的隧道状态是建立中。等隧道建立成功之后,TTL就变成了255,说明SPOKE2和SPOKE1之间成功建立了直连隧道S-S。
查看OSPF邻居状态,SPOKE2还是只和HUB建立邻居关系。
查看SPOKE2设备的路由,已经通过OSPF学习到了HUB和SPOKE1的私网路由,而且可以看到现在SPOKE2和SPOKE1的互联地址是直连路由了,而在Hub-Spoke模型中还是OSPF路由。
查看SPOKE2建立的IKE SA和IPsec SA信息,可以看到,隧道存在于SPOKE2和HUB、SPOKE2和SPOKE1之间。
从SITE1追踪到SITE2的路径信息,可以看到,流量先到达网关SPOKE1,再到达SPOKE2,最后到达SITE2,符合Full-Mesh模型的转发路径,即:Spoke设备和Spoke设备之间建立起了S-S隧道,可以直接通信,无需绕转Hub设备。互访流量走“捷径”转发。