背景
公司新部署幾台伺服器,安裝最新的CentOS 6.5作業系統,但當執行ping或dig操作時,等待時間較長,不能忍受,而同網絡下的CentOS 5.6系統卻正常
同時在遠端登入(SSH)時,也出現卡頓的現象,登入不太流暢
原理
DNS解析緩慢的原因是CentOS 6/REHL 6 總是需要等待AAAA(IPv6)的結果,即使IPv6已在網絡設定中禁用
出現SSH登入緩慢的問題,可能是“GSSAPIAuthentication認證與UseDNS反向解析”耗費時間導緻的
3. 解決方案
在resolv.conf中添加single-request-reopen選項
1
2
3
4
<code>cat</code> <code>/etc/resolv</code><code>.conf</code>
<code># Generated by NetworkManager</code>
<code>options single-request-reopen</code>
<code>nameserver 192.168.18.77</code>
這其實是CentOS 6的一個Bug,可查詢到的解釋如下:
<code>The logic behind so long </code><code>time</code> <code>for</code> <code>DNS resolution lies </code><code>in</code> <code>fact that resolver use same socket </code><code>for</code> <code>A(ipv4) and AAAA(IPv6) DNS record resolution. Some hardware mistaking send one reply and left resolver </code><code>in</code> <code>waiting mode. Enabling option single-request-reopen will instruct resolver to use new socket </code><code>if</code> <code>for</code> <code>AAAA </code><code>if</code> <code>require.</code>
<code>原因是:CentOS 6中的DNS解析器對于ipv4和ipv6都使用同一個socket接口,在同時發出ipv4和ipv6解析請求後,隻會收到一個ipv4的解析響應,此時socket将一處于“等待”模式,等待ipv6的解析響應,故導緻解析緩慢;添加single-request-reopen後就可以重新打開一個新的socket接收ipv6的解析響應,而不影響ipv4的解析響應。</code>
防止修改resolv.conf檔案後,重新開機網絡,會導緻檔案被重置的情況,原因是啟用了NetworkManager 服務
5
6
7
8
9
10
11
12
13
14
<code>1.建立一個腳本。</code>
<code>vi</code> <code>/etc/NetworkManager/dispatcher</code><code>.d</code><code>/15-resolv</code>
<code>#!/bin/bash</code>
<code># Description : script to override default resolv.conf file</code>
<code># with customized file.</code>
<code>cp</code> <code>-f </code><code>/etc/resolv</code><code>.conf.custom </code><code>/etc/resolv</code><code>.conf</code>
<code>2.設定檔案權限</code>
<code>chmod</code> <code>u+x </code><code>/etc/NetworkManager/dispatcher</code><code>.d</code><code>/15-resolv</code>
<code>3.建立一個檔案</code>
<code>vi</code> <code>/etc/resolv</code><code>.conf.custom</code>
<code>nameserver xx.xx.xx.xx</code>
<code>4.重新開機服務</code>
<code>service NetworkManager restart</code>
取消GSSAPIAuthentication認證與UseDNS反向解析功能:
<code>vi</code> <code>/etc/ssh/sshd_config</code>
<code>GSSAPIAuthentication no</code>
<code>#通用安全服務應用程式接口(GSSAPI) 是為了讓程式能夠通路安全服務的一個應用程式接口,取消這個認證。</code>
<code>UseDNS no</code>
<code>#DNS反向解析,設定為no</code>
4. 參考資料
DNS解析緩慢問題:
https://wiki.echocat.org/display/ECHOCAT/2012/04/20/CentOS+6+and+slow+DNS
http://linuxmantra.com/2013/07/single-request-reopen-option-in-resolv-conf.html
single-request-reopen的詳細解釋:
http://www.man7.org/linux/man-pages/man5/resolver.5.html
防止resolv.conf檔案被複寫的情況:
http://www.linuxidc.com/Linux/2013-06/85636.htm
本文轉自 xxrenzhe11 51CTO部落格,原文連結:http://blog.51cto.com/xxrenzhe/1340103,如需轉載請自行聯系原作者