背景html
公司新部署幾臺服務器,安裝最新的CentOS 6.5操做系統,但當執行ping或dig操做時,等待時間較長,不能忍受,而同網絡下的CentOS 5.6系統卻正常linux
同時在遠程登陸(SSH)時,也出現卡頓的現象,登陸不太流暢
安全
原理bash
DNS解析緩慢的緣由是CentOS 6/REHL 6 老是須要等待AAAA(IPv6)的結果,即便IPv6已在網絡設置中禁用服務器
出現SSH登陸緩慢的問題,多是「GSSAPIAuthentication認證與UseDNS反向解析」耗費時間致使的網絡
解決方案
ssh
取消GSSAPIAuthentication認證與UseDNS反向解析功能:socket
1
2
3
4
5
|
vi
/etc/ssh/sshd_config
GSSAPIAuthentication no
#通用安全服務應用程序接口(GSSAPI) 是爲了讓程序可以訪問安全服務的一個應用程序接口,取消這個認證。
UseDNS no
#DNS反向解析,設置爲no
|
在resolv.conf中添加single-request-reopen選項ide
1
2
3
4
|
cat
/etc/resolv
.conf
# Generated by NetworkManager
options single-request-reopen
nameserver 192.168.18.77
|
這實際上是CentOS 6的一個Bug,可查詢到的解釋以下:ui
1
2
|
The logic behind so long
time
for
DNS resolution lies
in
fact that resolver use same socket
for
A(ipv4) and AAAA(IPv6) DNS record resolution. Some hardware mistaking send one reply and left resolver
in
waiting mode. Enabling option single-request-reopen will instruct resolver to use new socket
if
for
AAAA
if
require.
緣由是:CentOS 6中的DNS解析器對於ipv4和ipv6都使用同一個socket接口,在同時發出ipv4和ipv6解析請求後,只會收到一個ipv4的解析響應,此時socket將一處於「等待」模式,等待ipv6的解析響應,故致使解析緩慢;添加single-request-reopen後就能夠從新打開一個新的socket接收ipv6的解析響應,而不影響ipv4的解析響應。
|
防止修改resolv.conf文件後,重啓網絡,會致使文件被重置的狀況,緣由是啓用了NetworkManager 服務
1
2
3
4
5
6
7
8
9
10
11
12
13
14
|
1.建立一個腳本。
vi
/etc/NetworkManager/dispatcher
.d
/15-resolv
#!/bin/bash
# Description : script to override default resolv.conf file
# with customized file.
cp
-f
/etc/resolv
.conf.custom
/etc/resolv
.conf
2.設置文件權限
chmod
u+x
/etc/NetworkManager/dispatcher
.d
/15-resolv
3.建立一個文件
vi
/etc/resolv
.conf.custom
options single-request-reopen
nameserver xx.xx.xx.xx
4.重啓服務
service NetworkManager restart
|
轉載地址:http://xxrenzhe.blog.51cto.com/4036116/1340103
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