【linux运维】centos6需启用single-request-reopen参数
(2014-06-24 11:37:56)
标签:
a记录dns解析端口dns服务器 |
分类: 互联网运维技术 |
先把结论摆上,在RHLE6/CENTOS6的环境里,需要在/etc/resolv.conf加如下参数
options |
原因说明: RHEL5/CentOS5/Ubuntu
10.04等等linux下,dns的解析请求过程如下。
1 主机从一个随机的源端口,请求 DNS的AAAA 记录,
2 主机接受dns服务器返回AAAA记录,
3 主机从一个另一个随机的源端口,请求 DNS的A 记录,
3 主机dns 服务器返回A记录,
如果是RHEL6/CentOS6,交互过程有所不同,如图:
上面3,4并没有严格的先后顺序,实际的顺序受网络环境,服务器环境的影响。
理论上讲centos6的这种工作机制,效率更高,端口复用度更高,能节省更多的资源。
但是这里也同样存在着一个问题。比如在存在防火墙等机制的网络环境中,同样源目的ip,同样源目的port,同样的第4层协议的连接会被防火墙看成是同一个会话,因此会存在返回包被丢弃现象。
如下图。
1 主机从一个随机的源端口,请求 DNS的A
记录,
2 主机从同一个源端口,请求 DNS的AAAA 记录,
2 主机从同一个源端口,请求 DNS的AAAA 记录,
3
主机先收到dns返回的AAAA记录,
4
防火墙认为本次交互通信已经完成,关闭连接,
5
于是剩下的dns服务器返回的A记录响应包被防火墙丢弃
6
等待5秒超时之后,主机因为收不到A记录的响应,重新通过新的端口发起A记录查询请求,此后的机制等同于centos5)
7
主机收到dns的A记录响应;
8
主机从另一个新的源端口发起AAAA
9 主机收到dns的AAAA记录响应;
我们看到在这个解析的序列里面,dns解析有5秒的延迟发生。所以当用linux系统安装大量远程包的时候宏观上看延迟就非常大了(linux是不缓存dns解析记录的)。
那么到底 options
single-request-reopen 这个参数的作用是什么的,man 5
resolv,conf的结果如下