Google DNS 서버가 자체 도메인에 대해 신뢰할 수 있는 답변을 반환하지 않는 이유는 무엇입니까?
Redhat Linux 5.1에서 nslookup
Bind dig
DNS v4.9.7을 사용하고 있습니다.
시험
/etc/resolv.conf:
nameserver 0
search home
/etc/named.boot:
...
options forward-only query-log
forwarders 192.168.1.1 203.12.160.35 203.12.160.36 203.12.160.37
...
"dns.google.com"의 IP 주소를 쿼리합니다(내 DNS 서버 사용).
[root@r51 ~]$ date && nslookup dns.google.com
Sat Jan 13 22:34:31 EST 2024
Server: r51
Address: 0.0.0.0
Non-authoritative answer:
Name: dns.google.com
Addresses: 8.8.4.4, 8.8.8.8
[root@r51 ~]$
[root@r51 ~]$ date && dig dns.google.com
Sat Jan 13 22:36:15 EST 2024
; <<>> DiG 2.2 <<>> dns.google.com
;; res options: init recurs defnam dnsrch
;; got answer:
;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 6
;; flags: qr rd ra; Ques: 1, Ans: 2, Auth: 0, Addit: 0
;; QUESTIONS:
;; dns.google.com, type = A, class = IN
;; ANSWERS:
dns.google.com. 210 A 8.8.8.8
dns.google.com. 210 A 8.8.4.4
;; Total query time: 15 msec
;; FROM: r51 to SERVER: default -- 0.0.0.0
;; WHEN: Sat Jan 13 22:36:15 2024
;; MSG SIZE sent: 32 rcvd: 64
[root@r51 ~]$
"dns.google.com"의 IP 주소를 쿼리합니다("dns.google.com" 사용).
[root@r51 ~]$ date && nslookup dns.google.com 8.8.8.8
Sat Jan 13 22:36:20 EST 2024
Server: dns.google
Address: 8.8.8.8
Non-authoritative answer:
Name: dns.google.com
Addresses: 8.8.4.4, 8.8.8.8
[root@r51 ~]$
[root@r51 ~]$ date && dig @8.8.8.8 dns.google.com
Sat Jan 13 22:36:42 EST 2024
; <<>> DiG 2.2 <<>> @8.8.8.8 dns.google.com
; (1 server found)
;; res options: init recurs defnam dnsrch
;; got answer:
;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 10
;; flags: qr rd ra; Ques: 1, Ans: 2, Auth: 0, Addit: 0
;; QUESTIONS:
;; dns.google.com, type = A, class = IN
;; ANSWERS:
dns.google.com. 900 A 8.8.8.8
dns.google.com. 900 A 8.8.4.4
;; Total query time: 12 msec
;; FROM: r51 to SERVER: 8.8.8.8
;; WHEN: Sat Jan 13 22:36:42 2024
;; MSG SIZE sent: 32 rcvd: 64
[root@r51 ttya3 22:36:42 /]$
결과
예상되는 내용(예: 8.8.8.8에 대한 쿼리):
Auth: 1
실제:
Non-authoritative answer
Auth: 0
답변1
@muru의 의견 덕분에 작동하지 않는 이유는 8.8.8.8 및 8.8.4.4(dns.google.com)가 신뢰할 수 있는 네임서버가 아니기 때문입니다.
도메인의 권한 있는 네임서버는 도메인의 SOA 레코드를 쿼리한 다음 후속 DNS 쿼리에서 원래 네임서버(레코드에 지정됨)를 참조 서버로 사용하여 얻을 수 있습니다.
nslookup -type=soa dns.google.com
dig soa dns.google.com
SOA 쿼리 출력 예:
[root@r51 ~]$ nslookup -type=soa dns.google.com
Server: r51
Address: 0.0.0.0
Authoritative answers can be found from:
google.com
origin = ns1.google.com
mail addr = dns-admin.google.com
serial = 598133582
refresh = 900 (15 mins)
retry = 900 (15 mins)
expire = 1800 (30 mins)
minimum ttl = 60 (1 min)
[root@r51 ~]$
[root@r51 ~]$ dig soa dns.google.com
; <<>> DiG 2.2 <<>> soa dns.google.com
;; res options: init recurs defnam dnsrch
;; got answer:
;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 6
;; flags: qr rd ra; Ques: 1, Ans: 0, Auth: 1, Addit: 0
;; QUESTIONS:
;; dns.google.com, type = SOA, class = IN
;; AUTHORITY RECORDS:
google.com. 60 SOA ns1.google.com. dns-admin.google.com. (
597792727 ; serial
900 ; refresh (15 mins)
900 ; retry (15 mins)
1800 ; expire (30 mins)
60 ) ; minimum (1 min)
;; Total query time: 108 msec
;; FROM: r51 to SERVER: default -- 0.0.0.0
;; WHEN: Sun Dec 31 10:08:09 2023
;; MSG SIZE sent: 32 rcvd: 82
[root@r51 ~]$
위의 SOA 쿼리는 권한 있는 서버가 "ns1.google.com"에서 찾을 수 있음을 보여줍니다.
"dns.google.com"의 IP 주소를 쿼리합니다(권한 있는 이름 서버 사용).
[root@r51 ~]$ nslookup dns.google.com ns1.google.com
Server: ns1.google.com
Address: 216.239.32.10
Name: dns.google.com
Addresses: 8.8.4.4, 8.8.8.8
[root@r51 ~]$
[root@r51 ~]$ dig @ns1.google.com dns.google.com
; <<>> DiG 2.2 <<>> @ns1.google.com dns.google.com
; (1 server found)
;; res options: init recurs defnam dnsrch
;; got answer:
;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 10
;; flags: qr aa rd; Ques: 1, Ans: 2, Auth: 0, Addit: 0
;; QUESTIONS:
;; dns.google.com, type = A, class = IN
;; ANSWERS:
dns.google.com. 900 A 8.8.4.4
dns.google.com. 900 A 8.8.8.8
;; Total query time: 113 msec
;; FROM: r51 to SERVER: ns1.google.com 216.239.32.10
;; WHEN: Sat Jan 13 23:54:03 2024
;; MSG SIZE sent: 32 rcvd: 64
[root@r51 ~]$
위에 표시된 대로 더 이상 응답에 nslookup
표시되지 않습니다 .Non-authoritative answer
dig
출력 의 경우 Auth
값(이 경우 Auth: 0
)은 권한을 나타냅니다.부분정보는 인쇄되지 않습니다(이름 서버가 정보를 제공하지 않을 수 있음). 그러나 권한 플래그/비트는 실제로 설정됩니다(예 aa
: flags: qr aa rd
).