DNS 도메인의 정점에서 NS 레코드의 역할은 무엇입니까?


21
$ORIGIN example.com. ; not necessary, using this to self-document

$TTL 3600
@        IN     SOA   ns1.example.com. admin.example.com. (
                      1970010100 7200 1800 1209600 300)

@        IN     NS   ns1.example.com.
@        IN     NS   ns2.example.com.

@        IN     A    198.51.100.1
ns1      IN     A    198.51.100.2
ns2      IN     A    198.51.100.3

sub1     IN     NS   ns1.example.edu.

sub2     IN     NS   ns1.sub2
ns1.sub2 IN     A    203.0.113.1 ; inline glue record

도메인의 정점 아래 에서 NS 레코드의 역할 은 잘 알려져 있습니다. 하위 도메인에 대한 권한을 다른 네임 서버에 위임하기 위해 존재합니다. 위의 예에는 sub1및에 대한 NS 레코드가 포함됩니다 sub2. 이것에 의해 네임 서버는 그 자체가 신뢰할 수없는 도메인의 부분에 대한 참조를 건네 줄 수 있습니다.

NS의 목적은 도메인의 정점에 기록, ns1그리고 ns2이 경우, 적은 큰에서 인터넷 이해할 것 같다. 내 이해 (전체적이지 않을 수도 있음)는 다음과 같습니다.

  1. 도메인의 권한있는 서버를 결정하기 위해 DNS 서버를 캐시하는 데 사용되지 않습니다. 이것은 레지스트라 수준에서 정의 되는 네임 서버 글루 (nameserver glue )에 의해 처리됩니다 . 레지스트라 는이 정보를 사용하여 글루 레코드를 생성 하지 않습니다 .
  2. 그들은 되지 않은 다른 네임 서버에 전체 도메인에 대한 권한을 위임하는 데 사용됩니다. ISC BIND와 같은 소프트웨어로 그렇게한다고하더라도 네임 서버는 해당 영역에 대한 권한을 계속 고려하기 때문에 "예상 된"참조 동작이 전혀 발생하지 않습니다.
  3. 네임 서버는 정식 응답 ( AA플래그 세트)을 반환해야하는지 여부를 결정하는 데 사용 되지 않습니다. 해당 동작은 소프트웨어가 해당 영역의 마스터인지 슬레이브인지에 따라 정의됩니다. 대부분의 네임 서버 소프트웨어는 업스트림 글루 레코드에 포함 된 정보에 동의하지 않는 apex NS 레코드를 제공합니다. 이로 인해 잘 알려진 DNS 유효성 검사 웹 사이트가 도메인에 대한 경고를 생성합니다.

이 경우에 우리는 무엇을 남겼습니까? 인터넷에서 DNS 서버를 대규모로 캐싱하여이 정보를 사용하지 않는 경우이 정보를 정의하는 이유는 무엇입니까?

답변:


21

하위 식별

마스터 서버는 Apex 레벨 NS 레코드를 사용하여 하위 서버를 식별합니다. 신뢰할 수있는 네임 서버의 데이터가 변경되면 DNS NOTIFY메시지 ( RFC 1996 )를 통해 해당 목록의 모든 피어에게이를 알립니다. 해당 서버는 SOA일련 번호가 포함 된 레코드 요청으로 다시 전화를 걸어 해당 영역의 최신 사본을 풀다운할지 여부를 결정합니다.

  • 이 메시지를 NS섹션에 나열되지 않은 서버로 보낼 수 있지만 서버 특정 구성 지시문 (예 : ISC BIND의 also-notify지시문) 이 필요합니다 . apex NS 레코드는 기본 구성에서 통지 할 기본 서버 목록을 구성합니다.
  • 보조 서버는 이러한 NS레코드를 기반으로 NOTIFY 메시지를 서로에게 보내 므로 일반적으로 거부 된 로그가 기록됩니다. 이는 서버가 마스터 인 영역에 대한 알림 만 보내도록 (BIND :) , 구성에 명시 적으로 정의 된 알림에 대해 전체 알림 notify master;을 건너 뛰 도록 지시하여 비활성화 할 수 있습니다 NS. (BIND : notify explicit;)

권위있는 정의

위의 질문에는 오류가 있습니다.

도메인의 권한있는 서버를 결정하기 위해 DNS 서버를 캐시하는 데 사용되지 않습니다. 이것은 레지스트라 수준에서 정의 된 네임 서버 접착제에 의해 처리됩니다. 레지스트라는이 정보를 사용하여 글루 레코드를 생성하지 않습니다.

이것은 도달하기 쉬운 결론이지만 정확하지는 않습니다. NS기록 (예 : 사용자의 등록 계정 내에서 정의 된 것과 같은) 접착제 기록 데이터는 신뢰할 수 없습니다. 권한이 위임 된 서버에있는 데이터보다 "권한있는"것으로 간주 될 수없는 이유가 있습니다. 이는 추천에 aa(Authoritative Answer) 플래그가 설정되어 있지 않기 때문에 강조됩니다 .

설명하기 위해 :

$ dig @a.gtld-servers.net +norecurse +nocmd example.com. NS
;; Got answer:
;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 14021
;; flags: qr; QUERY: 1, ANSWER: 0, AUTHORITY: 2, ADDITIONAL: 5

;; OPT PSEUDOSECTION:
; EDNS: version: 0, flags:; udp: 4096
;; QUESTION SECTION:
;example.com.                   IN      NS

;; AUTHORITY SECTION:
example.com.            172800  IN      NS      a.iana-servers.net.
example.com.            172800  IN      NS      b.iana-servers.net.

;; ADDITIONAL SECTION:
a.iana-servers.net.     172800  IN      A       199.43.135.53
a.iana-servers.net.     172800  IN      AAAA    2001:500:8f::53
b.iana-servers.net.     172800  IN      A       199.43.133.53
b.iana-servers.net.     172800  IN      AAAA    2001:500:8d::53

aa위의 응답에 대한 플래그 부족이 있습니다. 추천 자체는 신뢰할 수 없습니다. 반면에 참조되는 서버의 데이터 신뢰할 수 있습니다.

$ dig @a.iana-servers.net +norecurse +nocmd example.com. NS
;; Got answer:
;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 2349
;; flags: qr aa; QUERY: 1, ANSWER: 2, AUTHORITY: 0, ADDITIONAL: 1

;; OPT PSEUDOSECTION:
; EDNS: version: 0, flags:; udp: 4096
;; QUESTION SECTION:
;example.com.                   IN      NS

;; ANSWER SECTION:
example.com.            86400   IN      NS      a.iana-servers.net.
example.com.            86400   IN      NS      b.iana-servers.net.

그러나이 관계는 추천의 부모쪽에 정의 된 NS비 정식 레코드가 없으면 이러한 레코드 의 정식 버전에 대해 배울 수 없으므로 매우 혼란 스러울 수 있습니다 NS. 동의하지 않으면 어떻게됩니까?

  • 짧은 대답은 "일관되지 않은 동작"입니다.
  • 긴 대답은 네임 서버가 처음 스텁 빈 캐시에 추천 (와 접착제)의 오프 다, 그러나 그 것입니다 NS, A그리고 AAAA그들이 새로 고칠 때 기록은 결국 대체 될 수있다. 임시 레코드의 TTL이 만료되거나 누군가 해당 레코드에 대한 답변을 명시 적으로 요청할 때 새로 고침이 발생합니다.
    • AAAAA영역 데이터의 출력에 대한 레코드 (익스플로러 com의 데이터 밖에 용 접착제 정의 네임 서버 com영역과 같은 example.net그것 네임 서버로 간주되지 않아야 함을 잘 이해할 개념은 권위있는 정보 소스처럼) 명확히 끝날, 리프레쉬되고 . (RFC 2181)
    • NS레지스트라 제어판에 입력 한 이름 서버와 같은 서버에 있는 레코드와 다른 레코드와 같이 조회의 상위 및 하위 측 에서 레코드 값이 다를 경우 NS, 경험 한 동작은 최대 하위를 포함하여 일관되지 않습니다. NS레코드가 완전히 무시됩니다. 이는 동작이 표준에 의해 잘 정의되어 있지 않기 때문에 구현은 다른 재귀 서버 구현에 따라 다릅니다. 다시 말해, 도메인에 대한 네임 서버 정의가 추천의 부모와 자식 사이에 일관성이있는 경우에만 인터넷을 통한 일관성있는 동작이 예상 될 수 있습니다 .

추천의 부모쪽에 정의 된 레코드가 해당 레코드의 신뢰할 수있는 버전과 일치하지 않는 경우 인터넷 전체의 재귀 DNS 서버가 대상간에 반송됩니다. 처음에는 추천에 존재하는 데이터가 선호되며, 권한있는 정의로만 대체됩니다. 캐시는 인터넷을 통해 처음부터 지속적으로 재구성되기 때문에이 구성으로 인터넷이 단일 버전의 현실에 정착하는 것은 불가능합니다. 신뢰할 수있는 기록은 가리키는 등의 기준에 따라 불법적 인 일, 수행하는 경우 NS별칭에서 기록을 a로 정의CNAME이로 인해 문제 해결이 더욱 어려워집니다. 도메인은 위반을 거부하는 소프트웨어의 작동 및 중단 사이를 번갈아 표시합니다. (즉, ISC BIND / 명명)

RFC 2181 §5.4.1 은이 데이터의 신뢰성에 대한 순위표를 제공하며 참조 및 글루와 관련된 캐시 데이터를 참조 레코드에 대한 명시 적 요청에 대한 응답으로 반환 할 수 없음을 명시 적으로 지정합니다.

5.4.1. Ranking data

   When considering whether to accept an RRSet in a reply, or retain an
   RRSet already in its cache instead, a server should consider the
   relative likely trustworthiness of the various data.  An
   authoritative answer from a reply should replace cached data that had
   been obtained from additional information in an earlier reply.
   However additional information from a reply will be ignored if the
   cache contains data from an authoritative answer or a zone file.

   The accuracy of data available is assumed from its source.
   Trustworthiness shall be, in order from most to least:

     + Data from a primary zone file, other than glue data,
     + Data from a zone transfer, other than glue,
     + The authoritative data included in the answer section of an
       authoritative reply.
     + Data from the authority section of an authoritative answer,
     + Glue from a primary zone, or glue from a zone transfer,
     + Data from the answer section of a non-authoritative answer, and
       non-authoritative data from the answer section of authoritative
       answers,
     + Additional information from an authoritative answer,
       Data from the authority section of a non-authoritative answer,
       Additional information from non-authoritative answers.

   <snip>

   Unauthenticated RRs received and cached from the least trustworthy of
   those groupings, that is data from the additional data section, and
   data from the authority section of a non-authoritative answer, should
   not be cached in such a way that they would ever be returned as
   answers to a received query.  They may be returned as additional
   information where appropriate.  Ignoring this would allow the
   trustworthiness of relatively untrustworthy data to be increased
   without cause or excuse.

잘 쓰여진 답변! 귀하의 답변의 "길고 짧음"에 동의하지 않습니다. 인터넷에서 DNS를 주로 사용하는 것은 호스트 IP를 얻는 것이므로 "A"요청입니다. DNS 확인자는 항상 추천을 수락하고 교체하여 정식 "A"응답을받습니다. 그리고 그는 항상 "추천 기록"만 캐시합니다. 레코드가 교체되는 유일한 시간은 "example.com IN NS"에 대한 명시 적 요청이 들어올 때입니다. 그런 다음 확인자가 서버를 조회 위치에 묻습니다. 그리고 AR 응답은 캐시 된 참조 응답을 대체합니다 (해당 레코드의 TTL에만 해당).
Wasted_Coder

@BillThor의 답변에 따르면 잘못되었을 수 있습니다. DNS 서버를 새로 고치면 (현재 만료 된) 신뢰할 수있는 NS 응답에서 example.com에 대한 NS 캐시 된 항목이라는 사실에 근거하여 내 추론을 근거로했습니다. DNS 체인이 끊어집니다. 이제는 이전 NS 서버가 계속 응답하는 루프에 갇혀 있기 때문에 위의 최고 DNS 서버 (등록자)의 변경 사항은 고려하지 않습니다. 경우와 마찬가지로 DNS 서버는 이동하지만 이전 DNS 서버를 오프라인으로 업데이트하거나 가져 오지 않습니다. 아니면 오늘이 "문제"가 완전히 사건입니까?
Wasted_Coder

@ 많은 가정이 이루어지기 때문에 첫 번째 의견에 동의하지 않습니다. 동작은 표준에 의해 명시 적으로 제시되지 않기 때문에 실제로 구현에 따라 다릅니다. 이 프리젠 테이션은 6 세 (슬라이드 # 11에서 시작)이지만 여전히 중요합니다. 부모 대 자식 이름 서버 환경 설정은 다양합니다. 그 외에도 RFC 2181 요구 사항 만 사용할 수 있습니다.
Andrew B

리졸버의 NS 캐시 된 항목이 example.com과 같이 TTL = 0에 도달하면 관심의 대상이되는 것 같습니다. 그리고 아직 캐시되지 않은 새 호스트 항목을 찾아야합니다 (예 : new.example.com). 이제 example.com에 NS 서버가 필요합니다. 캐시 된 사본이 만료되었으므로 여전히 "만료 된"NS 서버에 계속해서 응답하는지 확인하는 것은 좋지 않습니다. 다음 조상, 즉 .com의 NS와 방향을 확인해야합니다. 이는 상위 NS 레코드가 대부분의 경우에 우선한다는 것을 의미합니다 (NS 요청이 처리 될 때까지).
Wasted_Coder

@Wasted 슬라이드 # 11에서 시작하여 세 가지 패턴, 즉 아동 중심 비 점착성 ( PPPCCCPPPCCC...), 아동 중심 점착성 ( PPPCCCCCC...) 및 부모 끈적임 ( PPPPPP...)을 확인하십시오. 어린이 중심의 끈적 거리지 않는 것이 가장 일반적이며, 어린이 중심의 끈적 거리는 부모의 끈적 끈적한 것보다 실제로 흔합니다. 리졸버 소프트웨어가 부모가 끈적 거리지 않는 한 , 자식과 부모의 NS 데이터가 일치 하지 않으면 클라이언트는 실제로 두 버전의 현실 사이에서 바운스 되며 이는 결과가 가장 적습니다.
앤드류 B

3

NS 레코드 위임 영역은 도메인 정의의 완전성을 제공합니다. NS 서버 자체는 영역 파일에 의존합니다. 루트 서버에서 재귀 쿼리를 수행하여 자신을 찾으려고 시도하지는 않습니다. 영역 파일의 NS 레코드는 여러 가지 다른 기능을 제공합니다.

캐싱 서버는 캐시에서 이름 서버를 쿼리하여 이름 서버 목록을 새로 고칠 수 있습니다. 캐싱 서버가 이름 서버의 주소를 알고있는 한 적절한 NS 레코드를 재귀 적으로 조회하는 대신이를 사용합니다.

이름 서버를 이동할 때는 새 이름 서버뿐만 아니라 이전 이름 ​​서버도 업데이트해야합니다. 이렇게하면 두 영역 정의가 동기화되지 않을 때 발생하는 중단 또는 불일치가 방지됩니다. NS 레코드를 캐시 한 서버는 업데이트 된 레코드를 새로 고칩니다. 캐시 된 이름 서버 목록이 바뀝니다.

NS 레코드는 또한 DNS 구성의 정확성을 확인하는 데 도움을줍니다. 유효성 검사 소프트웨어는 종종 위임 영역의 이름 서버 정의가 영역에서 제공 한 이름 서버 정의와 일치하는지 확인합니다. 이 점검은 모든 네임 서버에서 수행 될 수 있습니다. 일치하지 않으면 구성이 잘못되었을 수 있습니다.

NS 레코드를 사용하면 연결이 끊어진 (로컬) 영역이 허용됩니다. 등록 된 도메인의 하위 도메인이거나 완전히 새로운 도메인 일 수 있습니다 (TLD 변경으로 인해 권장되지 않음). 네임 서버를 네임 서버로 사용하는 호스트는 루트 서버에서 재귀를 통해 도달 할 수없는 영역을 찾을 수 있습니다. 다른 이름 서버는 로컬 영역의 이름 서버를 찾도록 구성 될 수 있습니다.

분리 된 DNS (내부 / 외부)의 경우 다른 DNS 서버 세트를 갖는 것이 바람직 할 수 있습니다. 이 경우 NS 목록 (및 다른 데이터)이 달라지고 영역 파일의 NS 레코드에 적절한 이름 서버 목록이 표시됩니다.

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.