双出口想让大带宽线主用小线兜底?华为防火墙智能选路按链路优先级自动切换

出口拉了两家运营商的企业常遇到这种别扭:从 ISP1 租了两条 50M 的大线跑业务,又从 ISP2 留了一条 10M 的小线救急。默认等价路由会把流量均摊到几条线上——备份线本来质量一般,也被塞了半车货;而真想要"大线全扛、小线待命、大线全断才切过去",手工静态路由又切不动、回不来。华为防火墙的全局智能选路专门管这件事:给每条出口链路标一个优先级,再挂一个健康检查持续探测链路死活,主链路故障流量自动降级到备份链路。华为官方文档有一套完整的 CLI 举例——配置流量按链路优先级主备备份,本篇按这套示例把"两条 50M 主用、一条 10M 兜底"的结构从头配到尾,命令逐段给出,配置脚本一并附上方便整体核对。

本文的组网需求、配置思路与命令步骤,整理自华为官方发布的典型配置案例,参数可直接参考使用。

组网需求

企业从ISP1租用了2条链路,带宽均为50M;从ISP2租用了1条链路,带宽为10M。企业希望优先使用ISP1的2条链路传输上网流量,只有当ISP1的2条链路均故障时,才使用ISP2链路。

本例中interface1、interface2、interface3、interface4分别代表GE0/0/1、GE0/0/2、GE0/0/3、GE0/0/4。

翻译成白话:DeviceA 是出口处的防火墙,GE0/0/1、GE0/0/2 两条口接 ISP1 的两条 50M 线,GE0/0/4 接 ISP2 的 10M 线,GE0/0/3 接内网。日常上网流量全压在 ISP1 的两条线上(两条之间按 1:1 分摊),ISP2 那条静默待命;只有 ISP1 两条全部故障,流量才整体切到 ISP2,主备关系一目了然。

配置思路

由于企业希望优先使用ISP1链路,所以全局智能选路方式可以设置为根据链路优先级主备备份,指定2条ISP1链路的优先级均为2,ISP2链路的优先级为1。为了保证主接口链路故障时,DeviceA可以使用备份接口链路转发流量,还需要配置健康检查功能。

  • 配置健康检查功能,为ISP1和ISP2链路配置健康检查。
  • 配置接口的IP地址、安全区域、网关地址和带宽。
  • 配置全局选路策略。配置智能选路方式为根据链路优先级主备备份,接口GE0/0/1、GE0/0/2和GE0/0/4一起作为智能选路成员。引用健康检查并为每个接口设置优先级。
  • 配置基本的安全策略,允许企业内网用户访问外网资源。

本例着重介绍智能选路相关的配置,其余配置请根据实际组网进行配置,例如NAT配置请参考《配置指南-NAT与IPv6过渡技术配置-NAT配置-配置源NAT-举例:双出口环境下私网用户通过NAPT访问Internet》中的配置NAT策略步骤。

关键点有两处。其一,优先级数字与主备对应——ISP1 两条线都显式标 priority 2,ISP2 这条不加优先级参数(缺省为 1),数字大的当主、小的当备;其二,健康检查把"链路通不通"交给设备自己探测——探测目标是各 ISP 网络里已知的设备地址,探测失败即认定链路故障,选路自动避开该出口。

操作步骤

一、开启健康检查功能,为ISP1和ISP2链路新建健康检查

假设ISP1网络的目的地址网段为192.0.2.0/24,ISP2网络的目的地址网段为198.51.100.0/24。

<HUAWEI> system-view
[HUAWEI] sysname DeviceA
[DeviceA] healthcheck enable
[DeviceA] healthcheck name isp_health
[DeviceA-healthcheck-isp_health] destination 192.0.2.1 interface ge 0/0/1 protocol tcp destination-port 10001
[DeviceA-healthcheck-isp_health] destination 192.0.2.3 interface ge 0/0/2 protocol tcp destination-port 10001
[DeviceA-healthcheck-isp_health] destination 198.51.100.1 interface ge 0/0/4 protocol tcp destination-port 10003
[DeviceA-healthcheck-isp_health] quit

三条探测分别绑三条外网口:走 GE0/0/1 探 192.0.2.1、走 GE0/0/2 探 192.0.2.3(ISP1 侧),走 GE0/0/4 探 198.51.100.1(ISP2 侧)。此处假设192.0.2.1~192.0.2.4和198.51.100.1、198.51.100.2分别为ISP1和ISP2网络中已知的设备地址。

关于健康检查有几句官方提醒值得记住:一个健康检查内仅能针对接口的单个IP进行探测,有多余的IP需要探测可以使用策略路由配置实现;如果健康检查配置完后,状态一直为down,请检查对应链路是否正常;健康检查的探测报文不受安全策略控制,默认放行,无需配置相应安全策略。

二、配置接口的IP地址和网关地址,配置接口所在链路的带宽

[DeviceA] interface ge 0/0/1
[DeviceA-GE0/0/1] undo portswitch
[DeviceA-GE0/0/1] ip address 1.1.1.1 255.255.255.0
[DeviceA-GE0/0/1] gateway 1.1.1.254
[DeviceA-GE0/0/1] bandwidth ingress 50000
[DeviceA-GE0/0/1] bandwidth egress 50000
[DeviceA-GE0/0/1] quit
[DeviceA] interface ge 0/0/2
[DeviceA-GE0/0/2] undo portswitch
[DeviceA-GE0/0/2] ip address 1.1.2.2 255.255.255.0
[DeviceA-GE0/0/2] gateway 1.1.2.254
[DeviceA-GE0/0/2] bandwidth ingress 50000
[DeviceA-GE0/0/2] bandwidth egress 50000
[DeviceA-GE0/0/2] quit
[DeviceA] interface ge 0/0/3
[DeviceA-GE0/0/3] undo portswitch
[DeviceA-GE0/0/3] ip address 10.3.0.1 255.255.255.0
[DeviceA-GE0/0/3] quit
[DeviceA] interface ge 0/0/4
[DeviceA-GE0/0/4] undo portswitch
[DeviceA-GE0/0/4] ip address 2.2.2.2 255.255.255.0
[DeviceA-GE0/0/4] gateway 2.2.2.254
[DeviceA-GE0/0/4] bandwidth ingress 10000
[DeviceA-GE0/0/4] bandwidth egress 10000
[DeviceA-GE0/0/4] quit

四条口各就各位:GE0/0/1、GE0/0/2 是 ISP1 的两条 50M 线,出入方向带宽都填 50000(单位 kbit/s);GE0/0/4 是 ISP2 的 10M 线,填 10000;GE0/0/3 接内网,只配 IP 不配网关不填带宽。三条外网口的 gateway 指向各自 ISP 的接入网关,报文出接口后下一跳由此确定。undo portswitch 是把接口从二层模式切成三层路由口,切过来才能直接配 IP 地址。

三、配置全局选路策略,流量根据链路优先级主备备份,并引用健康检查

[DeviceA] multi-interface
[DeviceA-multi-inter] mode priority-of-userdefine
[DeviceA-multi-inter] add interface ge 0/0/1 priority 2
[DeviceA-multi-inter] add interface ge 0/0/2 priority 2
[DeviceA-multi-inter] add interface ge 0/0/4
[DeviceA-multi-inter] healthcheck isp_health
[DeviceA-multi-inter] quit

这六行就是主备的核心:mode priority-of-userdefine 表示按用户自定义的链路优先级选路;GE0/0/1、GE0/0/2 显式标 priority 2(主),GE0/0/4 不加参数按缺省优先级 1(备);healthcheck isp_health 把第一步建的健康检查挂上来,探测结果直接驱动链路进退。

四、将接口加入安全区域

[DeviceA] firewall zone trust
[DeviceA-zone-trust] add interface ge 0/0/3
[DeviceA-zone-trust] quit
[DeviceA] firewall zone untrust
[DeviceA-zone-untrust] add interface ge 0/0/1
[DeviceA-zone-untrust] add interface ge 0/0/2
[DeviceA-zone-untrust] add interface ge 0/0/4
[DeviceA-zone-untrust] quit

内网口 GE0/0/3 进 trust 区域,三条外网口都进 untrust 区域——三条出口线对防火墙来说同属不可信域,主备之分交给智能选路去管。

五、配置Trust到Untrust区域的安全策略,允许企业内网用户访问外网资源

假设内网用户网段为10.3.0.0/24。

[DeviceA] security-policy
[DeviceA-policy-security] rule name policy_sec_trust_untrust
[DeviceA-policy-security-rule-policy_sec_trust_untrust] source-zone trust
[DeviceA-policy-security-rule-policy_sec_trust_untrust] destination-zone untrust
[DeviceA-policy-security-rule-policy_sec_trust_untrust] source-address 10.3.0.0 24
[DeviceA-policy-security-rule-policy_sec_trust_untrust] action permit
[DeviceA-policy-security-rule-policy_sec_trust_untrust] quit
[DeviceA-policy-security] quit

智能选路只决定"从哪条出口走",流量能不能走还要看安全策略——这条规则就是内网用户上网的通行证,把源网段换成实际的用户网段即可。

结果验证

网络运行一段时间后,分别在GE0/0/1、GE0/0/2和GE0/0/4上执行display interface brief命令查看出接口方向近300s内的平均带宽利用率(OutUti字段),三个接口的OutUti比例接近1:1:0。即GE0/0/1和GE0/0/2按1:1转发流量,正常情况下GE0/0/4不转发流量。

当ISP1的2条链路都故障时,所有流量都通过GE0/0/4转发。

判读要点就在这组比例上:正常时 1:1:0——两条 50M 均摊、10M 空闲待命,主备结构落地;人为断掉 ISP1 两条线(维护窗口里拔线或让对端关端口),流量应整体落到 GE0/0/4 上,这就是健康检查驱动的自动切换,全程不需要人碰配置。

配置脚本

DeviceA的配置文件:

# 
sysname DeviceA
#
healthcheck enable
healthcheck name isp_health
 destination 192.0.2.1 interface GE0/0/1 protocol tcp destination-port 10001
 destination 192.0.2.3 interface GE0/0/2 protocol tcp destination-port 10001
 destination 198.51.100.1 interface GE0/0/4 protocol tcp destination-port 10003
#
interface GE0/0/1
 ip address 1.1.1.1 255.255.255.0
 gateway 1.1.1.254
 bandwidth ingress 50000
 bandwidth egress 50000
#
interface GE0/0/2
 ip address 1.1.2.2 255.255.255.0
 gateway 1.1.2.254
 bandwidth ingress 50000
 bandwidth egress 50000
#
interface GE0/0/3
 ip address 10.3.0.1 255.255.255.0
#
interface GE0/0/4
 ip address 2.2.2.2 255.255.255.0
 gateway 2.2.2.254
 bandwidth ingress 10000
 bandwidth egress 10000
#
 firewall zone trust
  set priority 85
  add interface GE0/0/3
#
firewall zone untrust
 set priority 5
 add interface GE0/0/1
 add interface GE0/0/2
 add interface GE0/0/4
#
 multi-interface
  mode priority-of-userdefine
  add interface GE0/0/1 priority 2
  add interface GE0/0/2 priority 2
  add interface GE0/0/4
  healthcheck isp_health
#
security-policy
 rule name policy_sec_trust_untrust
  source-zone trust
  destination-zone untrust
  source-address 10.3.0.0 mask 255.255.255.0
  action permit
#
return

注意事项

  • 优先级数字大的当主:示例里 ISP1 两条线 priority 2、ISP2 缺省 1,想调整主备顺序就改这里的数字;主用线之间同优先级自动负载分担。
  • 探测目标必须是"确实存在于对端运营商网络里"的地址——目标本身不可达会被误判成链路故障,引发无谓切换;目标地址建议向 ISP 核实。
  • 一个健康检查内只能针对接口的单个 IP 探测,要多探几个地址时用策略路由另配,不要都塞进同一个健康检查。
  • 健康检查的探测报文不受安全策略控制、默认放行,不需要为探测单独开安全策略;反之也不能靠安全策略去"关掉"探测。
  • 带宽参数照实填(50M 填 50000、10M 填 10000,单位 kbit/s):智能选路的带宽利用率统计按这个数字计算,填虚了看 OutUti 就失真。
  • 本例聚焦智能选路本身,出口实际还有 NAT 等业务配置,按现场组网补齐。
  • 切换演练放在维护窗口做:断 ISP1 观察流量是否整体落到 ISP2、业务是否恢复,再恢复线路观察流量是否回到主链路,演练结果记录归档。

出口主备关系想定得准,别只盯着带宽数字——建议请诚鑫致达科技先把两条线一段时间的丢包与时延数据拉出来对比,按实测质量定优先级,主备切换才有依据。各厂商设备的命令与默认参数存在差异,本文步骤与命令均出自华为官方文档,操作前请核对你的设备型号与软件版本。

源:华为USG防火墙6000F-S官方文档