多路负载/主备 IPSec VPN
多路负载/主备 IPSec VPN
网络需求
通过 IPsec VPN(接口模式)将 2 个局域网连接起来,实现 192.168.0.0/24 与 192.168.1.0/24 两个网段的通信,并实现多路负载或者主备切换。
网络拓扑

- FGT - BJ port2 和 port3 接口分别与 FGT - SH port2 200.1.1.2 建立两条 IPSec VPN。
- FGT - SH 配置同理,FGT - SH 使用 port2 接口分别与 FGT - BJ 100.1.1.2 和 101.1.1.2 建立两条 IPSec VPN。
配置步骤
配置 IPSec
1.基本配置
配置接口 IP 和路由


配置 IPSEC VPN
FGT - BJ 使用 port2 接口与 FGT - SH port2 200.1.1.2 建立 IPSEC VPN
选择“VPN”-->“IPsec 隧道”,点击“新建”,选择“IPsec 隧道”。

根据“VPN 创建向导”进行 VPN 模板配置,输入名称,拓扑中没有 NAT,这里选择“站点之间没有 NAT”,并点击下一步。

输入对端设备的 IP 地址(流出接口会根据路由自动选择),以及预共享秘钥。

选择“本地接口”,即需要被 IPSEC 保护的内网的接口,这里是 port5 接口,本地子网会自动写为该接口的 IP 所在的 IP 网段(如果被保护的是其他网段,可以根据实际网络需求修改),输入“远端子网”,即远端需要被保护的网络。然后点击“下一步”。

VPN 创建向导提示即将创建的内容,然后点击完成。

VPN 创建成功。

FGT - BJ 使用 port3 接口与 FGT - SH port2 200.1.1.2 建立 IPSEC VPN
选择“VPN”-->“IPsec 隧道”,点击“新建”,选择“IPsec 隧道”。

根据“VPN 创建向导”进行 VPN 模板配置,输入名称,拓扑中没有 NAT,这里选择“站点之间没有 NAT”,并点击下一步。

输入对端设备的 IP 地址(流出接口会根据路由自动选择),以及预共享秘钥。

选择“本地接口”,即需要被 IPSEC 保护的内网的接口,这里是 port5 接口,本地子网会自动写为该接口的 IP 所在的 IP 网段(如果被保护的是其他网段,可以根据实际网络需求修改),输入“远端子网”,即远端需要被保护的网络。然后点击“下一步”。

VPN 创建向导提示即将创建的内容,然后点击完成。

VPN 创建成功。

重要
如果最后完成模板部署的时候报错,那么需要注意,不要有旧的配置存在,比如相关 VPN 的策略、VPN 的路由、VPN 的 IP 地址对象,因为会冲突,所以需要把这些内容删除干净才可以顺利的部署向导模板,一般第一次部署不会遇到报错。
查看 IPSEC 配置
已创建两条 IPSEC VPN。

已创建 IPSEC 路由。
重要
IPsec VPN 隧道的路由下一跳只是一个隧道 ID 标识,并不是真正的路由下一跳 IP,这和我们普通的路由下一跳不同,如这里的 200.1.1.2 是隧道的 ID;隧道 ID 通常是隧道的远程网关,对于具有相同远程网关的隧道,其他隧道 id 将随机分配(10.0.0.x),如第 VPN2-to-SH 隧道 ID 10.0.0.1。

已创建防火墙策略。

针对向导配置的优化建议
在第一阶段中配置 DPD 模式为“空闲”(on-idle)(IPSec 隧道内没有流量时发 DPD 探测,只有当 IPSec 隧道内双向有流量时,才不发 DPD 探测),实现快速的检测并切换 VPN 隧道的目的。

对应的命令行
config vpn ipsec phase1-interface edit "VPN1-to-SH" set dpd on-idle set dpd-retrycount 3 set dpd-retryinterval 10 next edit "VPN2-to-SH" set dpd on-idle set dpd-retrycount 3 set dpd-retryinterval 10 next end开启自动协商,主动让隧道 UP 起来,而非使用 VPN 业务的时候再去触发 VPN 的协商,这样可以减少业务的丢包。在 VPN 主动发起方开启即可。
IPSEC VPN 阶段一自动协商是默认开启的。
config vpn ipsec phase1-interface edit "VPN1-to-SH" set auto-negotiate enable next edit "VPN2-to-SH" set auto-negotiate enable next endIPSEC VPN 阶段二自动协商默认关闭,需要开启。
config vpn ipsec phase2-interface edit "VPN1-to-SH" set auto-negotiate enable next edit "VPN2-to-SH" set auto-negotiate enable next end
多路负载 IPSEC VPN
按照上述方式配置完成后,两条 IPSEC VPN 隧道的会 UP 起来,并且已通过静态路由实现负载均衡。


主备 IPSEC VPN
有两种方法实现主备 IPSEC VPN,这里 VPN1-to-SH 作为主,VPN2-to-SH 作为备。
1.使用路由的方法。通过静态路由的优先级控制 IPSEC VPN 主备。(动态路由也可以)
将 VPN2-to-SH 路由的优先级设置为 10,默认是 1,值越低优先级越高。

两条 IPSEC VPN 都能 UP。

从路由表可以看出,VPN1-to-SH 优先。

当 VPN1-to-SH DOWN 后,路由指向 VPN2-to-SH。


当 dpd 设置重试次数为 3,重试时间间隔为 10s 时,主备切换丢 10 个包。
config vpn ipsec phase1-interface
edit "VPN1-to-SH"
set dpd on-idle
set dpd-retrycount 3
set dpd-retryinterval 10
next
end
当 dpd 设置重试次数为 3,重试时间间隔为 1s 时,主备切换丢 2 个包。
config vpn ipsec phase1-interface
edit "VPN1-to-SH"
set dpd on-idle
set dpd-retrycount 3
set dpd-retryinterval 1
next
end
2.使用 IPSEC monitor 的方法
VPN1-to-SH 作为主 VPN UP 起来,VPN2-to-SH 作为备 VPN 则处于监听模式,一旦检测到主 VPN 隧道故障,则将备份的 VPN 协商起来,接替主 VPN 的工作。
config vpn ipsec phase1-interface
edit "VPN2-to-SH"
set monitor "VPN1-to-SH"
next
end配置完成后,VPN1-to-SH 是 UP 的,VPN2-to-SH 是 down 的。


当 port2 的链路故障,VPN1-to-SH DOWN 后,VPN2-to-SH 会协商 UP 起来。

当 dpd 设置重试次数为 3,重试时间间隔为 10s 时,主备切换丢 10 个包。
config vpn ipsec phase1-interface
edit "VPN1-to-SH"
set dpd on-idle
set dpd-retrycount 3
set dpd-retryinterval 10
next
end
当 dpd 设置重试次数为 3,重试时间间隔为 1s 时,主备切换丢 2 个包。
config vpn ipsec phase1-interface
edit "VPN1-to-SH"
set dpd on-idle
set dpd-retrycount 3
set dpd-retryinterval 1
next
end
当 port2 的链路恢复后,VPN1-to-SH 会抢回来,VPN1-to-SH 协商 UP 起来,VPN2-to-SH DOWN。
