1. 程式人生 > >清除DNS 快取記錄

清除DNS 快取記錄

    為了提高DNS 解析的記錄,很多作業系統都會提供快取DNS 記錄的功能,但是,這可能會為測試DNS 服務或域名設定帶來麻煩。為了測試出準確的結果,我們需要強制重新整理本地 DNS 快取記錄。這裡提供Windows 與 Linux 客戶端上的操作說明。

一、Windows 客戶端
Windows 2000以上系統,預設自動啟動了DNS Client服務,該服務提供了客戶端的名字解析與快取服務,使用者的DNS查詢結果會在本地得到快取。以下是該服務的描述:

引用 DNS 客戶端服務(dnscache)快取域名系統(DNS)名稱並註冊該計算機的完整計算機名稱。如果該服務被停止,將繼續解析 DNS 名稱。然而,將不快取 DNS 名稱的查詢結果,且不註冊計算機名稱。如果該服務被禁用,則任何明確依賴於它的服務都將無法啟動。


可以通過下面的命令獲得快取中的DNS 結果:

ipconfig /displaydns


而下面的命令可以強制清除這些DNS 快取:

ipconfig /flushdns


如果您覺得DNS Client服務帶來麻煩,可以用在控制面板——服務 中停止,或使用下面的命令停止該服務:

net stop dnscache


重新啟動該服務:

net start dnscache


二、Linux 客戶端
以紅旗Asianux 3.0 為例,同樣提供一個叫nscd 的本地DNS 快取的服務。但與Windows 平臺不同的是,該服務預設是關閉的:

引用 # chkconfig --list|grep nscd
nscd            0:關閉  1:關閉  2:關閉  3:關閉  4:關閉  5:關閉  6:關閉


該服務除了提供DNS 快取外,可提供NIS 加速的作用。下面是nscd 的描述:

引用 Nscd caches name service lookups and can dramatically improve performance with NIS+, and may help with DNS as well.


如果我們要啟用本地DNS 快取,啟動該服務即可:

# service nscd start


同樣的,關閉該服務,可以避免DNS 快取帶來的問題:

# service nscd stop


需要注意的是,該服務沒有提供強制刪除其快取結果的命令。但是,我們可以通過刪除其後臺數據庫記錄資訊,清空這些快取:

# rm /var/db/nscd/hosts
# service nscd restart


三、Linux Bind 服務


有時候,我們的客戶端是處於某臺DNS 快取伺服器後面的。常見的情況是,作為NAT 閘道器的Linux 伺服器,通過bind 服務,提供DNS 快取和轉發功能。這可通過配置/etc/named.conf,加入forward來實現:

引用 options {
        directory "/var/named";
        dump-file "/var/named/data/cache_dump.db";
        statistics-file "/var/named/data/named_stats.txt";
        forward only;
        forwarders {
                    202.96.128.86;
                    202.96.134.133;
        };

};


這時,客戶端對外的DNS 解析結果,除保留在客戶端本地的DNS 快取中,同樣會保留在這臺網關伺服器上。還有一種情況就是,當我們修改named 提供的DNS服務時,也需要重新整理快取。
bind 提供的rndc 命令可以清空快取的功能:

# rndc flush