조회수: 7

DNS SERVFAIL 오류 원인과 해결

DNS SERVFAIL은 리졸버가 시도했지만 실패했다는 뜻 — 보통 DNSSEC나 죽은 네임서버. 원인을 4단계로 가립니다. 무료 즉시 진단으로 바로 확인.

내 도메인에 이 문제가 있는지 지금 확인

무료, 가입 불필요. 이 가이드가 다루는 항목을 바로 검사하고 조치 방법을 알려드립니다.

Problem

조회가 status: SERVFAIL을 반환하거나, 애플리케이션이 “DNS server failure” / “temporary failure in name resolution”을 보고합니다. 이름이 안 풀리는데, 리졸버는 도메인이 사라졌다고 말하는 게 아닙니다 — 포기했다고 말하는 겁니다.

Symptoms

  • dignslookup 헤더에 status: SERVFAIL이 보입니다.
  • 어떤 네트워크/기기에서는 되고 다른 데서는 안 됩니다.
  • DNSSEC 변경, 네임서버 이전, 키 롤오버 직후에 시작됐습니다.
  • 다른 DNS 서버로 물으면 같은 이름이 멀쩡히 풀립니다.

SERVFAIL이 실제로 뜻하는 것

SERVFAIL은 DNS 응답 코드 2(RFC 1035)입니다. “네 질문에 답하려 했는데, 답하기 전에 뭔가 잘못됐다”는 리졸버의 표현입니다. 그 “뭔가”는 프로토콜에서 일부러 모호합니다 — 리졸버는 변명할 기회 없이 RCODE 2만 던지고 넘어갑니다. SERVFAIL이 그토록 불친절하게 느껴지는 이유가 이겁니다: 이름이 아니라 해석 과정에 관한 오류거든요.

가장 중요한 구분: SERVFAIL은 NXDOMAIN이 아닙니다. NXDOMAIN은 권한 서버의 진짜 답입니다 — 이름이 없습니다, 끝. SERVFAIL은 리졸버가 믿을 수 있는 답을 못 얻었다는 뜻입니다. 그래서 용의자는 “도메인이 등록됐나?”가 아니라 “리졸버가 권한 서버에 닿는가, 그리고 돌아온 게 검증되는가?”입니다. 현대 DNS에서 멀쩡한 답이 거부되는 가장 흔한 이유는 단연 DNSSEC입니다: 검증 리졸버가 레코드를 받고도 신뢰 체인에 대해 서명 검증에 실패하면, 멀쩡한 답을 일부러 SERVFAIL로 바꿉니다.

Top 3 Causes

  1. DNSSEC 검증 실패 - 존에 서명은 됐는데 신뢰 체인이 끊겼습니다: 키 롤오버 후 레지스트라의 DS 레코드 누락/구버전, 제때 재서명을 못 해 만료된 RRSIG, 또는 공개된 DS와 더는 일치하지 않는 DNSKEY. 검증 리졸버는 검증 못 하는 레코드 제공을 거부하고 SERVFAIL을 반환합니다 — 레코드가 정확한데도. 단서: dig +cd(checking disabled)는 답을 주는데 일반 쿼리는 SERVFAIL.
  2. 모든 권한 네임서버가 실패 - 존의 모든 네임서버가 죽었거나, 타임아웃이거나, 쿼리를 거부해서 리졸버가 선택지를 소진하고 포기합니다. lame delegation(상위 존이 실제로 권한이 없는 네임서버로 위임)과 포트 53 DNS를 조용히 버리는 방화벽도 여기 포함됩니다. 하나라도 제대로 답했다면 진짜 응답을 받았을 테니, 여기서 SERVFAIL은 아무도 답하지 못했다는 뜻입니다.
  3. 리졸버 자체가 망가졌거나 과부하 - 설정이 틀린 포워더, 죽은 상위 리졸버, 또는 오염/실패한 항목을 든 캐시가, 도메인 DNS가 멀쩡해도 SERVFAIL을 만들어냅니다. 단서는 원인 #1의 거울상입니다: 1.1.1.1이나 8.8.8.8에서는 잘 풀리는데 내 리졸버로는 SERVFAIL.

Diagnose with DechoNet

  • DNS Check로 네트워크 밖에서 이름을 조회하세요. 내 PC는 SERVFAIL인데 거기선 깨끗한 레코드가 나오면 도메인 DNS는 멀쩡하고 내 리졸버가 문제입니다. 거기서도 실패하면 결함은 존 안에 있습니다 — DNSSEC 아니면 네임서버.
  • Propagation Check로 여러 독립 리졸버에 동시에 물으세요. 일부는 답하고 일부는 SERVFAIL이면 불일치를 찾은 겁니다: 세트 안의 망가진 네임서버, 또는 검증 리졸버만 거부하는 DNSSEC 실패.

Resolution Checklist

  • RCODE 확인: dig example.com으로 status: 줄을 읽으세요. 이 가이드가 고치는 건 NXDOMAIN이 아니라 SERVFAIL입니다.
  • DNSSEC 격리: dig +cd example.com. checking disabled에서는 답이 오는데 없으면 SERVFAIL이면, 문제는 레코드가 아니라 검증입니다.
  • DNSSEC라면 상위 DS와 라이브 키를 비교: dig DS example.com(상위)와 dig DNSKEY example.com(권한 서버). 키 변경 후 DS 불일치/누락이 보통 범인입니다.
  • RRSIG 만료 확인: dig RRSIG example.com으로 서명 만료 필드를 보세요. 제때 재서명 안 된 존은 모두에게 검증 실패입니다.
  • 각 권한 네임서버에 직접 질의: dig @ns1.example.com example.com. 타임아웃/거부하는 서버가 망가진 위임입니다.
  • 내 리졸버 배제: 1.1.1.18.8.8.8로 재시도. 거기서 되면 로컬/상위 리졸버를 고치거나 교체하고 캐시를 비우세요.

When to Escalate

  • dig +cd는 되는데 일반 쿼리가 SERVFAIL이면, 도메인 운영자만 고칠 수 있는 DNSSEC 문제입니다 — 레지스트라의 DS 레코드를 바로잡거나 존을 재서명하세요. 클라이언트 쪽 변경으로는 안 됩니다.
  • 모든 권한 네임서버가 답하지 못하면, DNS 운영자에게 에스컬레이션하세요: 위임이 lame이거나 서버가 죽었고, 전 세계 리졸버가 당신과 같은 SERVFAIL을 받고 있습니다.

관련 도구

관련 가이드

가이드 공유

[Ad] Guide Detail Inline
← 전체 가이드 보기