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.