1. 程式人生 > >DNS服務器的維護與故障排除

DNS服務器的維護與故障排除

效果 錯誤 ner www add 常用命令 info 使用 conf

1. DNS故障診斷的常用工具或命令

診斷DNS解析故障的四個常用命令工具:

①unbound-checkconf:用於檢查unbound服務器配置文件的語法錯誤

②unbound-control:是一個用於控制遠程Unbound服務器的工具。

③nscd(name service cache daemon,名稱服務緩存管理器):一種專門對DNS緩存進行管理的工具(RHEL7中默認未安裝,可使用yum -y install nscd命令安裝)。

④dig(Domain Information Groper,域信息搜索器):一種用於詢問DNS服務器的命令工具,他執行DNS搜索,顯示從接收請求的域名服務器返回的答復。

DNS故障診斷的常用工具或命令

dig命令的格式:

dig [@server] [type] [name] [-x addr] [-p port#]

其中:

server——待查詢DNS服務器的名稱或IP地址,若缺省此項則根據本機/etc/resolv.conf文件中列舉的DNS服務器做出應答。

name——指定要查詢的域名。

type——指定要查詢的記錄類型,如A、ANY、MX、NS、SOA等類型,默認值為A。

-b address——指定通過哪塊網卡(IP地址)進行查詢,適用於多網卡環境下指定網卡。

-x address——表示要對指定的IP地址進行反向查詢。

-p port——指定DNS服務器所使用的端口.用於當服務器使用非標準DNS端口的狀況。

dig命令的輸出信息包括以下內容:

●第一行:顯示當前dig的版本和查詢內容。

●第三行:全局設置選項為直接在窗口顯示結果。

●第四行到第六行:顯示查詢結果的信息。

●QUESTION SECTION(查詢段),顯示查詢的條件和對象。

●ANSWER SECTION(回應段):顯示從服務器上面得到的回答 202.132.10.161。

●最後面是其它報告信息,如查詢花費(微秒)、查詢服務器的IP地址、查詢的時間以及回應數據包的大小。

2. DNS故障點出錯的原因

其主要的故障原因有:

①客戶端指派了不正確的DNS服務器的IP地址;

②防火墻規則阻止了53號端口的DNS流量;

③Unbound服務器配置文件出錯;

④DNS緩存滯後:當計算機訪問某個網站或解析域名時,該解析條目會保存在計算機的DNS緩存中,但有時候會出現DNS服務器中更改了IP地址,而用戶本地的DNS緩存信息沒有改變,這樣就會出現DNS解析故障。

⑤DNS劫持:又稱域名劫持,是指在劫持的網絡範圍內攔截域名解析的請求,分析請求的域名,把審查範圍以外的請求放行,否則返回假的IP地址或者什麽都不做使請求失去響應,其效果就是對特定的網絡不能反應或訪問的是假網址(釣魚網站),從而實現竊取資料或者破壞原有正常服務的目的。

DNS劫持故障的排除方法之一是將當前被劫持的DNS服務器更換為其他公共DNS服務器,常用公共DNS服務器及其IP地址見下表:

名稱

DNS服務器IP地址

名稱

DNS服務器IP地址

DNSPod DNS+

119.29.29.29、182.254.116.116

114 DNS

114.114.114.114、114.114.115.115

阿裏 AliDNS

223.5.5.5、223.6.6.6

Google DNS

8.8.8.8、8.8.4.4

V2EX DNS

199.91.73.222、78.79.131.110

OpenDNS

208.67.222.222、208.67.220.220

CNNIC SDNS

1.2.4.8、210.2.4.8

OpenerDNS

42.120.21.30

DNS派

101.226.4.6、218.30.118.6

百度 BaiduDNS

180.76.76.76

⑥DNS汙染:是一種讓一般用戶由於得到虛假目標主機IP而不能與其通信的方法,是一種DNS緩存投毒攻擊。其工作方式是:由於通常的DNS查詢沒有任何認證機制,而且DNS查詢通常基於的UDP是無連接不可靠的協議,因此DNS的查詢非常容易被篡改,通過對UDP端口53上的DNS查詢進行入侵檢測,一經發現與關鍵詞相匹配的請求則立即偽裝成目標域名的解析服務器給查詢者返回虛假結果。一些被禁止訪問的網站基本是通過DNS汙染來實現的。對於DNS汙染,通常可以使用各種SSH加密代理,在加密代理裏進行遠程DNS解析或者使用VPN上網的方法解決,但這大多需要購買付費的VPN或SSH等,也可以通過修改主機中hosts文件的方法,手動設置域名對應的正確IP地址來排除故障。

3. DNS緩存滯後的故障排除方法

在Linux系統下DNS緩存滯後的故障排除

步驟1:查看初始狀態的Unbound服務器的DNS緩存數據。

[[email protected] ~]# unbound-control dump_cache

START_RRSET_CACHE

END_RRSET_CACHE

START_MSG_CACHE

END_MSG_C

步驟2:在客戶端上,使用dig命令向純緩存DNS服務器請求解析兩條資源記錄。

[[email protected] ~]# dig @dns2.dyzx.edu A www.dyzx.edu

……

www.dyzx.edu. 3600 IN A 192.168.8.3

……

[[email protected] ~]# dig @dns2.dyzx.edu cname ftp.dyzx.edu

……

ftp.dyzx.edu. 3600 IN CNAME www.dyzx.edu.

……

步驟3:在緩存DNS服務器端,顯示查詢後DNS緩存信息。將當前Unbound服務器的DNS緩存數據轉儲到指定的文件中

[[email protected] ~]# unbound-control dump_cache

START_RRSET_CACHE

;rrset 3500 1 0 8 3

ftp.dyzx.edu. 3500 IN CNAME www.dyzx.edu.

;rrset 3363 1 0 8 3

www.dyzx.edu. 3363 IN A 192.168.8.3

END_RRSET_CACHE

START_MSG_CACHE

msg ftp.dyzx.edu. IN CNAME 33152 1 3500 3 1 0 0

ftp.dyzx.edu. IN CNAME 0

msg www.dyzx.edu. IN A 33152 1 3363 3 1 0 0

www.dyzx.edu. IN A 0

END_MSG_CACHE

EOF

步驟4:在服務器端,對DNS緩存進行整理,刪除緩存中陳舊或錯誤的資源記錄→將整理後DNS緩存信息轉儲到指定文本文件,以備後用→重啟DNS服務後系統會自動清除所有DNS緩存信息。

[[email protected] ~]# unbound-control flush www.dyzx.edu //清除緩存中指定的資源記錄

ok

[[email protected] ~]# unbound-control flush_zone dyzx.edu //清除緩存中指定區域的全部資源記錄

ok removed 3 rrsets, 3 messages and 0 key entries

[[email protected] ~]# unbound-control dump_cache > /tmp/dns_cache.txt

[[email protected] ~]# systemctl restart unbound.service

[[email protected] ~]# unbound-control dump_cache

START_RRSET_CACHE

END_RRSET_CACHE

START_MSG_CACHE

END_MSG_CACHE

EOF

步驟5:加載Unbound緩存數據,使保存的DNS緩存數據回填到緩存中→查看回填後的信息。

//從文件讀取數據以填充緩存

[[email protected] ~]# unbound-control load_cache </tmp/dns_cache.txt

[[email protected] ~]# unbound-control dump_cache

提示:

①在Linux下還可以通過安裝nscd服務,並使用“nscd -i hosts”命令或重新啟動nscd服務命令“systemctl restart nscd”來清除DNS緩存。

②在Windows客戶端中DNS緩存滯後的故障,可通過刷新DNS緩存來排除,其刷新過程為:同時按下【Windows徽標+R】組合鍵→在打開的【運行】對話框中輸入“cmd”命令→在打開的命令行窗口中輸入“ipconfig /displaydns”命令查看本機的DNS緩存信息→輸入“ipconfig /flushdns”命令刷新DNS緩存信息。

③Windows下的DNS緩存是由後臺進程控制的,可以在【控制面板】→【服務】中將【DNS Client】禁用,從而取消Windows的DNS緩存功能,此後的查詢請求都將直接查詢DNS服務器而忽略本機的DNS緩存了。

DNS服務器的維護與故障排除