티스토리 뷰

웹사이트에 접속할 때 사용자는 서버의 IP 주소를 직접 입력하지 않는다. 일반적으로 example.com과 같은 도메인 이름을 입력한다. 이 도메인 이름을 실제 통신에 필요한 IP 주소와 연결해 주는 체계가 DNS(Domain Name System)다.

DNS는 흔히 ‘인터넷의 주소록’으로 설명되지만 기업 환경에서는 단순한 주소 변환 기능보다 훨씬 중요하다. 웹사이트와 API, 메일, SaaS 연동, 클라우드 서비스, 사내 시스템 등 다양한 서비스가 DNS를 이용해 목적지를 찾기 때문이다.

서버와 네트워크가 모두 정상이어도 DNS 조회가 실패하면 사용자는 서비스에 접근하지 못할 수 있다. 따라서 DNS는 기업 서비스의 가용성을 결정하는 핵심 인프라 중 하나로 봐야 한다.

목차

  1. DNS가 필요한 이유
  2. DNS 조회가 처리되는 과정
  3. 주요 DNS 레코드의 역할
  4. DNS 장애가 기업 서비스 장애로 이어지는 방식
  5. TTL과 DNS 장애 복구의 관계
  6. DNS 장애를 점검하는 방법
  7. 실무자 관점에서 보는 DNS 운영
  8. 결론

1. DNS가 필요한 이유

네트워크에서 실제 통신은 IP 주소를 기반으로 이루어진다. 하지만 사용자가 수많은 서비스의 IP 주소를 직접 기억하고 사용하는 것은 현실적이지 않다.

DNS는 사람이 사용하기 쉬운 도메인 이름과 시스템이 통신할 때 사용하는 IP 주소 등의 정보를 연결한다.

예를 들어 사용자가 www.example.com에 접속한다고 가정해 보자. 브라우저는 이 문자열만으로 웹 서버에 바로 연결할 수 없다. 먼저 DNS를 통해 해당 이름과 연결된 IP 주소를 확인하고, 그 결과를 이용해 웹 서버나 로드밸런서 등의 목적지에 접속한다.

여기서 중요한 점은 DNS가 일반적으로 웹 트래픽 자체를 전달하는 장비는 아니라는 것이다. DNS는 클라이언트가 접속할 목적지를 찾도록 정보를 제공하며, 실제 HTTP·HTTPS 통신은 DNS 조회 이후 해당 목적지와 이루어진다.

2. DNS 조회가 처리되는 과정

DNS는 하나의 중앙 서버가 전 세계 모든 도메인 정보를 보유하는 구조가 아니다. RFC 1034에서 정의된 기본 개념처럼 계층적이고 분산된 구조로 운영된다.

1단계. 클라이언트와 로컬 캐시 확인

사용자가 브라우저에 도메인을 입력하면 운영체제나 브라우저 등에 이전 DNS 조회 결과가 남아 있는지 먼저 확인할 수 있다. 유효한 캐시가 존재한다면 외부 DNS 서버에 다시 질의하지 않고 기존 결과를 사용할 수 있다.

2단계. Recursive Resolver에 질의

캐시에서 필요한 정보를 찾지 못하면 클라이언트는 일반적으로 ISP, 기업 또는 클라우드 사업자 등이 제공하는 Recursive Resolver에 DNS 질의를 전달한다. Resolver 역시 자신의 캐시를 먼저 확인하며, 필요한 정보가 없다면 DNS 계층을 따라 필요한 정보를 찾는다.

3단계. Root DNS 확인

Resolver는 Root DNS 서버에 질의할 수 있다. Root 서버가 개별 웹 서버의 IP 주소를 모두 알려주는 것은 아니다. 대신 .com, .org, .net, .kr 등 해당 최상위 도메인(TLD)을 담당하는 DNS 서버를 찾을 수 있도록 정보를 제공한다.

4단계. TLD DNS 확인

Resolver는 안내받은 TLD DNS 서버에 다시 질의한다. 예를 들어 www.example.com을 찾는 경우 .com을 담당하는 TLD 서버가 example.com 영역을 담당하는 권한 있는 DNS 서버(Authoritative DNS Server)를 찾을 수 있도록 정보를 제공한다.

5단계. Authoritative DNS에서 최종 정보 조회

Resolver가 Authoritative DNS Server에 질의하면 해당 도메인에 설정된 A, AAAA, CNAME 등의 레코드에 따라 필요한 응답을 받을 수 있다. Resolver는 이 결과를 클라이언트에 전달하고 일정 시간 동안 캐시에 저장한다.

Client → Recursive Resolver → Root → TLD → Authoritative DNS → 서비스 주소

다만 매번 이 전체 과정이 반복되는 것은 아니다. Resolver에 유효한 캐시가 있다면 중간 조회 과정을 생략할 수 있다.

3. 주요 DNS 레코드의 역할

DNS에는 목적에 따라 여러 종류의 레코드가 존재한다.

레코드 주요 역할
A 도메인을 IPv4 주소와 연결
AAAA 도메인을 IPv6 주소와 연결
CNAME 특정 이름을 다른 도메인 이름과 연결
MX 이메일을 처리할 메일 서버 지정
NS 해당 DNS 영역을 담당하는 Name Server 지정
TXT 도메인과 관련된 문자열 정보 저장

기업 서비스에서는 하나의 웹사이트만 운영하더라도 여러 DNS 레코드가 사용될 수 있다. 예를 들어 서비스 도메인이 CDN이나 로드밸런서를 가리키고, 별도의 API 도메인과 메일 도메인이 존재한다면 각각의 DNS 설정이 서비스 경로에 영향을 준다.

따라서 DNS 설정 변경은 단순한 도메인 관리 작업이 아니라 서비스 트래픽 경로를 변경하는 작업으로 이해하는 것이 적절하다.

4. DNS 장애가 기업 서비스 장애로 이어지는 방식

DNS 장애가 발생했다고 해서 반드시 서버가 중단된 것은 아니다. 반대로 웹 서버가 정상적으로 동작하고 있어도 DNS에 문제가 생기면 사용자는 해당 서버를 찾지 못할 수 있다.

Authoritative DNS 장애

서비스 도메인을 담당하는 Authoritative DNS가 정상적으로 응답하지 못하면 Resolver가 필요한 레코드를 조회하지 못할 수 있다. Resolver에 기존 캐시가 남아 있는 동안에는 일부 사용자가 정상적으로 서비스에 접속할 수도 있지만, 캐시가 만료된 이후 신규 조회가 실패하면서 영향 범위가 확대될 수 있다.

DNS 레코드 설정 오류

실무에서는 DNS 서버 자체 장애보다 설정 변경 과정의 실수가 문제가 되는 경우도 중요하다. 예를 들어 서비스 이전 과정에서 A 레코드를 잘못된 IP로 변경하면 DNS 자체는 정상적으로 응답하더라도 사용자는 잘못된 서버로 연결된다. CNAME 대상 오류나 필요한 레코드 삭제 역시 서비스 장애로 연결될 수 있다.

즉 DNS가 응답한다는 것과 DNS 설정이 올바르다는 것은 다른 문제다.

NS와 위임 설정 문제

DNS는 계층적 구조이므로 상위 영역에서 하위 도메인의 Authoritative DNS를 올바르게 찾아갈 수 있어야 한다. 도메인 등록기관에 설정된 NS 정보와 실제 운영 중인 DNS 환경이 일치하지 않거나 DNS 사업자 변경 과정에서 위임 설정이 잘못되면 일부 또는 전체 사용자의 이름 해석이 실패할 수 있다.

사내 DNS Resolver 장애

기업 내부 시스템에서는 외부 DNS뿐 아니라 내부 DNS가 매우 중요하다. Active Directory 환경, 사내 업무 시스템, 내부 API, 온프레미스와 클라우드가 결합된 하이브리드 환경에서는 내부 Resolver와 DNS Forwarding 구성이 서비스 의존성의 일부가 된다.

이 경우 인터넷 연결과 서버가 정상이어도 내부 DNS Resolver에 장애가 발생하면 PC 로그인 이후의 각종 업무 시스템이나 내부 서비스 연결에 문제가 발생할 수 있다.

DNS는 정상이고 애플리케이션이 장애인 경우

반대 상황도 구분해야 한다. DNS에서 정상적인 IP 주소가 반환되더라도 해당 IP의 웹 서버, 로드밸런서, 방화벽 또는 애플리케이션에 문제가 있다면 서비스는 정상적으로 제공되지 않는다.

따라서 장애 분석에서는 다음 두 질문을 분리해야 한다.

  • 도메인 이름이 올바른 목적지로 해석되는가?
  • DNS 조회 이후 실제 서비스가 정상적으로 응답하는가?

이 두 단계를 구분하지 않으면 DNS 장애와 애플리케이션 장애를 혼동하기 쉽다.

5. TTL과 DNS 장애 복구의 관계

DNS 운영에서 자주 등장하는 개념이 TTL(Time To Live)이다. TTL은 Resolver 등이 DNS 조회 결과를 얼마 동안 캐시할 수 있는지를 결정하는 값이다.

예를 들어 DNS 레코드를 새로운 서버 주소로 변경하더라도 Resolver에 기존 레코드의 TTL이 남아 있다면 일정 시간 동안 이전 주소가 계속 사용될 수 있다. 이 때문에 DNS 변경 작업에서 TTL은 중요한 운영 변수다.

TTL이 길면

Resolver의 재조회 횟수를 줄일 수 있고 기존 결과를 비교적 오래 사용할 수 있다. 하지만 서버 이전이나 장애 대응으로 DNS 레코드를 변경했을 때 이전 정보가 상대적으로 오래 유지될 수 있다.

TTL이 짧으면

Resolver가 Authoritative DNS에 더 자주 새로운 정보를 요청할 수 있어 변경 사항을 상대적으로 빠르게 반영하는 데 유리하다. 그러나 TTL을 짧게 설정했다고 해서 모든 사용자가 같은 순간 새로운 주소로 전환된다는 의미는 아니다. Resolver 캐시뿐 아니라 클라이언트, 애플리케이션의 동작과 기존 네트워크 연결 등도 서비스 전환 과정에 영향을 줄 수 있다.

따라서 중요한 서비스의 DNS 변경 작업에서는 장애가 발생한 뒤 TTL을 조정하는 것보다 변경 전에 TTL 정책과 전환 절차를 준비하는 것이 더 중요하다.

6. DNS 장애를 점검하는 방법

서비스 접속 장애가 발생하면 처음부터 웹 서버만 확인하기보다는 이름 해석 단계부터 순서대로 점검하는 것이 효율적이다.

1. DNS 조회 자체를 확인한다

nslookup이나 dig와 같은 도구를 이용해 도메인이 정상적으로 해석되는지 확인한다.

  • 응답 자체가 존재하는가
  • 예상한 IP 또는 CNAME이 반환되는가
  • A와 AAAA 레코드가 의도한 값인가
  • 응답 TTL이 어느 정도 남아 있는가

2. 서로 다른 Resolver에서 비교한다

특정 사내 DNS Resolver에서만 문제가 발생하는지, 외부 Public DNS에서도 동일한 문제가 발생하는지 비교하면 장애 범위를 좁힐 수 있다. 사내에서는 실패하지만 외부에서는 정상이라면 내부 DNS 또는 Forwarding 경로를 우선 점검할 수 있다.

3. Authoritative DNS를 확인한다

Resolver의 캐시 결과만 확인하면 과거 정보가 정상적으로 보일 수 있다. 필요한 경우 도메인을 담당하는 Authoritative DNS에 직접 질의해 현재 등록된 레코드를 확인해야 한다.

4. DNS 이후 서비스 연결을 확인한다

정상적인 IP가 반환된다면 다음 단계로 해당 목적지의 TCP 연결, TLS, HTTP 응답, 로드밸런서와 애플리케이션 상태 등을 확인한다. 이렇게 DNS와 애플리케이션 계층을 분리해 점검하면 장애 원인을 더 빠르게 좁힐 수 있다.

7. 실무자 관점에서 보는 DNS 운영

기업에서는 DNS를 홈페이지 도메인을 등록할 때 한 번 설정하고 끝나는 항목으로 취급하기 쉽다. 하지만 실제 운영 환경에서는 DNS가 웹 서비스뿐 아니라 API, 이메일, 인증 시스템, 클라우드 서비스와 내부 시스템 사이의 통신에도 사용된다. DNS 변경 한 건이 여러 서비스에 동시에 영향을 줄 가능성이 있다.

첫째, DNS 레코드 변경 역시 일반 시스템 변경처럼 이력과 검토 절차를 관리하는 것이 좋다. 특히 기존 값과 변경 값, TTL, 롤백 방법을 함께 확인해야 한다.

둘째, 중요한 변경 전에는 TTL을 검토해야 한다. 서버 이전 당일 처음 TTL을 확인하면 기존 캐시 때문에 원하는 시점에 트래픽을 전환하기 어려울 수 있다.

셋째, DNS 모니터링과 애플리케이션 모니터링을 구분할 필요가 있다. 웹 서버의 HTTP 상태만 감시하면 DNS 조회 자체가 실패하는 상황을 놓칠 수 있다.

넷째, 중요한 외부 서비스에서는 Authoritative DNS의 고가용성도 고려해야 한다. 필요에 따라 여러 Name Server, 분산된 DNS 인프라 또는 다중 DNS 공급자 구조 등을 검토할 수 있다.

다섯째, DNS 기반 Failover를 사용할 때는 이를 즉시 전환되는 네트워크 스위치처럼 생각해서는 안 된다. DNS 응답 변경과 실제 사용자 트래픽 전환 사이에는 TTL과 캐시가 개입하기 때문이다.

실무에서는 결국 서버 이중화뿐 아니라 사용자가 그 서버를 찾아가는 이름 해석 경로까지 정상이어야 서비스 가용성이 확보된다는 관점이 중요하다.

8. 결론

DNS는 도메인 이름을 IP 주소 등의 서비스 정보와 연결하는 인터넷의 핵심 인프라다. 사용자의 DNS 질의는 Resolver의 캐시를 활용하거나 Root, TLD, Authoritative DNS로 이어지는 계층적 조회 과정을 통해 처리될 수 있다. 이러한 구조 덕분에 전 세계 규모의 이름 체계를 분산 운영할 수 있다.

그러나 기업 서비스 관점에서는 DNS 자체가 중요한 장애 지점이 될 수도 있다. Authoritative DNS 장애, 잘못된 레코드, NS 위임 오류, 내부 Resolver 장애, 부적절한 TTL 정책 등은 서버가 정상인 상황에서도 서비스 접근 장애를 발생시킬 수 있다.

따라서 DNS는 단순한 도메인 설정 항목이 아니라 서비스 경로와 가용성을 구성하는 하나의 인프라 계층으로 관리해야 한다. 특히 중요한 서비스라면 DNS 변경 관리, 캐시와 TTL 이해, 모니터링, 이중화 및 장애 대응 절차까지 함께 설계하는 것이 필요하다.

참고자료