
我正在開發一個應用程序,該應用程式將用於驗證新網域在設定託管時是否配置正確。其中一部分檢查 SPF、DomainKey、DKIM 記錄等的有效性。
目前,我對大多數記錄使用一小時的預設 TTL。有時會發現其中一項記錄有錯誤,因此需要更新。目前,如果我剛剛測試了網域,我必須等待系統解析器的快取記錄過期,然後才能驗證它對於我的應用程式是否正確。 (是的,我可以手動檢查,但我編寫了應用程序,所以我不必這樣做)。
我想在系統上設定一個 DNS 伺服器來充當普通的快取解析器,只不過它會在最多設定時間(例如五分鐘)內使記錄過期,或者根本不緩存。並非所有網域都在我的普通名稱伺服器上託管 DNS,因此該系統必須查詢網域的權威名稱伺服器,而不是使用上游解析器(僅使用其快取記錄)。
這台機器目前沒有運行任何類型的 DNS,因此我可以安裝 BIND 或 djbdns(或其他東西,如果有好的建議的話)。
答案1
感謝大家的意見與建議。他們指導我採取以下解決方案:
- 安裝bind9。
- 進行編輯
/etc/bind/named.conf.options
以使轉發器為空(以便伺服器不使用另一個快取伺服器的快取記錄)。 - 將
max-cache-ttl
和max-ncache-ttl
選項設定為 300 秒。 (參考) - 更改
listen-on-v6 { any; };
為listen-on-v6 { localhost; };
使伺服器不被其他系統使用。 (參考) - 編輯系統
/etc/resolv.conf
以僅包含nameserver 127.0.0.1
伺服器上的應用程式使用新的本機伺服器。
我重新啟動bind9並驗證它是否正常工作:
dev:~# dig serverfault.com
; <<>> DiG 9.5.1-P2 <<>> serverfault.com
;; global options: printcmd
;; Got answer:
;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 63591
;; flags: qr rd ra; QUERY: 1, ANSWER: 1, AUTHORITY: 2, ADDITIONAL: 0
;; QUESTION SECTION:
;serverfault.com. IN A
;; ANSWER SECTION:
serverfault.com. 300 IN A 69.59.196.212
;; AUTHORITY SECTION:
serverfault.com. 300 IN NS ns21.domaincontrol.com.
serverfault.com. 300 IN NS ns22.domaincontrol.com.
;; Query time: 190 msec
;; SERVER: 127.0.0.1#53(127.0.0.1)
;; WHEN: Sat Jul 18 03:06:24 2009
;; MSG SIZE rcvd: 101
儘管 serverfault.com 的記錄發布的 TTL 是 3600,但 TTL 顯示為 300。
答案2
只需呼叫“dig”即可使用 +trace 大量...
Dig 的作用就像 DNS 伺服器一樣,可以完全遞歸,無需兌現,無需事先知道 NS 伺服器,如果有委派問題,您也會發現這一點。
如果它是 Windows 程序,您可以從此處下載 Bindhttps://www.isc.org/download/它包含一個 dig.exe,Linux 通常有一個 BIND 工具或可能包含 dig 的可用命名工具包。
安裝整個 DNS 伺服器只是為了進行查找......太瘋狂了!
$ dig www.google.com +trace +nodnssec -4
; <<>> DiG 9.11.9 <<>> www.google.com +trace +nodnssec -4
;; global options: +cmd
...
...
google.com. 172800 IN NS ns4.google.com.
;; Received 291 bytes from 192.48.79.30#53(j.gtld-servers.net) in 22 ms
www.google.com. 300 IN A 172.217.10.228
;; Received 59 bytes from 216.239.32.10#53(ns1.google.com) in 30 ms
答案3
為什麼不直接使用 dnscache(來自 djbdns 套件)並每 5 分鐘終止它一次?
對於那些沒有使用過 djbdns,特別是 dnscache 的人來說——它是一個遞歸解析器,根本不會在磁碟上保留任何內容。此外,djb 製作了一套自動監視程式的工具,如果程式死機,監視程式將自動(立即)重新啟動它。
每五分鐘殺掉一次,鮑伯就是你叔叔了…
答案4
正如您所說,您可以在 BIND 選項子句中或僅適用於您的開發伺服器的視圖中使用max-cache-ttl
和限制最長 TTL 。max-ncache-ttl
但是,這會影響所有尋找的 TTL,因此會增加生產伺服器上的網路/負載並降低 DNS 彈性。
對於 BIND 9.3 及以上版本,如果您只想清除一個網域的緩存,您可以這樣做
rndc flushname <domain>
這將刷新確切域的所有記錄,而不是子網域。查看 的輸出rndc
。
當然,如果你想加長出於任何原因的 TTL,即另一個問題。