DNS 시간 초과는 어떻게 작동합니까?


9

최근에 호스팅 된 DNS 공급자가있는 서버의 IP 주소를 요청하는 원격 서비스가 다음과 같이 응답하는 문제가있었습니다.

DNS problem: SERVFAIL looking up A for mysql.xavamedia.nl

(업데이트 : 여기에 언급 된 원격 서비스는 Let 's Encrypt입니다. 문제 추적기에 대해 버그 를 신고 하여이 경로로 나아갔습니다.)

로컬 네트워크에서 테스트 할 때 호스팅 된 DNS 서버에서 빈 DNS 응답을받는 경우가있었습니다. 이것은 DNS 레코드가 캐시에없는 경우에만 발생하기 때문에 간헐적으로 발생하며 DNS 서버가 실제로 사용 중일 때만 문제가됩니다.

빈 응답 메시지에 대한 Wireshark 설명은 다음과 같습니다.

빈 응답의 Wireshark 스크린 샷

물론 대부분의 DNS 쿼리와 응답은 UDP를 통해 전송되므로 로컬 확인자는 응답을 잠시 기다렸다가 포기합니다. 제가 지금 궁금하게 생각하는 것은 DNS 응답 시간에 대한 지침이 있습니까? 내 DNS 호스팅 업체가 어깨를 으 and하며 로컬 리졸버가 빈 응답을 너무 빨리 보냈다고 말했습니다. 이전에는이 ​​문제가 없었지만 오류 모드가없는 빈 DNS 응답 인 오류 모드에 놀랐습니다.

누군가 이것이 어떻게 작동 해야하는지에 대한 지침과 DNS 호스팅이 잘못하고 있음을 언제 / 어떻게 증명할 수 있는지 알고 있습니까?


1
빈 응답에 대한 자세한 정보를 제공하기 위해 질문을 업데이트 할 수 있습니까? 이는 플래그 세트 및 권한 섹션의 모양에 따라 여러 가지를 의미 할 수 있습니다. 우리는 dig/ nslookup또는 Wireshark 해부 의 출력을 볼 필요가 있습니다 . ( tcpdump충분하지 않습니다)를 사용하는 경우 먼저 nslookup실행하십시오 set debug.
앤드류 B

pcap이 있지만 여기서 어떻게 가장 잘 보여줄 수 있는지 잘 모르겠습니까?
djc

1
Wireshark에서 열고 패킷을 클릭 한 다음 DNS 프로토콜에 대한 정보를 확장하십시오. 하위 카테고리도 확장 한 다음 이미지 삽입 버튼을 사용하여 질문에 스크린 샷을 게시하십시오. 스크린 샷을 DNS 프로토콜로자를 수 있습니다.
앤드류 B

답변:


6

당신이보고있는 빈 응답은로 알려진 합성 상태 NODATA입니다. NODATA그리고 NXDOMAIN모두 이름이 존재하지 않는, 그러나 것을 나타냅니다 NXDOMAIN모든 이름에 적용 아래 아니라 표시된 기록. NODATA해당 이름이 요청되지 않은 유형의 레코드와 연결되어 있거나 요청한 항목 아래에 다른 레코드가 있다고 조언합니다. (즉 example.test.xavamedia.nl.)

귀하의 테이크 아웃 NODATA하고 NXDOMAIN효과적으로 이러한 맥락에서 동일 : 요청 된 이름과 유형의 기록은 존재하지 않았다. 권위있는 네임 서버는 요청 된 도메인에 도달 한, 그리고 그것은 그 이름과 유형의 기록이 존재하지 않았다고 진술 다시 대답했다. 이것은 통신 오류가 아닙니다. 권위있는 서버는 데이터가 없다고 말했다. 대화하려는 서버가 이미이 요청을 처리했으며 지난 4 시간 내에 해당 레코드가없는 것을 부정 캐시했습니다. (14400 초는의 SOA 레코드에 의해 정의 된 네거티브 캐시 간격입니다. xavamedia.nl.)

나도 없다 NXDOMAINNODATA 자신에 의해 이 경우에 발생하지만 해결 라이브러리 아마의 검색 도메인의 권한이있는 DNS 서버에 대한 트리거에게 제한 시간을 설정 할 수있다 DNS 검색 접미사를 추가로 여기에서 이동할 때 시간 초과가 발생합니다.

이 중 어느 것도 검색 SERVFAIL할 때 응답 이없는 이유를 설명하지 않습니다 mysql.xavamedia.nl.. 그것은 재귀 서버가 권위있는 서버로부터 대답을 얻는 데 문제가 있음을 나타냅니다. 신뢰할 수있는 서버가 (으)로 응답 SERVFAIL했거나 재귀 서버가 신뢰할 수있는 서버에 도달 할 수 없거나 재귀 서버가 반환 된 데이터가 유효하지 않다고 판단했습니다. 제공 한 정보로는이 중 어느 것도 입증 할 수 없습니다.


자세한 답변 주셔서 감사합니다! 아직 확실하지 않은 사항이 있습니다. 인증 서버에서 NODATA 응답이 시작된 경우 도메인이 오랫동안 존재했기 때문에 (와일드 카드 A 레코드로 인해) DNS 호스팅에 문제가 있습니다. 그렇다면 다른 질문은 권위있는 서버가 잘못했는지 어떻게 증명할 수 있습니까?
djc

NODATA당신의 패킷 캡처는 증거입니다. 적절한 질문은 "권한있는 서버가 왜 응답하여 그러한 레코드가 존재하지 않는다고 말했습니까?"입니다. . 불행히도 권위있는 서버에 대한 직접 조회로 증명할 수 없다면 (재귀 서버의 운영자를 으 and하고 비난하는 능력을 제거하는), 세 가지 중 하나만이 때때로 오작동을 일으킬 수 있다는 점을 명심해야합니다.
앤드류 B

NODATA이름 존재하지만 요청 된 유형의 레코드가 없음을 의미합니다 . 예를 들어 A기록 을 요청 하지만 MX기록 만 있습니다 . 이름이 DNS 계층의 중간 노드 이름이고 자체 레코드가없는 경우에도 발생할 수 있습니다.
Barmar

@Barmar 예, 여기서 말하는 것은 권위있는 서버가 해당 레코드 이름 + 유형 쌍이 없음을보고하고 있으며 djc는 한동안 와일드 카드 레코드로 인해 혼란을 표현하고 있다는 것입니다.
앤드류 B

내 의견은 첫 번째 요점 "NODATA와 NXDOMAIN 모두 이름이 존재하지 않음을 나타냅니다." NXDOMAIN이름이 존재하지 않음을 NODATA의미하고 이름이 존재하지만 요청 된 레코드 유형이 존재하지 않음을 의미합니다.
Barmar

2

RFC 1123 "6.1.3.3 효율적인 리소스 사용"섹션 http://tools.ietf.org/rfcmarkup?rfc=1123#page-77에 정의 된 지침을 제외하고는 구체적인 지침을 모릅니다.

"5 초 이상"의 시간 초과 값이 지정되었습니다. RFC는 또한 임시 장애를 캐시해야한다고 명시하고 있습니다. 이는 클라이언트가 RFC 섹션 2.2를 위반하는 경우 과도한 DNS 요청을 방지하기위한 것입니다. 이 섹션에서는 클라이언트가 소프트 오류가 발생한 경우 재시도간에 "합리적인"시간을 기다려야한다고 설명합니다.

이 주제에 대한 Stackoverflow 스레드도 있지만 실제 관찰을 제외하고는 더 많은 정보가 포함되어 있지 않습니다. /programming/3036054/ideal-timeout-period-for-dns-lookup

이것이이 주제에 대해 말할 수있는 전부입니다. 다른 사람이 더 추가해야 할 경우 관심이 있습니다.

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