添加

options rotate timeout:1 attempts:3 single-request-reopen

添加到/etc/resolv.conf 中

#释义: 循环查询 超时时间 重试次数 只收到一个IPV4应答或者只收到一个IPV6应答,重新开一个socket查询

single-request-reopen参数说明

basic  shang  3年前 (2015-05-29)  3918浏览  0评论

说明:
在RHLE6/CENTOS6的环境里,需要在/etc/resolv.conf添加以下参数options single-request-reopen。具体原因请看下面。

具体:
一. 在RHEL5/CentOS5/Ubuntu 10.04等linux下,dns的解析请求过程如下

1 主机从一个随机的源端口,请求 DNS的AAAA 记录,
2 主机接受dns服务器返回AAAA记录,
3 主机从一个另一个随机的源端口,请求 DNS的A 记录,
4 主机dns 服务器返回A记录,

二. 如果是RHEL6/CentOS6,交互过程有所不同,如图:

1 主机从一个随机的源端口,请求 DNS的A 记录,
2 主机从同一个源端口,请求 DNS的AAAA 记录,
3 主机接受dns服务器返回A记录,
4 主机接受 dns服务器返回AAAA记录,

三. 上面3,4并没有严格的先后顺序,实际的顺序受网络环境,服务器环境的影响
理论上讲centos6的这种工作机制,效率更高,端口复用度更高,能节省更多的资源。
但是这里也同样存在着一个问题。比如在存在防火墙等机制的网络环境中,同样源目的ip,同样源目的port,同样的第4层协议的连接会被防火墙看成是同一个会话,因此会存在返回包被丢弃现象。如下图。

此时的整个dns解析过程如下:
1 主机从一个随机的源端口,请求 DNS的A 记录,
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的结果如下

#man 5 resolv.conf
single-request-reopen (since glibc 2.9)
The resolver uses the same socket for the A and AAAA requests. Some hardware mistakenly only sends
back one reply. When that happens the client sytem will sit and wait for the second reply. Turn-
ing this option on changes this behavior so that if two requests from the same port are not handled
correctly it will close the socket and open a new one before sending the second request.

转载请注明:酷喃|coolnull| » centos 6中single-request-reopen参数说明

最新文章

  1. disable_irq与disable_irq_nosync使用场景
  2. Visual Studio .NET项目转换器(ProjectConverter)修改
  3. 金山快盘有Linux版了
  4. SQLite(快速上手版)笔记
  5. C#占位符与格式化字符串
  6. oc_转_类的数组的实现和操作
  7. eclipse导出附带源码的jar包
  8. Appium Android Bootstrap源码分析之启动运行
  9. 结对编程1----基于java的四则运算生成器
  10. [转载]mysql中实现行号,oracle中的rowid
  11. python云算法
  12. VirtualBox更改默认路径
  13. Struts(十三):通用标签
  14. numpy的基础运算-【老鱼学numpy】
  15. 将nginx、mysql、php添加至环境变量
  16. Generative Adversarial Nets[Theory&MSE]
  17. Spring框架学习09——基于AspectJ的AOP开发
  18. 使用tableau去将存入mysql都地区点击率进行了展示 感觉很好用
  19. walle自动部署增量上线
  20. [ActionScript 3.0] as3处理xml的功能和遍历节点

热门文章

  1. Docker容器基础入门认知-网络篇
  2. [Bzoj 1432] [ZJOI2009]Function(结论推导题)
  3. Codeforces 348C - Subset Sums(根号分治)
  4. 【5】肿瘤DNA甲基化数据分析原理及流程
  5. 集群SGE作业调度系统
  6. GWAS初探
  7. MacBookpro安装VMware Fusion虚拟机,并安装win7 64位系统
  8. 阿里云ECS磁盘性能测试
  9. 用原生CSS编写-怦怦跳的心
  10. SparkStreaming消费Kafka,手动维护Offset到Mysql