DNS 작동 원리: 스텁 리졸버와 재귀 리졸버
AI Store에서 AI코딩으로 만들어진 앱을 만나보세요!
지금 바로 방문하기

DNS 작동 원리: 재귀적 해석과 스텁 리졸버

카테고리

프로그래밍/소프트웨어 개발

서브카테고리

DevOps

대상자

시스템 관리자 및 DevOps 엔지니어 (DNS 설정, 서비스 발견, 네트워크 구성 관련 지식 필요)

핵심 요약

  • 스텁 리졸버(Stub Resolver)는 OS 내부의 DNS 쿼리 전달자로, 재귀 리졸버(Recursive Resolver)에 요청을 전달함
  • 재귀 리졸버루트 서버 → TLD 서버 → 권한 서버 순서로 완전한 DNS 조회를 수행하고, 결과를 캐싱하여 재사용
  • Consul은 서비스 발견을 위해 DNS 인터페이스를 제공하며, web.service.consul과 같은 형식의 A record/SRV record을 통해 서비스 IP/포트 정보 제공

섹션별 세부 요약

1. DNS 처리 흐름

  • 스텁 리졸버가 사용자 입력을 기반으로 재귀 리졸버에 쿼리 전달
  • 재귀 리졸버는 캐시된 결과가 없을 경우 루트 서버 → TLD 서버 → 권한 서버 순서로 조회 수행
  • 캐싱 메커니즘으로 동일한 쿼리에 대해 반복적인 서버 접근 방지

2. Unix/Linux DNS 설정

  • /etc/resolv.conf 파일에서 nameserversearch 옵션으로 DNS 서버 및 검색 도메인 설정
  • 예시:

```bash

nameserver 8.8.8.8

search example.com

```

  • systemd-resolved 사용 시 /etc/resolv.conf127.0.0.53로 가리킴 (로컬 리졸버 경로)

3. systemd-resolved 설정

  • DNS=Domains= 설정으로 외부 DNS 서버와 검색 도메인 지정
  • 예시:

```ini

[Resolve]

DNS=1.1.1.1

Domains=~consul

```

  • ~ 접두사로 루트 도메인(Route-only Domain) 지정 → 해당 도메인 쿼리만 특정 DNS 서버로 전달

4. Consul DNS 인터페이스

  • 서비스 등록 시 A recordSRV record 제공

```bash

dig web.service.consul @127.0.0.1 -p 8600

```

  • 예시 응답:

```

web.service.consul. 0 IN A 10.0.0.1

web.service.consul. 0 IN A 10.0.0.2

```

  • SRV record을 통해 서비스 포트 정보도 제공 (예: _web._tcp.service.consul)

결론

  • systemd-resolved를 사용하여 DNS 캐싱과 서비스 발견을 효율적으로 관리
  • Consul의 DNS 인터페이스를 활용해 web.service.consul 형식으로 서비스 IP/포트 자동 조회 가능
  • SRV record을 통해 서비스 포트 정보까지 확인 가능하며, 네트워크 구성 시 ~ 접두사로 도메인 전용 DNS 경로 설정 권장