ANSWER 섹션에 CNAME RR이 포함된 NXDOMAIN

ANSWER 섹션에 CNAME RR이 포함된 NXDOMAIN

console.aws.amazon.com로 해결하면 dig다음을 얻습니다.

; <<>> DiG 9.10.6 <<>> console.aws.amazon.com
;; global options: +cmd
;; Got answer:
;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 35338
;; flags: qr rd ra; QUERY: 1, ANSWER: 5, AUTHORITY: 0, ADDITIONAL: 1

;; OPT PSEUDOSECTION:
; EDNS: version: 0, flags:; udp: 4000
;; QUESTION SECTION:
;console.aws.amazon.com.        IN  A

;; ANSWER SECTION:
console.aws.amazon.com. 4   IN  CNAME   lbr-optimized.console-l.amazonaws.com.
lbr-optimized.console-l.amazonaws.com. 4 IN CNAME us-east-1.console.aws.amazon.com.
us-east-1.console.aws.amazon.com. 4 IN  CNAME   gr.console-geo.us-east-1.amazonaws.com.
gr.console-geo.us-east-1.amazonaws.com. 4 IN CNAME console.us-east-1.amazonaws.com.
console.us-east-1.amazonaws.com. 59 IN  A   54.239.30.25

그러나 해결하면 us-east-1.console.aws.amazon.com다음이 표시됩니다 NXDOMAIN.

;; Got answer:
;; ->>HEADER<<- opcode: QUERY, status: NXDOMAIN, id: 33652
;; flags: qr aa; QUERY: 1, ANSWER: 1, AUTHORITY: 1, ADDITIONAL: 0

;; ANSWER SECTION:
us-east-1.console.aws.amazon.com. 60 IN CNAME   gr.console-geo.us-east-1.amazonaws.com.

;; AUTHORITY SECTION:
us-east-1.amazonaws.com. 60 IN  SOA ns-912.amazon.com. root.amazon.com. 1609664924 3600 900 7776000 60

;; Received 147 bytes from 52.9.146.37#53(ns-912.amazon.com) in 270 ms

응답 코드 가 있더라도 NXDOMAIN계속해서 CNAME을 확인하는 것 같습니다. 하지만 RFC(#8020에서 본 적이 있음)에 따르면 as 응답 코드가 있으면 NXDOMAIN체인 끝의 도메인이 존재하지 않는다는 의미이므로 더 이상 진행하지 않을 것이므로 계속 진행한다고 가정합니다. ARR을 받으세요...

NXDOMAIN왜 우리가 체인 중간에 있는지 조금 혼란스러워요 . ANSWER 섹션에 NXDOMAIN이 있는 경우 무시 CNAME하고 CNAME 체인을 계속 해결해도 안전합니까 ?

이런 종류의 질문을 해결하는 RFC가 있습니까?

답변1

( 답변 CNAME) + SOA(권한) + NXDOMAIN(rcode) 유형의 답변은 서버가 정식 이름( CNAME"대상")의 상태를 실제로 알고 있는 경우 유효합니다.
이 경우 의 네임서버는 표준 이름이 존재하지 않는다고 결론을 내리는 영역(이 CNAME이 이어지는 영역) aws.amazon.com도 갖도록 설정된 것으로 보입니다. us-east-1.amazonaws.com문제는 이것이 us-east-1.amazonaws.com전 세계가 사용하는 실제 영역이 아니라는 것입니다. 실제 위임은 us-east-1.amazonaws.com완전히 다른 네임서버로 연결됩니다.

(질문에서) 관련 답변을 보고 SOA권한 섹션(부정적 응답의 일부)과 그것이 "가짜" us-east-1.amazonaws.com영역 에서 어떻게 나타나는지 확인하십시오 ns-912.amazon.com.

$ dig @ns-912.amazon.com us-east-1.console.aws.amazon.com +norec

; <<>> DiG 9.11.25-RedHat-9.11.25-2.fc33 <<>> @ns-912.amazon.com us-east-1.console.aws.amazon.com +norec
; (1 server found)
;; global options: +cmd
;; Got answer:
;; ->>HEADER<<- opcode: QUERY, status: NXDOMAIN, id: 19359
;; flags: qr aa; QUERY: 1, ANSWER: 1, AUTHORITY: 1, ADDITIONAL: 0

;; QUESTION SECTION:
;us-east-1.console.aws.amazon.com. IN   A

;; ANSWER SECTION:
us-east-1.console.aws.amazon.com. 60 IN CNAME   gr.console-geo.us-east-1.amazonaws.com.

;; AUTHORITY SECTION:
us-east-1.amazonaws.com. 60     IN      SOA     ns-912.amazon.com. root.amazon.com. 1609723312 3600 900 7776000 60

;; Query time: 152 msec
;; SERVER: 52.9.146.37#53(52.9.146.37)
;; WHEN: Mon Jan 04 01:21:54 UTC 2021
;; MSG SIZE  rcvd: 147

$

"실제"는 us-east-1.amazonaws.com다른 곳에서 완전히 위임됩니다( 가 아님 ns-912.amazon.com).

us-east-1.amazonaws.com. 86400  IN      NS      ns2.p31.dynect.net.
us-east-1.amazonaws.com. 86400  IN      NS      ns4.p31.dynect.net.
us-east-1.amazonaws.com. 86400  IN      NS      pdns5.ultradns.info.
us-east-1.amazonaws.com. 86400  IN      NS      pdns3.ultradns.org.
us-east-1.amazonaws.com. 86400  IN      NS      ns1.p31.dynect.net.
us-east-1.amazonaws.com. 86400  IN      NS      ns3.p31.dynect.net.
us-east-1.amazonaws.com. 86400  IN      NS      pdns1.ultradns.net.
us-east-1.amazonaws.com. 86400  IN      NS      u2.amazonaws.com.
us-east-1.amazonaws.com. 86400  IN      NS      u6.amazonaws.com.
us-east-1.amazonaws.com. 86400  IN      NS      u3.amazonaws.com.
us-east-1.amazonaws.com. 86400  IN      NS      u5.amazonaws.com.
us-east-1.amazonaws.com. 86400  IN      NS      u1.amazonaws.com.
us-east-1.amazonaws.com. 86400  IN      NS      u4.amazonaws.com.

완전히 다른 SOA를 가지고 있습니다.

us-east-1.amazonaws.com. 900    IN      SOA     dns-external-master.amazon.com. root.amazon.com. 8548 180 60 2592000 5

NXDOMAIN이러한 노골적인 잘못된 구성에도 불구하고 상대적으로 잘 작동하는 것에 관해서는, 리졸버는 일반적으로 응답에서 "bailiwick의" 데이터만 신뢰하는 데 능숙하기 때문에 리졸버는 단순히 이 주장을 간파한다고 믿습니다 .
즉, 해당 네임서버에서 실제로 호스팅되지 않는 영역에 속하는 이름에 대해 주장하는 응답에서 추가 데이터를 신뢰하지 않는 것입니다.

관련 정보