Networking
如何使 DIG 尊重 TTL/使用本地作業系統記憶體?
當我執行時,即使在隨後
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),它具有本地優勢,但記憶體不會被其他使用者預先播種/填充.