一、DNS透明代理
一般来说,企业的客户端上都只能配置一个运营商的DNS服务器地址,DNS服务器通常会将域名解析成自己所在ISP内的Web服务器地址,这将导致内网用户的上网流量都集中在一个ISP的链路上转发,最终可能会造成链路拥塞,影响用户的上网体验。同时,由于其他ISP的链路资源没有被使用,也造成了资源的浪费。
为了解决上述问题,可以使用DNS透明代理功能。防火墙配置DNS透明代理功能后,对于命中DNS透明代理策略的DNS请求报文,防火墙会根据DNS请求报文选择的出接口,修改请求报文的目的地址(DNS服务器地址),即将其修改为其他ISP内的DNS服务器地址,DNS请求被转发到不同的ISP,解析后的Web服务器地址也就属于不同的ISP,所以上网流量将通过不同的ISP链路转发,充分利用了所有链路资源。
二、DNS透明代理策略
管理员通过DNS透明代理策略来定义哪些DNS请求报文是否需要代理。DNS透明代理策略的具体规则如下:
①定义DNS请求报文的源和目的地址,默认为any,并执行配置的动作;
②各个匹配条件之间是“与”的关系,与安全策略类似;
③一个匹配条件中如果可以配置多个值,与安全策略类似;
④防火墙可以有多条DNS透明代理策略,DNS请求报文将按照策略的配置顺序依次进行匹配;
⑤只要匹配到其中一条策略,就按照此策略的动作进行处理,不再继续匹配剩余的其他策略。
注意:防火墙默认提供了一个DNS透明代理策略"default",所有报文不做代理,default位于策略列表的最底部,优先级最低。
三、DNS透明代理处理流程
1、DNS请求报文命中DNS透明代理策略后,对于需要做DNS透明代理的报文,防火墙首先判断待解析的域名是否为排除域名:
(1)若是排除域名,防火墙不会做DNS透明代理;
①对于排除域名,若需要更换DNS服务器来解析该域名,则防火墙会将DNS请求报文的目的地址修改为指定DNS服务器的地址。
(2)不是排除域名,防火墙会为报文做一个DNS透明代理标记,此标记用于后续流程的判断。
2、DNS请求报文根据智能选路或者普通静态/动态路由选路选择出接口。
优先级关系为:DNS透明代理自身配置的智能选路方式> 策略路由> 全局选路策略 > 普通静态/动态路由选路。
当出接口上绑定了DNS服务器,且报文有DNS透明代理标记时,防火墙才会做DNS透明代理。两个条件中有一个不满足时,FW都不会做DNS透明代理
注意:
防火墙在每个出接口上最多绑定2个DNS服务器,一个为首选DNS服务器,一个为备用DNS服务器,它们都属于该出接口直连的ISP网络。只有当首选DNS服务器的状态为DOWN时,才使用备用DNS服务器的地址进行替换。
可配置健康检查,检查主用DNS服务器是否故障,当首选DNS服务器和备用DNS服务器都不可用,则DNS透明代理不生效。
四、DNS透明代理配置
某企业分别从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.10.10.10。
企业提出对应的需求如下:
①192.168.1.0/24网段内网用户的上网流量按照2:1的比例分配到ISP1和ISP2链路,保证各条链路得到充分利用且不会发生拥塞,提升内网用户的上网体验。
②内网用户访问域名www.example.com时,不做DNS透明代理,但是要在指定的DNS服务器(8.8.8.10)上解析该域名对应的Web服务器地址。
③当一条ISP链路过载(阈值为90%)时,可以使用另一条ISP链路进行流量转发。
1、配置思路
①内网用户的上网流量按照2:1的比例分配到ISP1和ISP2链路,智能选路的方式设置为根据链路带宽负载分担的全局选路策略;
②健康检测(可选,模拟器无法实现,忽略);
③配置接口的IP地址、安全区域、网关地址、带宽和过载保护阈值,并在接口上应用健康检查;
④配置基本的安全策略,允许企业内网用户访问外网资源。
⑤配置ISP选路功能。制作isp1.csv和isp2.csv两个ISP地址文件,并上传到防火墙上;
⑥配置DNS透明代理功能。在出接口上绑定DNS服务器地址,配置DNS透明代理策略来指定做DNS透明代理的流量,并配置要排除的域名;
⑦配置全局选路策略。配置智能选路方式为根据链路带宽负载分担,并指定FW和ISP1、ISP2网络直连的出接口作为智能选路成员接口;
2、配置步骤
①配置ISP1和ISP2链路的健康检查功能;
进入对象——健康检查——新建
healthcheck enable
healthcheck name ISP1_health
destination 1.1.1.2 interface GigabitEthernet 1/0/1 protocol tcphealthcheck name ISP2_health
destination 2.2.2.2 interface GigabitEthernet 1/0/2 protocol tcp
②配置接口的IP地址、安全区域、网关地址、带宽和过载保护阈值,并在接口上应用健康检查(存在BUG,忽略)
interface g1/0/1
ip address 1.1.1.1 24
gateway 1.1.1.254
bandwidth ingress 100000 threshold 90
bandwidth egress 100000 threshold 90
healthcheck ISP1_healthinterface g1/0/2
ip address 2.2.2.1 24
gateway 2.2.2.254
bandwidth ingress 50000 threshold 90
bandwidth egress 50000 threshold 90
healthcheck ISP2_health
interface g1/0/0
ip address 192.168.1.254 24firewall zone trust
add interface G1/0/0firewall zone untrust
add interface G1/0/1
add interface G1/0/2
③配置基本的安全策略,允许企业内网用户访问外网资源
security-policy
rule name trust_to_untrust
source-zone trust
destination-zone untrust
source-address 192.168.1.0 mask 255.255.255.0
service any
action permit
④配置ISP选路功能。制作isp1.csv和isp2.csv两个ISP地址文件,并上传到防火墙上
ip name isp1 set filename isp1.cv
ip name isp2 set filename isp2.cvip route-isp isp1 interface g1/0/1 1.1.1.2
ip route-isp isp2 interface g1/0/2 2.2.2.2
⑤配置DNS透明代理功能。在出接口上绑定DNS服务器地址,配置DNS透明代理策略来指定做DNS透明代理的流量,并配置要排除的域名
[USG6000V1]dns-transparent-policy
[USG6000V1-policy-dns]dns-transparent-policy enable
[USG6000V1-policy-dns]display this
2024-03-04 09:00:45.470
#
dns-transparent-policyrule name DNS_policysource-address 192.168.1.0 mask 255.255.255.0action tpdns
#
[USG6000V1-policy-dns]dns server bind interface gigabitethernet 1/0/1 preferred 8.8.8.8 alternate 8.8.8.9 health-check enable
[USG6000V1-policy-dns]dns server bind interface gigabitethernet 1/0/2 preferred 9.9.9.8 alternate 9.9.9.9 health-check enable
[USG6000V1-policy-dns]dns transparent-proxy exclude domain www.example.com serve
r preferred 8.8.8.10
⑥配置全局选路策略。配置智能选路方式为根据链路带宽负载分担,并指定FW和ISP1、ISP2网络直连的出接口作为智能选路成员接口
multi-interface
mode proportion-of-bandwidth
add interface GigabitEthernet 1/0/1
add interface GigabitEthernet 1/0/2
load-balance flow hash source-ip
参考资料:防火墙和VPN技术与实践——李学昭