1. 需求分析
- 防火墙为总部,公网地址为1.1.100.2,华三路由器为分支,公网地址为1.1.200.2,总部和分支间R1R2需要通过ospf实现路由动态学习,使总部172.16.1.1与分支192.168.1.1网段互访。本文档只适用两端公网地址固定环境。
2. 环境分析
- 首先两地需要运行ospf肯定需要创建vpn隧道,ospf建立邻居是通过组播地址去发送hello包的,ipsec作为安全的vpn却不能传输组播协议,而gre虽然能传组播却是明文传输很容易被人截获篡改,两者结合起来使用的话即可以传组播又可以实现报文加密。
- 可以使用ipsec over gre也可以使用gre over ipsec,前者是先建立gre隧道然后使用ispec对经过隧道传输的流量进行加密,主要解决的是gre不能报文加密传输的问题。后者是先建立ipsec隧道,然后在ipsec的基础上建立gre隧道用于传输组播等ipsec不支持传输的报文,主要解决的是报文不能传输的问题。两者出发点是不一样的但是都能实现组播报文的传输。
- ger有一个缺陷是只能在两端设备地址固定的情况下才能使用,而ipsec可以允许一端地址不固定(野蛮模式),因此两端地址固定的情况下gre over ipsec和ipsec over gre都行,在其中一端地址不固定的环境只能采用gre over ipsec。
- 由于总部分支均为固定地址,因此两地可以采用主模式ispec也可以使用野蛮模式,这里我们使用主模式,对于GRE他需要一个固定的对端地址,可以在两设备建立ipsec的时候将两设备的loopback接口互访流量做为感兴趣流(代理ID),也可以直接使用公网口地址,这里我们直接使用公网口地址,通过各自公网口地址作为gre的源和目的地址建立gre隧道。
3. 组网拓扑
- 总部公网地址 e0/1 1.1.100.2/24 分部公网地址 g1/0 动态获取;
- 总部tunnel1 1.1.1.1/30 分部tunnel1 1.1.1.2/30。
图中分支e0口实际为G1/0口,EVE模拟器显示不一致,接口ip、接口加入安全域、安全规则放通等基础配置略过,自行配置。
4. 配置步骤
山石端(总部):
#创建IKE一阶段提议
SG-6000(config)# isakmp proposal 1
SG-6000(config-isakmp-proposal)# authentication pre-share
SG-6000(config-isakmp-proposal)# encryption des
SG-6000(config-isakmp-proposal)# hash md5
SG-6000(config-isakmp-proposal)# group 1
SG-6000(config-isakmp-proposal)# lifetime 86400
#创建VPN对端
SG-6000(config)# isakmp peer 1
SG-6000(config-isakmp-peer)# mode main
SG-6000(config-isakmp-peer)# peer 1.1.200.2
SG-6000(config-isakmp-peer)# isakmp-proposal 1
SG-6000(config-isakmp-peer)# pre-share 12345
SG-6000(config-isakmp-peer)# local-id ip 1.1.100.2
SG-6000(config-isakmp-peer)# peer-id ip 1.1.200.2
SG-6000(config-isakmp-peer)# nat-traversal
SG-6000(config-isakmp-peer)# interface ethernet0/1
#创建二阶段提议
SG-6000(config)# ipsec proposal 1
SG-6000(config-ipsec-proposal)# protocol esp
SG-6000(config-ipsec-proposal)# hash md5
SG-6000(config-ipsec-proposal)# encryption 3des
SG-6000(config-ipsec-proposal)# group nopfs
SG-6000(config-ipsec-proposal)# lifetime 86400
#创建IPSEC隧道
SG-6000(config)# tunnel ipsec 1 auto
SG-6000(config-tunnel-ipsec-auto)# ipsec-proposal 1
SG-6000(config-tunnel-ipsec-auto)# isakmp-peer 1
SG-6000(config-tunnel-ipsec-auto)# mode transport //因为tunnel口封装后已经是公网头部了,所以ipsec在这里可以使用传输模式,不然ipsec会在数据包前面再封装一层公网ip头部,在保持两端模式一致的情况下这里如果使用隧道模式也不影响数据包传递,需要注意的是mtu值,因为隧道模式会比传输模式多出一个公网ip头部大小。
SG-6000(config-tunnel-ipsec-auto)# id local 1.1.100.2/32 remote 1.1.200.2/32 service any //这里是两端公网地址,因为后面数据包封装的时候是先把私网数据包封装成tunnel口的公网地址,这时候总部和分支之间互访的流量就会变成公网地址访问公网地址,所以ipsec感兴趣流需要匹配的是公网刚问公网的流量。在gre over ipsec中ipsec的感兴趣流可以总结为tunnel口封装后的地址。
#创建GRE隧道绑定IPSEC
SG-6000(config)# tunnel gre 1
SG-6000(config-tunnel-gre)# key 12345
SG-6000(config-tunnel-gre)# source 1.1.100.2
SG-6000(config-tunnel-gre)# destination 1.1.200.2
SG-6000(config-tunnel-gre)# interface ethernet0/1
SG-6000(config-tunnel-gre)# next-tunnel ipsec 1
#创建隧道接口把流量引到GRE隧道,因为上面把IPSEC绑定为GRE的下一个隧道,所以GRE隧道的流量又会引到IPSEC隧道。
SG-6000(config)# interface tunnel1
SG-6000(config-if-tun1)# zone VPNHub
SG-6000(config-if-tun1)# ip address 1.1.1.1/30
SG-6000(config-if-tun1)# tunnel gre 1 gw 1.1.1.2
SG-6000(config-if-tun1)# ip ospf network point-to-point
#OSPF发布路由
SG-6000(config)# ip vrouter trust-vr
SG-6000(config-vrouter)# router ospf 1
SG-6000(config-router)# router-id 1.1.1.1
SG-6000(config-router)# network 1.1.1.1/32 area 0
SG-6000(config-router)# network 1.1.10.1/32 area 0
华三端(分支):
#创建一阶段提议
[H3C]ike proposal 1
[H3C-ike-proposal-1]authentication-method pre-share
[H3C-ike-proposal-1]authentication-algorithm md5
[H3C-ike-proposal-1]encryption-algorithm des-cbc
[H3C-ike-proposal-1]dh group1
#
[H3C]ike keychain k1
[H3C-ike-keychain-k1]pre-shared-key address 1.1.100.2 key simple 12345
#
[H3C]ike profile p1
[H3C-ike-profile-p1]keychain k1
[H3C-ike-profile-p1]exchange-mode main
[H3C-ike-profile-p1]local-identity address 1.1.200.2
[H3C-ike-profile-p1]match remote identity address 1.1.100.2
[H3C-ike-profile-p1]proposal 1
#创建二阶段提议
[H3C]ipsec transform-set t1
[H3C-ipsec-transform-set-t1]encapsulation-mode transport ====传输模式
[H3C-ipsec-transform-set-t1]protocol esp
[H3C-ipsec-transform-set-t1]esp encryption-algorithm 3des-cbc
[H3C-ipsec-transform-set-t1]esp authentication-algorithm md5
[H3C-ipsec-transform-set-t1]undo pfs
#创建感兴趣流
[H3C]acl advanced 3344
[H3C-acl-ipv4-adv-3344] rule 0 permit ip source 1.1.200.2 0 destination 1.1.100.2 0
#创建ipsec策略,绑定一阶段二阶段提议
[H3C]ipsec policy H3C 1 isakmp
[H3C-ipsec-policy-isakmp-H3C-1]transform-set t1
[H3C-ipsec-policy-isakmp-H3C-1]security acl 3344
[H3C-ipsec-policy-isakmp-H3C-1]local-address 1.1.200.2
[H3C-ipsec-policy-isakmp-H3C-1]remote-address 1.1.100.2
[H3C-ipsec-policy-isakmp-H3C-1]ike-profile p1
#创建GRE隧道,源目的为本端和对端的公网口地址
[H3C]interface Tunnel1 mode gre
[H3C-Tunnel1]gre key 12345
[H3C-Tunnel1] ip address 1.1.1.2 30
[H3C-Tunnel1] ospf network-type p2p
[H3C-Tunnel1] source 1.1.200.2
[H3C-Tunnel1] destination 1.1.100.2
#公网口调用IPSEC
[H3C]interface GigabitEthernet1/0
[H3C-GigabitEthernet1/0] ip address 1.1.200.2 24
[H3C-GigabitEthernet1/0] ipsec apply policy H3C
#发布OSPF路由
[H3C]ospf 1 router-id 1.1.1.2
[H3C-ospf-1] area 0.0.0.0
[H3C-ospf-1-area-0.0.0.0] network 1.1.1.2 0.0.0.0
[H3C-ospf-1-area-0.0.0.0]network 1.1.20.1 0.0.0.0
5. 结果验证
- 总部防火墙可以正常学习到分部R2的192.168.1.1主机路由,以总部172.16.1.1访问分支192.168.1.1为例,R1流量上到山石防火墙后,山石防火墙查询路由表下一跳为tunnel1 GRE隧道接口,流量会进行GRE封装,封装后的公网IP头部为总部公网接口地址访问分支公网接口地址,然后流量上送到ipsec隧道,由于ipsec感兴趣流(代理id)配置的是两端公网接口地址互访流量,ipsec会对数据包进行加密再次封装,由于是传输模式,ip头部不会再次封装。
没有回复内容