配置DNS透明代理和全局选路策略实现上网流量的负载分担

介绍通过DNS透明代理和全局选路策略实现上网流量负载分担的配置举例。

组网需求

图1所示,企业分别从ISP1和ISP2租用了一条链路,ISP1链路的带宽为100M,ISP2链路的带宽为50M。ISP1的DNS服务器地址为8.8.8.8和8.8.8.9,ISP2的DNS服务器地址为9.9.9.8和9.9.9.9。一般情况下,企业内网用户的客户端都会配置为一个相同的DNS服务器地址,此用例假设配置为10.2.0.70。

  • 企业希望10.3.0.0/24网段内网用户的上网流量按照2:1的比例分配到ISP1和ISP2链路,保证各条链路得到充分利用且不会发生拥塞,提升内网用户的上网体验。

  • 内网用户访问域名www.example.com时,不做DNS透明代理,但是要在指定的DNS服务器(8.8.8.10)上解析该域名对应的Web服务器地址。

  • 当一条ISP链路过载(阈值为90%)时,可以使用另一条ISP链路进行流量转发。

图1 企业内网用户访问DNS服务器
配置DNS透明代理和全局选路策略实现上网流量的负载分担

配置思路

通过在FW上配置DNS透明代理功能,可以使内网用户的DNS请求报文按照2:1的比例分配到ISP1与ISP2的DNS服务器上。DNS透明代理功能处理DNS请求报文时,使用出接口上绑定的DNS服务器地址替换报文的目的地址,出接口的选择需要利用智能选路功能,由于企业希望上网流量能够根据带宽比例(2:1)进行分配,所以智能选路的方式设置为根据链路带宽负载分担,本例中配置全局选路策略。为了保证上网流量不会绕道其他ISP,而是直接通过目的地址所在ISP网络到达Web服务器,需要配置ISP选路功能。

  1. 可选:配置健康检查功能,分别为ISP1和ISP2链路配置健康检查。
  2. 配置接口的IP地址、安全区域、网关地址、带宽和过载保护阈值,并在接口上应用健康检查。

  3. 配置ISP选路功能。制作isp1.csv和isp2.csv两个ISP地址文件,并上传到FW上。

  4. 配置DNS透明代理功能。在出接口上绑定DNS服务器地址,配置DNS透明代理策略来指定做DNS透明代理的流量,并配置要排除的域名。

  5. 配置全局选路策略。配置智能选路方式为根据链路带宽负载分担,并指定FW和ISP1、ISP2网络直连的出接口作为智能选路成员接口。

  6. 配置基本的安全策略,允许企业内网用户访问外网资源。

配置DNS透明代理和全局选路策略实现上网流量的负载分担

本例着重介绍智能选路相关的配置,其余配置如NAT请根据实际组网进行配置。

此场景下流量是否能进行过载切换,依赖DNS透明代理的DNS解析结果。

操作步骤

  1. 可选:开启健康检查功能,并为ISP1和ISP2链路分别新建一个健康检查。 
    <FW> system-view
    [FW] healthcheck enable
    [FW] healthcheck name isp1_health
    [FW-healthcheck-isp1_health] destination 8.8.8.8 interface GigabitEthernet1/0/1 protocol dns
    [FW-healthcheck-isp1_health] destination 8.8.8.9 interface GigabitEthernet1/0/1 protocol dns
    [FW-healthcheck-isp1_health] quit
    [FW] healthcheck name isp2_health
    [FW-healthcheck-isp2_health] destination 9.9.9.8 interface GigabitEthernet1/0/5 protocol dns
    [FW-healthcheck-isp2_health] destination 9.9.9.9 interface GigabitEthernet1/0/5 protocol dns
    [FW-healthcheck-isp2_health] quit
    配置DNS透明代理和全局选路策略实现上网流量的负载分担

    DNS透明代理功能和智能选路一起配合使用且需要同时启用DNS透明代理的健康检查和智能选路接口下的健康检查时,智能选路接口下的健康检查探测目的地址需要配置为接口绑定的DNS服务器地址,探测协议配置为DNS,以确保两处健康检查结果一致,接口链路在正常状态下可以始终支持DNS代理,避免因为DNS请求失败导致业务访问失败。

    如果健康检查配置完后,状态一直为down,请检查健康检查的配置。

     

  2. 配置接口的IP地址和网关地址,配置接口所在链路的带宽和过载保护阈值,并应用对应的健康检查。 
    [FW] interface GigabitEthernet 1/0/1
    [FW-GigabitEthernet1/0/1] ip address 1.1.1.1 255.255.255.0
    [FW-GigabitEthernet1/0/1] gateway 1.1.1.254
    [FW-GigabitEthernet1/0/1] bandwidth ingress 100000 threshold 90
    [FW-GigabitEthernet1/0/1] bandwidth egress 100000 threshold 90
    [FW-GigabitEthernet1/0/1] healthcheck isp1_health
    [FW-GigabitEthernet1/0/1] quit
    [FW] interface GigabitEthernet 1/0/3
    [FW-GigabitEthernet1/0/3] ip address 10.3.0.1 255.255.255.0
    [FW-GigabitEthernet1/0/3] quit
    [FW] interface GigabitEthernet 1/0/5
    [FW-GigabitEthernet1/0/5] ip address 2.2.2.2 255.255.255.0
    [FW-GigabitEthernet1/0/5] gateway 2.2.2.254
    [FW-GigabitEthernet1/0/5] bandwidth ingress 50000 threshold 90
    [FW-GigabitEthernet1/0/5] bandwidth egress 50000 threshold 90
    [FW-GigabitEthernet1/0/5] healthcheck isp2_health
    [FW-GigabitEthernet1/0/5] quit

     

  3. 上传ISP地址文件到FW,可以使用SFTP方式进行传输,导入的ISP地址文件固定存放在根目录下名称为isp的文件夹内,具体步骤略。
  4. 为ISP1和ISP2分别创建运营商名称isp1_ifgrp和isp2_ifgrp,并关联对应的ISP地址文件。 
    [FW] isp name isp1_ifgrp set filename isp1.csv
    [FW] isp name isp2_ifgrp set filename isp2.csv

     

  5. 为ISP1和ISP2分别新建一个ISP接口组,并将接口加入对应的ISP接口组,缺省下发对应的ISP路由。 
    [FW] interface-group 1 isp isp1_ifgrp
    [FW-interface-isp-group-1] add interface GigabitEthernet 1/0/1
    [FW-interface-isp-group-1] quit
    [FW] interface-group 2 isp isp2_ifgrp
    [FW-interface-isp-group-2] add interface GigabitEthernet 1/0/5
    [FW-interface-isp-group-2] quit

     

  6. 配置DNS透明代理功能。在出接口上绑定DNS服务器地址并启用健康检查,限定源地址为10.3.0.0/24网段的流量做DNS透明代理,并配置要排除的域名。 
    [FW] dns-transparent-policy
    [FW-policy-dns] dns transparent-proxy enable
    [FW-policy-dns] dns server bind interface GigabitEthernet 1/0/1 preferred 8.8.8.8 alternate 8.8.8.9 health-check enable
    [FW-policy-dns] dns server bind interface GigabitEthernet 1/0/5 preferred 9.9.9.8 alternate 9.9.9.9 health-check enable
    [FW-policy-dns] dns transparent-proxy exclude domain www.example.com server preferred 8.8.8.10
    [FW-policy-dns] rule name abc
    [FW-policy-dns-rule-abc] action tpdns
    [FW-policy-dns-rule-abc] source-address 10.3.0.0 24
    [FW-policy-dns-rule-abc] quit
    [FW-policy-dns] quit

     

  7. 配置全局选路策略,流量根据链路带宽负载分担。 
    [FW] multi-interface
    [FW-multi-inter] add interface GigabitEthernet 1/0/1
    [FW-multi-inter] add interface GigabitEthernet 1/0/5
    [FW-multi-inter] mode proportion-of-bandwidth
    [FW-multi-inter] quit

     

  8. 将接口加入安全区域。 
    [FW] firewall zone trust
    [FW-zone-trust] add interface GigabitEthernet 1/0/3
    [FW-zone-trust] quit
    [FW] firewall zone untrust
    [FW-zone-untrust] add interface GigabitEthernet 1/0/1
    [FW-zone-untrust] add interface GigabitEthernet 1/0/5
    [FW-zone-untrust] quit

     

  9. 配置Local到Untrust区域的安全策略,允许FW向目的设备发送相应的健康检查探测报文。 
    配置DNS透明代理和全局选路策略实现上网流量的负载分担

    对于V500R001C80之前的版本,需要在FW上配置对应的安全策略,允许FW向目的设备发送健康检查探测报文。对于V500R001C80及之后的版本,健康检查的探测报文不受安全策略控制,默认放行,无需配置相应安全策略。

    [FW] security-policy
    [FW-policy-security] rule name policy_sec_local_untrust
    [FW-policy-security-rule-policy_sec_local_untrust] source-zone local
    [FW-policy-security-rule-policy_sec_local_untrust] destination-zone untrust
    [FW-policy-security-rule-policy_sec_local_untrust] destination-address 8.8.8.8 32
    [FW-policy-security-rule-policy_sec_local_untrust] destination-address 8.8.8.9 32
    [FW-policy-security-rule-policy_sec_local_untrust] destination-address 9.9.9.8 32
    [FW-policy-security-rule-policy_sec_local_untrust] destination-address 9.9.9.9 32
    [FW-policy-security-rule-policy_sec_local_untrust] service dns
    [FW-policy-security-rule-policy_sec_local_untrust] action permit
    [FW-policy-security-rule-policy_sec_local_untrust] quit

     

  10. 配置Trust到Untrust区域的安全策略,允许企业内网用户访问外网资源。假设内部用户网段为10.3.0.0/24。 
    [FW-policy-security] rule name policy_sec_trust_untrust
    [FW-policy-security-rule-policy_sec_trust_untrust] source-zone trust
    [FW-policy-security-rule-policy_sec_trust_untrust] destination-zone untrust
    [FW-policy-security-rule-policy_sec_trust_untrust] source-address 10.3.0.0 24
    [FW-policy-security-rule-policy_sec_trust_untrust] action permit
    [FW-policy-security-rule-policy_sec_trust_untrust] quit
    [FW-policy-security] quit

     

配置脚本

#
 isp name isp1_ifgrp set filename isp1.csv
 isp name isp2_ifgrp set filename isp2.csv
#
healthcheck enable
healthcheck name isp1_health
 destination 8.8.8.8 interface GigabitEthernet 1/0/1 protocol dns
 destination 8.8.8.9 interface GigabitEthernet 1/0/1 protocol dns
healthcheck name isp2_health
 destination 9.9.9.8 interface GigabitEthernet 1/0/5 protocol dns
 destination 9.9.9.9 interface GigabitEthernet 1/0/5 protocol dns
#
interface GigabitEthernet 1/0/1
 ip address 1.1.1.1 255.255.255.0
 healthcheck isp1_health
 gateway 1.1.1.254
 bandwidth ingress 100000 threshold 90
 bandwidth egress 100000 threshold 90
#
interface GigabitEthernet 1/0/3
 ip address 10.3.0.1 255.255.255.0
#
interface GigabitEthernet 1/0/5
 ip address 2.2.2.2 255.255.255.0
 healthcheck isp2_health
 gateway 2.2.2.254
 bandwidth ingress 50000 threshold 90
 bandwidth egress 50000 threshold 90
#
 firewall zone trust
  set priority 85
  add interface GigabitEthernet 1/0/3
#
firewall zone untrust
 set priority 5
 add interface GigabitEthernet 1/0/1
 add interface GigabitEthernet 1/0/5
#
interface-group 1 isp isp1_ifgrp
 add interface GigabitEthernet 1/0/1
#
interface-group 2 isp isp2_ifgrp
 add interface GigabitEthernet 1/0/5
#
 multi-interface
  mode proportion-of-bandwidth
  add interface GigabitEthernet 1/0/1
  add interface GigabitEthernet 1/0/5
#
security-policy
 rule name policy_sec_local_untrust                                                
  source-zone local                                                                
  destination-zone untrust                                                         
  destination-address 8.8.8.8 mask 255.255.255.255                               
  destination-address 8.8.8.9 mask 255.255.255.255                               
  destination-address 9.9.9.8 mask 255.255.255.255                               
  destination-address 9.9.9.9 mask 255.255.255.255                               
  service dns                                                                      
  action permit      
 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
 rule name abc
  source-address 10.3.0.0 mask 255.255.255.0
  action tpdns
 dns transparent-proxy enable
 dns server bind interface GigabitEthernet 1/0/1 preferred 8.8.8.8 alternate 8.8.8.9 health-check enable
 dns server bind interface GigabitEthernet 1/0/5 preferred 9.9.9.8 alternate 9.9.9.9 health-check enable
 dns transparent-proxy exclude domain www.example.com server preferred 8.8.8.10
 mode based-on-multi-interface
#
return
阅读剩余
THE END