问题现象
CentOS 实例出现 DNS 解析超时的情况。
原因分析
因 CentOS 6 和 CentOS 7 的 DNS 解析机制变动所致,2017 年 2 月 22 日以前创建的 ECS 实例或使用 2017 年 2 月 22 日前的自定义镜像创建的 CentOS 6 和 CentOS7 实例可能出现 DNS 解析超时的情况。
解决方法
- 下载脚本 fix_dns.sh。
- 将下载的脚本放到 /tmp 目录下。
- 执行命令 bash /tmp/fix_dns.sh 运行脚本。
脚本作用
判断 DNS 解析文件 /etc/resolv.conf 中是否有 options >
single-request-reopen 配置。CentOS 6 和 CentOS 7 的 DNS 解析机制中,发送 IPV4 DNS 和 IPV6 DNS 请求使用了相同的网络五元组,此时应开启 single-request-reopen 配置,一旦出现同一 socket 发送的两次请求处理,解析端发送第一次请求后会关闭 socket,并在发送第二次请求前打开新的 socket。配置成功后不需要重启实例即可生效。
脚本逻辑
- 判断实例系统是否为 CentOS 系统:
- 实例为非 CentOS 系统,如 Ubuntu 和 Debian,脚本停止工作。
- 实例为 CentOS 系统,继续工作。
查询解析文件 /etc/resolv.conf 中 options 配置情况。
- 如果不存在 options 配置,默认使用阿里云 options 配置:options timeout:2 attempts:3 rotate single-request-reopen。
- 如果存在 options 配置:不存在 single-request-reopen,在 options 配置中追加该项。
- 存在 single-request-reopen,则脚本停止工作,不更改 DNS nameserver 的配置。
如问题还未解决,请
提交工单联系阿里云。