Networking

如何使 DIG 尊重 TTL/使用本地作業系統記憶體?

  • August 30, 2016

當我執行時,即使在隨後dig example.com的執行中,響應也會返回。SERVER: 192.168.0.1這意味著 DIG 總是通過網路呼叫來解析 DNS 記錄。

我(相當無知)假設我的作業系統將根據其 TTL 記憶體 DNS 記錄,並且 DIG 將使用該記憶體。

DIG 是否預設忽略 TTL/不使用記憶體?如果是這樣,我怎樣才能讓 DIG 使用記憶體並尊重 TTL?

背景/XY問題:

我想要一種方法來快速解析我正在編寫的 nginx 腳本的 DNS TXT 記錄。該腳本將根據這些 TXT 記錄的內容路由請求,因此我想要使用哪種方法來尊重 TTL 並在適當的情況下使用本地記憶體的記錄。

dig (域資訊探索器)如手冊所述,是一種用於詢問 DNS 名稱伺服器的靈活工具,它​​不查詢或使用您的本地 DNS 記憶體(和/或hosts文件),而是直接查詢您指向的名稱伺服器。預設情況下,這將是來自/etc/resolv.conf.

要從命令行使用系統 DNS 記憶體,getent hosts [ip-address | hostname]或者在腳本/程式碼中使用man 3 gethostbyname系統呼叫的本機版本。

A AAAA誠然,這對您以外的任何其他事情或PTR記錄沒有幫助。


dig輸出中,SERVER 標籤是名稱伺服器 dig使用的 IP 地址,它永遠不會有 TTL…

dig ANY www.google.com

; <<>> DiG 9.8.2rc1-RedHat-9.8.2-0.47.rc1.el6 <<>> www.google.com
;; global options: +cmd
;; Got answer:
;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 27695
;; flags: qr rd ra; QUERY: 1, ANSWER: 1, AUTHORITY: 4, ADDITIONAL: 4

;; QUESTION SECTION:
;www.google.com.                IN      A

;; ANSWER SECTION:
www.google.com.     173     IN      A       216.58.212.132


;; AUTHORITY SECTION:
google.com.         146915  IN      NS      ns2.google.com.
google.com.         146915  IN      NS      ns3.google.com.
google.com.         146915  IN      NS      ns1.google.com.
google.com.         146915  IN      NS      ns4.google.com.

;; ADDITIONAL SECTION:
ns2.google.com.     145115  IN      A       216.239.34.10
ns1.google.com.     145115  IN      A       216.239.32.10
ns3.google.com.     145115  IN      A       216.239.36.10
ns4.google.com.     145115  IN      A       216.239.38.10

;; Query time: 0 msec
;; SERVER: 127.0.0.1#53(127.0.0.1)    <========== My Name SERVER is localhost
;; WHEN: Tue Aug 30 22:51:26 2016
;; MSG SIZE  rcvd: 184

我在本地執行自己的記憶體 DNS 伺服器,而不是使用主要用於 spamassassin 的 ISP 或 Google 的公共解析器(8.8.8.8),它具有本地優勢,但記憶體不會被其他使用者預先播種/填充.

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