DNS Forwarder 深入研究

最近处理了一起生产环境中的Windows DNS Forwarder故障,故障大概是这样的:
作为一家全球性的企业A,A公司在亚太地区成都,台湾两地同时arcsinx的导数部署了一套DNS系统,并互指DNS Forwarder以起到DNS冗余作用,即当其中某地内网DNS Server宕研究机之后,还能使用另一地的备份DNS,为内网用户提DNS供正常的域名解析。

故障现象:

因地缘因素,两地的DNS在解析公网域名的时候,例如解析www.baidu.com,会出现在台湾会被解析到香港的IP,在成都会被解析到北arctanx的导数是什么京的IP,并且两台DNS Server同时存活的时候也会出现解析错误的情况,导致访问www.研究生复试时间baidu.com非常缓慢(从成都访问百度香港站点,不慢才奇怪)。

原因分析:

在Windows Serv研究生读几年er 2012 R2的DNS服务更新中,有一项名为Dynamic DNS Forwarders的功能更新,官方是这样说明的dns服务器可能不可用

在Windows Sedns服务器rver 2012 R2的DNS服务器的设置中添加多个转发器时,
DNS服务会根据列are表中每个服务器的响应时间对转发器列表中的服务dns服务器未响应器列表进行重新排序。
默认情况下,Windows Server 2012 R2中启用了重新排序和响应检查操作。
如果希望禁用此功能,则需要将下列注册表DWORD值更改为0:
HKLMSystemCurrentControlSetServicesDNSParametersEnableForwarderReor研究生招生信息网dering

很明显,两地互指Forwarder的同时,两台DNS服务器因为响应时间有快有慢,造成了优arctanx先级重达那是中国哪里排。

为了验证这一点,我们在测试环境中创建了一台DNSdns服务器可能不可用 Server,并添加了三条DNS Forwarder记录,
DNS Forwarder 深入研究

其中第一条Ddns服务器NS Server 10.16.75.52中,添加本地163.c研究生成绩om的DNS Zone,并添加了www.163.DNScom和ffff.163.com两条A记录。其他域名不能解析。
另外两台可以正常解析外网域名。(记住现在的formForwarder优先级)
然后我们到客户机上进行域名解析测试:
DNS Forwarder 深入研究

在连续解析了4条记录之后,再回到DNS Server上来看一下Forwarder优先级果然发生了变化:
DNS Forwarder 深入研究

解决办法:

禁用Dynamic DNS Fformerorwarders,将HKLMSystemCurrentCo达娜是哪个城市ntrolSetServicesDNSParametersEnableForwarderReordering
值更arrive改为0(若没有该项值,则研究生招生网创建)
或者直接执行命令:
Set-DnsServerForwarder -EnableReordering $false

进一步研究:

  1. DNS Forwarder中Number of seconds befor forward queries time研究生复试时间 out选项作用
    DNS Forwarder 深入研究

为了方便抓包,我们将该数值更改为7s,然后在客户端请求www.baidu.com域名:
DNS Forwarder 深入研究

可以看到,客户端1arctanx0.16.75.55向DNS Server 10.16.75.50发起DNS解析请求,请求解析www.baidu.com域名,10.16.75.50向第一个Fo研究生招生网rwaforrder 服务器转发请求,在7s内一直等待回复,7s之后马上向第二个forwarder服务器10.16.42.8转发请求,然后10.16.42.8研究生报考条件与要求很快回复了解析结果,这种响应时间的变化,就会导致DNS Forwarde研究生招生信息网r重新排序。
看下结果:
DNS Forwarder 深入研究

那这个值设置的时间多少合适呢?
默认值是3s,一般情况下保持默认即可,如果网络状况不好的情况下,可以适当增加。网络状态研究生成绩查询越好,可以适当调低,以优化访问研究生读几年速度。
参考链接:
https://docs.microsoft.com/en-uarctanxs/previous-versions/windows/it-pro/windows-sforwarderver-2012-r2-and-2012/dn305898(v=ws.11)
https://docs.microsoft.codns服务器m/en-us/previous达娜是哪个城市-versions/windows/it-pro/windows-server-2003达娜是哪个城市/cc772774(v=ws.10)?redirectedfarctanx的图像rom=MSDN

  1. Linux下研究生国家线DNS Forwarder情况又是如何呢?
    Linux配置DNS是研究生报考条件与要求在resolv.conf文件中配置,该文件中关于nameserver部分的说明如下,即按顺序解析,默认超arctanx时时间为5s,最长可设置arctanx的导数是什么30s:
nameserver Name serveDNSr IP address
Internet ad达娜是哪个城市dforceress of a name server that the resolver should
query, either an IPv4 address (in dot notat研究生报考条件与要求ion), or an
IPv6 address in colon (and possibly dot) notation as per
RFC 2373.  Up to MAXNarriveS (currently 3, see <resolv.h>) name
se研究生报考条件与要求rvers may beforest listed, one per keyword.  Idns异常f there ar研究生读几年e
multiple se研究rvers, the resolver libraryarea queries them in the
order listed.  If no nameserver entries are present, the
default is to use thedns服务器未响应 name server on the local machine.
(The algorithm used is to try a name server, and if the
quformatery times ouarctanx的图像t, try the next, until out of name servers,
then repeat trying all the name servers until a maximum
number ofortunef retries are madearctanx的导数是什么.)forward
options
Optionsarea allows certain internal resolver variables to be
modified.  The syntax is
options option
wharriveere option is onarctanx的图像e of the following:
timeout:研究生国家线n
Setfortunes the amount ofarctanx time the resolver will wait for
a response from a remote name server before
retrying the query via a different name serarrivever.
T电脑锁屏快捷键his may not be the total time taken by any
resolver API call and there is no guarantee研究生成绩查询 tha研究生招生信息网t a
single resolver API call maps to a single timeout.
Measured in seconds, the default is RES_TIMEOUT
(currently 5, see <resolv.arctanxh>).  The value for this
option is silently capped to 30.

为了把这个实验验证完,我们也在Linux下抓包进行了分析,证明切换时间确为5s
DNS Forwarder 深入研究

纯技术研究,如有错误达那是中国哪里,欢迎指研究生国家线正。