DNS SOA 레코드 값을 실시간으로 사용하기 위해 부정적인 시간을 사용하는 원인은 무엇입니까?


8

다음 dns 자습서를 읽고 있으며이 예제가 있습니다.

domain.com.  IN SOA ns1.domain.com. admin.domain.com. (
                                        12083   ; serial number
                                        3h      ; refresh interval
                                        30m     ; retry interval
                                        3w      ; expiry period
                                        1h      ; negative TTL
)

negative TTL값에 대한 설명 은 다음과 같습니다.

1h : 요청 된 이름을이 파일에서 찾을 수없는 경우 이름 서버가 이름 오류를 캐시하는 시간입니다.

서버가 이와 같은 이름 오류를 캐시하도록 트리거 할 수있는 조건은 무엇입니까? 예가 정말 도움이 될 것입니다.

답변:


11

SOA권한있는 서버가 요청한 레코드가 존재하지 않음을 표시하면 부정 캐싱 간격이 작동 합니다. 구체적인 사례는 다음과 같습니다.

  • 의 응답 코드로 응답합니다 NXDOMAIN.
  • NODATA합성 상태로 응답 하지만 SOA레코드가 있는 위치 만 형성 합니다. ( NOERRORrcode, 0 답변, SOA권한 섹션의 1 레코드 + 선택적 NS레코드)

서버 소프트웨어가이 값에 대해 로컬로 구성된 최대 값을 적용하는 것이 일반적이므로, 86400존재하지 않는 TTL이 음수 인 경우에도 원격 재귀 서버에 의해 오랫동안 캐시 될 필요는 없습니다.

자세한 내용은 RFC 2308 섹션을 참조하십시오 . 섹션 2를 입문서로 읽은 다음 5-6을 읽으십시오.


IIUC 인증 서버에서 "not.available.example.com"을 요청하면 마이너스 시간 동안 캐시됩니다.
Ole

옳은. 전체 재귀 서버는 존재하지 않는 것을 안정적으로 캐시하지만 스텁 리졸버 (예 : OS 리졸버 라이브러리)의 동작은 다양합니다. 예를 들어 Windows는 그렇지 않습니다. "이름이 존재하지 않습니다." 의 출력 ipconfig /displaydns에서을 나타냅니다 NXDOMAIN. 해당 출력에서 ​​"X 유형의 레코드 없음"인스턴스도 찾을 수 NODATA있습니다. 추가 구성 없이는 전혀 캐시하지 않기 때문에 대부분의 UNIX 기반 시스템은 그렇지 않습니다 . ( nscd캐싱 사용, 로컬 재귀 서버 및 DNS 조회 등에 127.0.0.1 사용 등)
Andrew B

따라서 목적을 올바르게 상상한다면 전체 재귀 서버에 따라 "not.available.example.com"을 실제로 사용할 수 없다는 것을 다시 확인할 수 있습니까? 즉, IP 주소를 얻지 못하면 / displaydns 끝점과 같은 서버에서 서버를 쿼리 할 수 ​​있으며 결과에 주소가 실제로 존재하지 않는다는 확인 메시지가 포함되어야합니까?
Ole

ipconfig /displaydns로컬 스텁 리졸버 캐시의 내용을 알려주기 위해 존재합니다. 그 이상도 이하도 아닌. 관리자가 해당 정보로 수행하고자하는 작업이 끝났습니다.
Andrew B

@Ole 서버가 이미 확인자에게 존재하지 않는다고 알리면 이름에 대한 반복 쿼리를 방지하는 것이 목적입니다. 다른 캐싱과 마찬가지로.
Barmar
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.