Bind
配置僅在短時間內記憶體的本地 DNS 解析器
我正在開發一個應用程序,該應用程序將用於驗證新域在設置託管時是否正確配置。這部分檢查 SPF、DomainKey、DKIM 記錄等的有效性。
我目前對大多數這些記錄使用一小時的預設 TTL。有時會在其中一個記錄中發現錯誤,因此需要對其進行更新。目前,如果我剛剛測試了域,我必須等待系統解析器的記憶體記錄過期,然後才能驗證我的應用程序是否正確。(是的,我可以手動檢查,但我編寫了應用程序,所以我不必這樣做)。
我想在系統上設置一個 DNS 伺服器作為一個普通的記憶體解析器,除了它會在最長的設定時間內過期記錄,比如五分鐘,或者根本不記憶體。並非所有域都在我的普通名稱伺服器上託管 DNS,因此該系統必須查詢權威名稱伺服器的域,而不是使用上游解析器(它只會使用它們的記憶體記錄)。
這台機器目前沒有執行任何類型的 DNS,所以我可以安裝 BIND 或 djbdns(如果有好的建議,也可以安裝其他東西。
謝謝大家的意見和建議。他們指導我採用以下解決方案:
- 安裝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。