一、 概述
当前,很多应用前端都部属了基于智能DNS技术的全局或入向链路负载均衡设备,引导不同运营商用户从同属的运营商链路访问。假设某用户在内网出口部署了出向链路负载均衡设备,此时,内网终端设定的LDNS地址的不同将直接影响不同运营商链路的带宽占用。具体有如下两种情况:
1) 内网终端指向某一运营商的LDNS。
2) 内网终端指向企业DNS,企业DNS设定转发器,加入几条链路的运营商LDNS地址。
以上两种情况都将导致不同链路的带宽占用出现较大的差别。
二、问题分析
1) 内网终端指向某运营商的LDNS问题:例如指向电信的LDNS,由于部署了全局负载均衡的应用的智能DNS牵引作用,将引导用户访问这些应用的时候,都走电信链路,导致电信链路占用过大,而其他链路空闲。
2) 内网DNS的转发器问题: 内网DNS优先使用转发器设定的第一个LDNS地址,与1)的原因一样,导致第一个LDNS地址所属的运营商链路带宽占用过大。
三、A10 Networks解决方案
A10 Networks针对以上问题提供两种解决方案:DNS四层代理和DNS七层代理。下面的解决方案以电信和联通两条链路为例来描述。
3.1 DNS四层代理方案
3.1.1 DNS四层显示代理
显示代理需要用户终端或内部DNS将所指的转发DNS设成A10设备的VIP地址,实现步骤如下:
A10设备将电信和联通等LDNS映射为一个VIP,根据链路带宽比例设定LDNS的分发比例。
若内部终端原来所指的DNS为某运营商LDNS,则将该DNS地址改为上述的VIP。
若内部终端的DNS指向企业内网DNS,则把内网DNS的转发IP改为A10的VIP。
A10设备收到DNS查询请求,将通过负载均衡算法均衡分发到各个运营商LDNS。
A10设备选择了某运营商的LDNS,会自动选择相应运营商链路并用该运营商的地址做NAT。
由于A10设备根据两条运营商链路的带宽比例来分发DNS请求,解决了之前由于DNS解析地址集中在某个运营商而引起的链路过度占用,使得两条链路的访问比例得到了均衡,进而保证了带宽占比的均衡。
3.1.2 DNS四层透明代理
透明代理无需改变内网终端和内网DNS的配置,只需要DNS的查询请求流经A10设备,A10设备即可截获用户请求,实现强行负载均衡,实现步骤如下:
A10设备建立服务组包含两条链路的LDNS,A10设备设置wildcard VIP对应LDNS服务组。
内部终端/内网DNS向所设定的DNS发出DNS查询请求。
A10设备收到DNS查询请求,将通过负载均衡算法均衡分发到各个运营商LDNS。
A10设备选择了某运营商的LDNS,会自动选择相应运营商链路并用该运营商的地址做NAT。
由于A10设备根据两条运营商链路的带宽比例来分发DNS请求,解决了之前由于DNS解析地址集中在某个运营商而引起的链路过度占用,使得两条链路的访问比例得到了均衡,进而保证了带宽占比的均衡。
3.2 DNS七层代理方案
四层代理只是在连接层面对DNS请求做了负载分发,但现实情况中,用户的网络复杂度可能比较复杂,这个时候,简单的四层负载无法完全满足需求,或者解决方案四层代理方案解决起来并不完美,例如如下两种情况:
1) 客户部署有海外链路,要求能够翻墙访问被国内封禁的域名。国内禁止访问某个国外网站,一般有两种方式:
2) 某个集团型客户的内网自建DNS跟办公网络不在同一区域,各自都有自己的网络出口,内部用户访问集团自己的域名发给内网DNS解析,访问Internet域名发给运营商DNS解析。
针对以上两种情况,采用七层DNS代理的方式可以完美的解决用户需求。
A10的七层DNS代理方式同样支持显示代理和透明代理两种方式,都可以解决上述的两种情况。下面用DNS七层显示代理来描述第一种需求的实现,用DNS七层透明代理来描述第二种需求的实现。
3.2.1 DNS七层显示代理
同四层显示代理一样,七层显示代理需要用户终端或内部DNS将所指的转发DNS设成A10设备的VIP地址,针对第一种需求的实现步骤如下(假设部署的访问国外网站的链路为香港链路):
A10设备建立需要翻墙访问的国外域名列表
A10设备建立国内DNS服务组,包含电信和联通LDNS,同样建立一个国外LDNS服务组,包含香港链路所属运营商的LDNS或第三方DNS(8.8.8.8或114.114.114.114等)
编写aFlex脚本,解析DNS请求数据包,如果请求域名包含在国外域名列表中,从香港链路转发给国外LDNS,否则转发给国内运营商LDNS。
A10设备配置一个DNS VIP关联aFlex脚本。
内部终端的DNS指向A10的VIP。
用户发起的DNS请求到达A10设备,A10设备执行aFlex,实现基于域名的策略转发,此时如果访问列表内的国外域名,将解析回国外域名所对应的真实地址(解决了DNS劫持问题),A10设备会把这些域名对应的IP地址建立一个IP表。
内部用户访问解析到的IP地址,如果地址属于国外IP表,则从香港链路转发(此时不会发生IP封禁情况),如果地址属于电信则从电信链路转发,如果地址属于联通则从联通链路转发…….
上述步骤完美的实现了国外域名翻墙访问的需求,同时也对国内的两条运营商链路实现了负载分担。
3.2.2 DNS七层透明代理
七层透明代理同样无需改变内网终端和内网DNS的配置,只需要DNS的查询请求流经A10设备,A10设备需要对DNS数据包做深层解析和判断,以上面的第二种需求情况为例,处理步骤如下:
A10设备建立客户公司自己拥有的域名/域的列表。
A10设备建立一个服务组包含电信和联通的LDNS并根据带宽设定分发比例,再建立一个服务组包含客户公司的内网DNS地址。
用户终端所指的DNS为用户自己的DNS Server地址。
用户的DNS请求将首先到达A10设备,A10解析DNS请求包,匹配请求域名是否属于客户自己公司的域名,如果是,转发给用户自己的DNS。如果不是则通过负载均衡算法转发给电信或联通的LDNS。
客户端查询任何非客户公司的域名,都由A10设备通过负载均衡方式转发给运营商LDNS做解析。如此处理,有如下收益:
四、总结
由于DNS七层代理可满足用户任何情况的需求,因此DNS七层代理方案为最优的方案,建议设备选型时,充分考虑当前以及未来的需求,将支持DNS七层代理作为应用交付设备选择的基本要求。
快乐分享,快乐生活
商务合作,请加微信yunweibang555