
我有一個在虛擬機器中的主機上運行的 DNS 伺服器,IP 為 192.168.99.169
如果我執行 dns 查詢,我會得到這些回應
挖:
dig @192.168.99.169 hello-john.test
結果:
;; Warning: Message parser reports malformed message packet.
; <<>> DiG 9.10.6 <<>> @192.168.99.169 hello-john.test
; (1 server found)
;; global options: +cmd
;; Got answer:
;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 43698
;; flags: qr rd ra ad; QUERY: 1, ANSWER: 1, AUTHORITY: 0, ADDITIONAL: 1
;; WARNING: Message has 8 extra bytes at end
;; QUESTION SECTION:
;hello-john.test. IN A
;; ANSWER SECTION:
hello-john.test. 300 IN A 192.168.99.169
;; Query time: 17 msec
;; SERVER: 192.168.99.169#53(192.168.99.169)
;; WHEN: Sun Sep 29 09:50:18 CDT 2019
;; MSG SIZE rcvd: 73
ns查找:
nslookup hello-john.test 192.168.99.169
結果:
Server: 192.168.99.169
Address: 192.168.99.169#53
Non-authoritative answer:
Name: hello-john.test
Address: 192.168.99.169
DNS 伺服器一切正常。如果我更新 mac 上的 dns 伺服器,以便唯一的 dns 伺服器是 192.168.99.169,那麼事情也會以同樣的方式工作,但我不必指定 dns 伺服器。例如:
更新 DNS 伺服器
networksetup -setdnsservers Wi-Fi 192.168.99.169
挖:
dig hello-john.test
;; Warning: Message parser reports malformed message packet.
; <<>> DiG 9.10.6 <<>> hello-john.test
;; global options: +cmd
;; Got answer:
;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 6173
;; flags: qr rd ra ad; QUERY: 1, ANSWER: 1, AUTHORITY: 0, ADDITIONAL: 1
;; WARNING: Message has 8 extra bytes at end
;; QUESTION SECTION:
;hello-john.test. IN A
;; ANSWER SECTION:
hello-john.test. 300 IN A 192.168.99.169
;; Query time: 7 msec
;; SERVER: 192.168.99.169#53(192.168.99.169)
;; WHEN: Sun Sep 29 09:57:10 CDT 2019
;; MSG SIZE rcvd: 73
ns查找:
nslookup hello-john.test
結果:
Server: 192.168.99.169
Address: 192.168.99.169#53
Non-authoritative answer:
Name: hello-john.test
Address: 192.168.99.169
完全覆蓋 dns 伺服器對我不起作用,因為需要搜尋多個 IP 位址。
我將 dns 伺服器重設為普通 dns 伺服器。
networksetup -setdnsservers Wi-Fi 8.8.8.8
/etc/resolver/test
我建立一個包含以下內容的文件:
domain test
nameserver 192.168.99.169
search_order 1
timeout 5
我可以使用 scutil 測試解析器是否已正確加載:
scutil --dns
結果:
DNS configuration
resolver #1
nameserver[0] : 8.8.8.8
flags : Request A records
reach : 0x00000002 (Reachable)
resolver #2
domain : local
options : mdns
timeout : 5
flags : Request A records
reach : 0x00000000 (Not Reachable)
order : 300000
resolver #3
domain : 254.169.in-addr.arpa
options : mdns
timeout : 5
flags : Request A records
reach : 0x00000000 (Not Reachable)
order : 300200
resolver #4
domain : 8.e.f.ip6.arpa
options : mdns
timeout : 5
flags : Request A records
reach : 0x00000000 (Not Reachable)
order : 300400
resolver #5
domain : 9.e.f.ip6.arpa
options : mdns
timeout : 5
flags : Request A records
reach : 0x00000000 (Not Reachable)
order : 300600
resolver #6
domain : a.e.f.ip6.arpa
options : mdns
timeout : 5
flags : Request A records
reach : 0x00000000 (Not Reachable)
order : 300800
resolver #7
domain : b.e.f.ip6.arpa
options : mdns
timeout : 5
flags : Request A records
reach : 0x00000000 (Not Reachable)
order : 301000
resolver #8
domain : test
nameserver[0] : 192.168.99.169
timeout : 5
flags : Request A records
reach : 0x00020002 (Reachable,Directly Reachable Address)
order : 1
DNS configuration (for scoped queries)
resolver #1
nameserver[0] : 8.8.8.8
if_index : 5 (en0)
flags : Scoped, Request A records
reach : 0x00000002 (Reachable)
但是,當我執行 dig 或 nslookup 時,它沒有使用解析器。我猜這與解析器配置的使用順序有關。
挖:
dig hello-john.test
結果:
; <<>> DiG 9.10.6 <<>> hello-john.test
;; global options: +cmd
;; Got answer:
;; ->>HEADER<<- opcode: QUERY, status: NXDOMAIN, id: 39721
;; flags: qr rd ra ad; QUERY: 1, ANSWER: 0, AUTHORITY: 1, ADDITIONAL: 1
;; OPT PSEUDOSECTION:
; EDNS: version: 0, flags:; udp: 512
;; QUESTION SECTION:
;hello-john.test. IN A
;; AUTHORITY SECTION:
. 86388 IN SOA a.root-servers.net. nstld.verisign-grs.com. 2019092900 1800 900 604800 86400
;; Query time: 16 msec
;; SERVER: 8.8.8.8#53(8.8.8.8)
;; WHEN: Sun Sep 29 10:06:50 CDT 2019
;; MSG SIZE rcvd: 119
ns查找:
nslookup hello-john.test
結果:
Server: 8.8.8.8
Address: 8.8.8.8#53
** server can't find hello-john.test: NXDOMAIN
如果我關閉 Wi-Fi,我只會看到解析器#1scutil --dns
顯示為
DNS configuration
resolver #1
flags :
reach : 0x00000000 (Not Reachable)
我相信我缺少一些配置,/etc/resolver/test
但我找不到一種方法來確保它被使用。
感謝您的幫忙!
答案1
儘管 nslookup 和 dig 沒有返回正確的回應,但我似乎仍然可以 ping 主機
平:
ping hello-john.test
結果:
PING hello-john.test (192.168.99.169): 56 data bytes
64 bytes from 192.168.99.169: icmp_seq=0 ttl=64 time=0.259 ms
64 bytes from 192.168.99.169: icmp_seq=1 ttl=64 time=0.390 ms
這足以滿足我的目的