DNS 루트 레코드가 하드 코딩 된 이유는 무엇입니까? 서버를 로컬로 호스팅하므로 이름 확인을 위해

재귀 이름 서버를 로컬로 호스팅하므로 이름 확인을 위해 서비스 공급자 나 다른 공용 DNS 서버가 필요하지 않습니다. 루트 이름 서버 IP 주소가 구성 파일 (바인드 /etc/bind/db.root파일에 있음) 에 하드 코딩되었지만 루트 이름 서버에 대해 여러 개의 연속 nslookup명령을 실행 .하면 TTL 필드가 여전히 줄어 듭니다.

구성 파일에서 TTL을 코딩 할 때 TTL이 감소하는 이유는 무엇입니까?
그리고 왜 하 코딩 될 때 루트 레벨의 TTL이 필요할까요?



답변

일반적으로 아래 스 니펫과 유사한 DNS 루트 서버를 명시 적으로 구성합니다.

zone "." {
  type hint;
  file "/etc/bind/db.root";
};

영역 유형이 공통적 master이지 slave 않고라는 특수 영역 유형 인 것을 알 수 hint있습니다.

이름 서버가 시작되면 루트 힌트 만 사용하여 응답하는 루트 이름 서버를 찾은 다음 현재 루트 이름 서버 목록을 가져옵니다. 이들은 운영 중에 실제로 사용될 루트 서버입니다.

그것들은 캐시되기 때문에 TTL이 필요하며 관찰 한 바와 같이 TTL은 다른 캐시 된 DNS 레코드처럼 감소합니다.

클래스 IN에 힌트 영역이 지정되지 않은 경우 서버는 컴파일 된 기본 루트 서버 힌트 세트를 사용합니다. 출처 : 바인드 관리자 참조 서 .

Brian이 자신의 답변에서 설명했듯이 루트 영역은 변경되며 하나 이상의 이름 서버가 유효하게 유지되는 한 힌트 영역은 기존의 모든 이름 서버가 정적 구성 파일을 업데이트하지 않고도 루트 이름 서버에서 이러한 변경을 허용합니다.


답변

영구적으로 하드 코딩되지는 않습니다. 루트 영역 파일은 시간이 지남에 따라 변경되므로 리졸버에게 전달 된 항목은 영구적으로 지속될 수 없습니다.

예를 들어, 현재는 마지막으로 파일의 시작으로 쇼 2014에서 업데이트 된 여기 :

;       This file holds the information on root name servers needed to
;       initialize cache of Internet domain name servers
;       (e.g. reference this file in the "cache  .  <file>"
;       configuration file of BIND domain name servers).
;
;       This file is made available by InterNIC
;       under anonymous FTP as
;           file                /domain/named.cache
;           on server           FTP.INTERNIC.NET
;       -OR-                    RS.INTERNIC.NET
;
;       last update:    November 05, 2014
;       related version of root zone:   2014110501
;
; formerly NS.INTERNIC.NET
;
.                        3600000      NS    A.ROOT-SERVERS.NET.
A.ROOT-SERVERS.NET.      3600000      A     198.41.0.4
A.ROOT-SERVERS.NET.      3600000      AAAA  2001:503:ba3e::2:30

답변

db.root는 실제 현재 루트 서버를 찾기 위해 DNS 서버 시작 프로세스의 일부로 만 사용됩니다. 그런 다음 TTL에 따라 업데이트됩니다.