双出口带宽大的挤小的闲?华为防火墙DNS透明代理按带宽比分流
不少中小企业出口是这样的:从两家运营商各租了一条线,比如 ISP1 给了 100M、ISP2 给了 50M,本意是两条线按 2:1 的比例分担流量。可实际跑起来常常一条挤爆、一条常年闲着——病根多半出在 DNS 上:内网所有电脑的 DNS 都统一配成同一个地址,域名解析请求全从同一条链路出去,解析回来的 Web 服务器地址也偏向同一家运营商,后续访问自然跟着扎堆。华为 USG 防火墙的 DNS 透明代理专治这个问题:防火墙把内网用户的 DNS 请求按出接口改发给该接口绑定的运营商 DNS 服务器,配合按链路带宽比例的智能选路(100M:50M 即 2:1)和 ISP 选路(去哪家的地址走哪家的线),流量从解析这一步就自然分摊到两条链路上;再配上过载保护,一条线利用率超过阈值,新流量自动切到另一条。
本文的组网需求、配置思路与命令步骤,整理自华为官方发布的典型配置案例,参数可直接参考使用。
组网需求
企业分别从 ISP1 和 ISP2 租用了一条链路,ISP1 链路的带宽为 100M,ISP2 链路的带宽为 50M。ISP1 的 DNS 服务器地址为 11.11.11.8 和 11.11.11.9,ISP2 的 DNS 服务器地址为 22.22.22.8 和 22.22.22.9。内网用户的客户端都配置为同一个 DNS 服务器地址,本例假设为 10.2.0.70。企业提出三点要求:
- 10.3.0.0/24 网段内网用户的上网流量按照 2:1 的比例分配到 ISP1 和 ISP2 链路,保证各条链路得到充分利用且不发生拥塞;
- 内网用户访问域名 www.example.com 时不做 DNS 透明代理,但要在指定的 DNS 服务器(11.11.11.10)上解析该域名对应的 Web 服务器地址;
- 当一条 ISP 链路过载(阈值为 90%)时,可以使用另一条 ISP 链路进行流量转发。
本例中 interface1、interface3 和 interface5 分别代表 GE0/0/1、GE0/0/3、GE0/0/5。
配置思路
通过在 DeviceA 上配置 DNS 透明代理功能,使内网用户的 DNS 请求报文按照 2:1 的比例分配到 ISP1 与 ISP2 的 DNS 服务器上。DNS 透明代理处理 DNS 请求报文时,使用出接口上绑定的 DNS 服务器地址替换报文的目的地址;出接口的选择利用智能选路功能,因为企业希望流量按带宽比例(2:1)分配,所以智能选路方式设置为根据链路带宽负载分担,本例配置全局选路策略。为保证上网流量不绕道其他 ISP、直接通过目的地址所在 ISP 网络到达 Web 服务器,还需要配置 ISP 选路功能。共五步:
- 配置接口的 IP 地址、安全区域、网关地址、带宽和过载保护阈值;
- 配置 ISP 选路功能:制作 isp1.csv 和 isp2.csv 两个 ISP 地址文件,将 ISP1 的 DNS 服务器 IP 地址 11.11.11.8 写入 isp1.csv,将 ISP2 的 DNS 服务器 IP 地址 22.22.22.8 写入 isp2.csv,并上传到 DeviceA;
- 配置 DNS 透明代理功能:在出接口上绑定 DNS 服务器地址(11.11.11.8、11.11.11.9、22.22.22.8、22.22.22.9),配置 DNS 透明代理策略指定做代理的流量,并配置要排除的域名;
- 配置全局选路策略:智能选路方式为根据链路带宽负载分担,指定 DeviceA 与 ISP1、ISP2 网络直连的出接口作为智能选路成员接口;
- 配置基本的安全策略,允许企业内网用户访问外网资源。
本例着重介绍智能选路相关的配置,其余配置(如 NAT)请根据实际组网进行。
操作步骤
一、配置接口地址、带宽与过载保护阈值
配置接口的 IP 地址和网关地址,并配置接口所在链路的带宽和过载保护阈值。
[DeviceA] interface GE0/0/1
[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 100000 threshold 90
[DeviceA-GE0/0/1] bandwidth egress 100000 threshold 90
[DeviceA-GE0/0/1] quit
[DeviceA] interface GE0/0/3
[DeviceA-GE0/0/3] ip address 10.3.0.1 255.255.255.0
[DeviceA-GE0/0/3] quit
[DeviceA] interface GE0/0/5
[DeviceA-GE0/0/5] ip address 2.2.2.2 255.255.255.0
[DeviceA-GE0/0/5] gateway 2.2.2.254
[DeviceA-GE0/0/5] bandwidth ingress 50000 threshold 90
[DeviceA-GE0/0/5] bandwidth egress 50000 threshold 90
[DeviceA-GE0/0/5] quit
bandwidth 单位是 kbps:100000 即 100M、50000 即 50M,两条链路的带宽比例 2:1 就是后续智能选路分流的依据;threshold 90 表示链路利用率超过 90% 触发过载保护。
二、上传ISP地址文件
制作 isp1.csv 和 isp2.csv 两个 ISP 地址文件(ISP1 的 DNS 服务器 11.11.11.8 写入 isp1.csv,ISP2 的 DNS 服务器 22.22.22.8 写入 isp2.csv),使用 SFTP 方式上传到 DeviceA。导入的 ISP 地址文件固定存放在根目录下名称为 isp 的文件夹内(具体传输步骤本例从略)。
三、创建运营商名称并关联地址文件
为 ISP1 和 ISP2 分别创建运营商名称 isp1_ifgrp 和 isp2_ifgrp,并关联对应的 ISP 地址文件。
[DeviceA] isp name isp1_ifgrp set filename isp1.csv
[DeviceA] isp name isp2_ifgrp set filename isp2.csv
四、配置ISP路由
创建 ISP 路由,让去往各家运营商网段的流量走对应的出接口。
[DeviceA] ip route-isp isp1_ifgrp interface GE0/0/1 nexthop 1.1.1.254
[DeviceA] ip route-isp isp2_ifgrp interface GE0/0/5 nexthop 2.2.2.254
五、配置DNS透明代理
在出接口上绑定 DNS 服务器地址并启用健康检查,限定源地址为 10.3.0.0/24 网段的流量做 DNS 透明代理,并配置要排除的域名。
[DeviceA] dns-transparent-policy
[DeviceA-policy-dns] dns transparent-proxy enable
[DeviceA-policy-dns] dns server bind interface GE0/0/1 preferred 11.11.11.8 alternate 11.11.11.9 health-check enable
[DeviceA-policy-dns] dns server bind interface GE0/0/5 preferred 22.22.22.8 alternate 22.22.22.9 health-check enable
[DeviceA-policy-dns] dns transparent-proxy exclude domain www.example.com server preferred 11.11.11.10
[DeviceA-policy-dns] rule name abc
[DeviceA-policy-dns-rule-abc] source-address 10.3.0.0 24
[DeviceA-policy-dns-rule-abc] action tpdns
[DeviceA-policy-dns-rule-abc] quit
[DeviceA-policy-dns] quit
每个出接口绑定主备两个本运营商 DNS 并开启健康检查;exclude 一行是"例外清单"——www.example.com 不做代理,改由指定服务器 11.11.11.10 解析;rule 限定只有 10.3.0.0/24 网段的流量被代理。内网电脑上配的那个统一 DNS 地址(10.2.0.70)不用改,防火墙会按出接口替换目的地址。
六、配置全局选路策略
流量根据链路带宽负载分担。
[DeviceA] multi-interface
[DeviceA-multi-inter] add interface GE0/0/1
[DeviceA-multi-inter] add interface GE0/0/5
[DeviceA-multi-inter] mode proportion-of-bandwidth
[DeviceA-multi-inter] quit
mode proportion-of-bandwidth 即"按带宽比例分担"——DNS 请求选哪个出接口、后续流量走哪条线,都按 100M:50M = 2:1 的比例分配。
七、接口加入安全区域
[DeviceA] firewall zone trust
[DeviceA-zone-trust] add interface GE0/0/3
[DeviceA-zone-trust] quit
[DeviceA] firewall zone untrust
[DeviceA-zone-untrust] add interface GE0/0/1
[DeviceA-zone-untrust] add interface GE0/0/5
[DeviceA-zone-untrust] quit
内网口 GE0/0/3 进 Trust,两个运营商出口 GE0/0/1、GE0/0/5 都进 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
检查配置结果
- 执行
display firewall session table verbose destination inside 11.11.11.8命令,查看访问 ISP1 的 Web 服务器的流量出接口为 interface1(GE0/0/1),下一跳为 1.1.1.254; - 执行
display firewall session table verbose destination inside 22.22.22.8命令,查看访问 ISP2 的 Web 服务器的流量出接口为 interface5(GE0/0/5),下一跳为 2.2.2.254。
会话表里两类流量的出接口分别落在两条 ISP 链路上,说明 DNS 代理加带宽比例选路已经生效。
配置脚本
DeviceA 的配置脚本:
#
isp name isp1_ifgrp set filename isp1.csv
isp name isp2_ifgrp set filename isp2.csv
#
#
interface GE0/0/1
ip address 1.1.1.1 255.255.255.0
gateway 1.1.1.254
bandwidth ingress 100000 threshold 90
bandwidth egress 100000 threshold 90
#
interface GE0/0/3
ip address 10.3.0.1 255.255.255.0
#
interface GE0/0/5
ip address 2.2.2.2 255.255.255.0
gateway 2.2.2.254
bandwidth ingress 50000 threshold 90
bandwidth egress 50000 threshold 90
#
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/5
#
ip route-isp isp1_ifgrp interface GE0/0/1 nexthop 1.1.1.254
ip route-isp isp2_ifgrp interface GE0/0/5 nexthop 2.2.2.254
#
multi-interface
mode proportion-of-bandwidth
add interface GE0/0/1
add interface GE0/0/5
#
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
#
dns-transparent-policy
dns transparent-proxy enable
dns server bind interface GE0/0/1 preferred 11.11.11.8 alternate 11.11.11.9 health-check enable
dns server bind interface GE0/0/5 preferred 22.22.22.8 alternate 22.22.22.9 health-check enable
dns transparent-proxy exclude domain www.example.com server preferred 11.11.11.10
rule name abc
source-address 10.3.0.0 mask 255.255.255.255
action tpdns
mode based-on-multi-interface
#
return
注意事项
- 本例来自华为 USG 防火墙典型配置案例,适用于 USG6000F 系列等产品,落到具体设备前请核对你设备的型号与软件版本。
- ISP 地址文件是 ISP 选路的底座:文件固定存放在设备根目录下名称为 isp 的文件夹内,文件内容要覆盖该运营商的地址段,只有命中地址文件的流量才会走 ISP 选路。
- 本例着重智能选路相关配置,NAT 等其余配置请根据实际组网参考官方对应章节完成,双出口上网通常还需要配套 NAT 策略。
- bandwidth 值要与运营商实际给的带宽一致:写小了链路利用率先到阈值、提前切流,写大了过载保护失真。
- 例行检查 DNS 服务器健康状态(健康检查已随绑定开启),DNS 服务器异常时代理切换依赖 alternate 地址生效。
双出口链路利用率长期失衡要整治,贵州诚鑫致达科技可以帮你做一轮选路与带宽评估再动手改配置。各厂商防火墙的选路与 DNS 处理机制存在差异,操作前请核对你的设备型号与软件版本。
源:华为USG防火墙官方文档
企业存储选型参考|诚鑫致达科技
企业数据存储与备份,可参考群晖在售机型:DS425+(4 盘位,小团队起步) · RS2423+(业务长起来平滑升级机架式)。需要选型建议或上门评估,搜「诚鑫致达」即可找到我们。