Bind

配置僅在短時間內記憶體的本地 DNS 解析器

  • April 2, 2021

我正在開發一個應用程序,該應用程序將用於驗證新域在設置託管時是否正確配置。這部分檢查 SPF、DomainKey、DKIM 記錄等的有效性。

我目前對大多數這些記錄使用一小時的預設 TTL。有時會在其中一個記錄中發現錯誤,因此需要對其進行更新。目前,如果我剛剛測試了域,我必須等待系統解析器的記憶體記錄過期,然後才能驗證我的應用程序是否正確。(是的,我可以手動檢查,但我編寫了應用程序,所以我不必這樣做)。

我想在系統上設置一個 DNS 伺服器作為一個普通的記憶體解析器,除了它會在最長的設定時間內過期記錄,比如五分鐘,或者根本不記憶體。並非所有域都在我的普通名稱伺服器上託管 DNS,因此該系統必須查詢權威名稱伺服器的域,而不是使用上游解析器(它只會使用它們的記憶體記錄)。

這台機器目前沒有執行任何類型的 DNS,所以我可以安裝 BIND 或 djbdns(如果有好的建議,也可以安裝其他東西。

謝謝大家的意見和建議。他們指導我採用以下解決方案:

  • 安裝bind9。
  • 編輯/etc/bind/named.conf.options使轉發器為空白(因此伺服器不使用另一個記憶體伺服器的記憶體記錄)。
  • max-cache-ttlmax-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。

引用自:https://serverfault.com/questions/41937