DNS 영역 파일에 NS 레코드가 필요한 이유에 대한 설명


18

이 질문은 원래 여기에서 제기되었습니다. DNS 영역 파일에 NS 레코드가 필요한 이유는 무엇입니까?

요약하자면 : "등록 기관에 가서 example.com을 구입할 때 등록 기관에 내 네임 서버가 ns1.example.org 및 ns2.example.org임을 알려줄 것입니다."

그러나 누군가 다음을 명확히 할 수 있습니다.

등록 후 .com 레지스트리에는 이제 해결 프로그램이 example.com의 IP 주소를 찾기 위해 ns1.example.org 또는 ns2.example.org를 방문해야한다는 레코드가 있습니다. IP 주소는 ns1.example.org의 영역 파일에있는 A 레코드에 있으며 ns2.example.org에 동일한 사본이 있습니다.

그러나이 파일에는 ns1.example.org 및 ns2.example.org를 이름 서버로 나열하는 2 개의 NS 레코드도 있어야합니다. 그러나 우리는 이미 이러한 서버 중 하나에 있기 때문에 중복 된 정보 인 것으로 보입니다.

원래 질문에 대한 답변은 영역 파일에 나열된 네임 서버가 "권한"이라고 말했습니다. 네임 서버가 일치하지 않으면 권한있는 네임 서버가 우선합니다. 모두 훌륭하고 훌륭하지만, 리졸버는 .com 레지스트리에 나열된 네임 서버를 사용하여 네임 서버에 도착했으며 네임 서버가 일치하지 않으면 리졸버가 잘못된 네임 서버에서 영역 파일을 찾고있을 것입니다. ' 그것을 찾을 수 없습니다.

또는 .com 레지스트리가 영역 파일 ns 레코드에서 이름 서버 정보를 추출하는 경우입니까? (하지만 레지스트리 알리지 않고 ns 레코드 영역 파일을 변경하면 어디를 볼지 알 수 없습니다.)

감사

답변:


23

조금 세분화합시다.

TLD 영역의 NS 레코드 (예 : example.com NS ...에서 com)는 위임 레코드입니다.

TLD 영역의 A 및 AAAA 레코드 (예 : ns1.example.com A ...에서 com)는 글루 레코드입니다.

(인 영역 자체에 NS 레코드 example.com NS ...이어 example.com)이다 권한 레코드.

영역 자체 ( ns1.example.com A ...in example.com) 의 A 및 AAAA 레코드는 단순하고 간단한 주소 레코드입니다.

A (재귀) 해결이 영역의 데이터없이 캐시와 (이름 확인 과정을 부트 스트랩하는 데 사용됩니다)에만 루트 영역 캐시로 시작하면 첫째로 이동합니다 .다음 com.. com서버는 응답합니다 권한 섹션 응답 기본적으로 말한다 "나는 모른다, 그러나 알고 있나요 누군가 이쪽을 봐주세요"를위한 서버와 동일 .대해 할 일을 com. 이 쿼리 응답은 신뢰할 수 없으며 채워진 답변 섹션이 포함되어 있지 않습니다. 또한 소위 추가를 포함 할 수 있습니다섹션은 특정 서버가 아는 호스트 이름 (접착 레코드 또는 재귀 해결의 경우 이전에 캐시 된 데이터)에 대한 주소 맵핑을 제공합니다. 확인자는이 위임 응답을 받고 필요한 경우 NS 레코드의 호스트 이름을 확인한 후 권한이 위임 된 DNS 서버를 쿼리합니다. 심층 위임 계층 구조가있는 경우이 프로세스가 여러 번 반복 될 수 있지만 결국 "authoritative answer"플래그가 설정된 쿼리 응답 이 발생합니다 .

리졸버는 (일반적으로, 희망적으로) 해결 될 호스트 이름을 하나씩 분해하려고 시도하지는 않지만 단순히 "알고있는"가장 좋은 서버로 전체를 전송한다는 점에 유의해야합니다. 인터넷의 평균 권한 부여 이름 서버는 대부분의 유효한 DNS 이름에 대해 권한이 없기 때문에 응답은 다른 DNS 서버를 가리키는 권한이없는 위임 응답이됩니다.

이제 영역에 대해 권한을 부여하기 위해 서버를 위임 또는 권한 레코드에서 이름을 지정할 필요가 없습니다. 예를 들어 개인 마스터 서버의 경우를 고려하십시오. 이 경우 영역의 슬레이브 DNS 서버 관리자 만 알고있는 권한있는 DNS 서버가 있습니다. 일부 메커니즘을 통해 해당 영역에 대한 완전하고 정확한 지식이있는 경우 DNS 서버는 영역에 대한 권한을 갖습니다. 예를 들어, 일반적으로 신뢰할 수있는 DNS 서버는 구성된 마스터 서버에 SOA 레코드에서 만료 시간으로 정의 된 시간 내에 도달 할 수없는 경우 신뢰할 수없는 상태가 될 수 있습니다.

정식 답변 만 적절한 쿼리 응답으로 간주해야합니다. 다른 모든 것은 위임 또는 일종의 오류입니다. 권한이없는 서버에 대한 위임을 "라임"위임이라고하며, 해결 프로그램이 한 단계를 역 추적하고 이름이 지정된 다른 DNS 서버를 시도해야 함을 의미합니다. 위임 할 수있는 신뢰할 수있는 이름 서버가 없으면 이름 확인에 실패합니다 (그렇지 않으면 정상보다 느립니다).

신뢰할 수없는 데이터는 캐시하지 않아야 하므로 이는 모두 중요 합니다 . 비인증 서버에 전체 그림이 없기 때문에 어떻게 될 수 있습니까? 따라서 권위있는 서버는 자체적으로 "누가 권위 있고 누가 무엇을해야 하는가?"라는 질문에 대답 할 수 있어야합니다. 이것이 존 내 NS 레코드가 제공하는 정보입니다.

실제로 단일 영역 내부의 여러 호스트 이름 레이블을 중심으로 (특히 동적 IP 범위가 큰 경우 역방향 DNS 영역에서 상당히 일반적 임) 또는 이름 서버 목록이 서로 다를 때 실제로 큰 차이를 만들 수있는 여러 가지 경우가 있습니다. 상위 영역과 해당 영역 (오류 일 가능성이 있지만 의도적으로 수행 할 수도 있음)


dig그리고 +norec(재귀를 요청하지 않음) 및 @서버 지정자 기능을 사용하여 어떻게 작동하는지 좀 더 자세히 볼 수 있습니다 . 다음은 실제 확인 DNS 서버의 작동 방식을 보여줍니다. unix.stackexchange.com예를 들어 a.root-servers.net다음과 같이 시작 하기위한 A 레코드를 조회하십시오 .

$ dig unix.stackexchange.com. A @a.root-servers.net. +norec

flags섹션 수와 섹션 수를 자세히 살펴보십시오 . qrQuery Response이며 aa정식 답변입니다. com서버 에만 위임됩니다 . 해당 위임을 수동으로 따릅니다 (실제로 재귀 해결자는 제공된 경우 추가 섹션의 IP 주소를 사용하거나 위임 응답에 IP가 제공되지 않은 경우 명명 된 이름 서버 중 하나의 별도 이름 확인을 시작하지만, 우리는 해당 부분을 건너 뛰고 예제의 간결성을 위해 운영 체제의 일반 리졸버로 넘어갑니다.

$ dig unix.stackexchange.com. A @a.gtld-servers.net. +norec

이제 당신은 stackexchange.com(다른 사람들에게) 위임 된 것을 보았지만 ns1.serverfault.com여전히 권위있는 대답을 얻지 못했습니다. 다시 대표단을 따르십시오.

$ dig unix.stackexchange.com. A @ns1.serverfault.com. +norec
...
;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 35713
;; flags: qr aa; QUERY: 1, ANSWER: 1, AUTHORITY: 3, ADDITIONAL: 3

;; QUESTION SECTION:
;unix.stackexchange.com. IN A

;; ANSWER SECTION:
unix.stackexchange.com. 300 IN A 198.252.206.16

빙고! 우리는 aa플래그가 설정되어 있기 때문에 답을 얻었으며, 원하는대로 IP 주소를 포함합니다. 따로, 적어도이 글을 쓰는 시점에 위임 대상 및 등록 된 권한 이름 서버 목록이 다르므로 두 이름이 동일 할 필요는 없습니다. 위에서 예시 한 것은 기본적으로 모든 리졸버가 수행 한 작업입니다. 실제 리졸버도 경로를 따라 응답을 캐시하므로 매번 루트 서버에 충돌하지 않아도됩니다.

위의 예에서 볼 수 있듯이 위임 및 글루 레코드는 영역 자체의 권한 및 주소 레코드와 다른 용도로 사용됩니다.

캐싱 및 해결 네임 서버는 일반적으로 캐시 포이즈 닝으로부터 보호하기 위해 리턴 된 데이터에 대해 일부 정상 성 검사를 수행합니다. 예를 들어,com 부모 영역에서 이미 위임 된 대상 이 아닌 다른 소스에서 권한있는 서버를 명명하는 응답을 캐시하지 않을 수 있습니다 com. 세부 사항은 서버에 따라 다르지만 인터넷상의 임의 이름 서버가 공식적으로 "관할 구역"에 해당되지 않는 것에 대한 위임 레코드를 무시하도록 허용하는 헛간 문을 열지 않으면 서 가능한 한 많이 캐시하는 것이 목적입니다.


이 자세한 답변에 감사드립니다. 따라서 위임 레코드가 리졸버를 ns4.serverfault.com으로 보낸다고 상상해보십시오. 영역 파일의 NS 레코드에는 표시되지 않습니다. 리졸버가 불일치 및 역 추적을 확인합니까? (라임 대표)? 그런 다음 왜 ns4.serverfault.com이 될지 궁금해합니다. 영역 파일에없는 경우 위임 레코드로 표시됩니까?
Lars

@Lars 아니요, ns4.serverfault.com은 여전히 ​​신뢰할 수 있습니다. 권한 부여 (단어 일까?)는 문제의 서버가 영역 자체에서 또는 위임에서 NS 레코드에 이름이 지정되는지 여부와 무관합니다. 위임 대상 서버가 비 정식적인 방식으로 응답하는 경우 (즉, aa플래그가 응답에 설정되지 않은 경우) 이는 절충 적 위임 입니다.
CVn

1

.com 레지스트리는 네임 서버의 위치가 IP 주소 인 "접착제 레코드"입니다. 리졸버는 DNS 서버의 "정체성"을 알 수 없으므로 NS 레코드를 사용하여 숫자가 일치하는지 확인합니다.

DNS 요청-> .com 레지스트리 (ip는 xxxx 임)-> DNS (NS xxxx)가 일치합니다.

이들이 일치하지 않거나 존재하는 경우 도메인에 대한 권한이없는 답변입니다.


고맙지 만 여전히 조금 혼란 스러워요. 확인자는 .com 레지스트리의 글루 레코드에있는 IP 주소를 사용하여 해당 IP 주소에 저장된 영역 파일로 이동합니다. 이제 A 레코드를 검색 할 수 있습니다. 이 네임 서버 IP가 영역 파일의 NS 레코드와 일치하는지 확인해야하는 이유는 무엇입니까?
Lars

그것이 올바른 장소를보고 있음을 알 수 있습니다. 예를 들어 A 레코드가 다른 서버 에 상주하는 하위 도메인이있는 경우 NS 레코드는 리졸버에게 찾을 위치를 알려줍니다. 빵 부스러기와 같은 종류.
Nathan C
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.