본문 바로가기

리눅스

Caching DNS와 Cache-Only DNS의 차이점 및 Bind를 사용하여 구현하는 방법

728x90

Caching DNS와 Cache-Only DNS의 차이점 및 Bind를 사용하여 구현하는 방법

Caching DNS(Recursive DNS)

  1. 역할
    • Caching DNS 서버는 클라이언트로부터 DNS 쿼리를 받아들이고 원하는 도메인의 IP 주소를 찾는 데 필요한 모든 DNS 레코드 정보를 직접 검색합니다.
    • 캐시를 사용하여 최종 결과를 저장하며, 미래에 동일한 도메인에 대한 쿼리를 빠르게 처리하기 위해 이러한 결과를 캐싱합니다.
  2. 특징
    • Caching DNS 서버는 클라이언트의 쿼리에 대한 원본 DNS 서버로의 재귀적 쿼리를 수행합니다.
    • 전체 DNS 계층 구조를 이해하며, 캐시와 재귀 쿼리를 사용하여 원하는 정보를 찾습니다.
    • ISP 또는 공공 DNS 서버가 Caching DNS 서버의 예입니다.

Cache-Only DNS(DNS Resolver)

  1. 역할
    • Cache-Only DNS 서버는 클라이언트의 DNS 쿼리를 받아들이고, 외부 DNS 서버(보통 ISP의 DNS 서버 또는 공공 DNS 서버)에게 DNS 쿼리를 보내어 원하는 정보를 검색합니다.
    • 이 정보를 로컬 캐시에 저장하고 나중에 동일한 도메인에 대한 쿼리에 대해 로컬 캐시를 사용하여 빠르게 응답합니다.
  2. 특징
    • Cache-Only DNS 서버는 도메인에 대한 답변을 직접 검색하지 않으며, 외부 DNS 서버로부터 정보를 가져와서 캐시에 저장합니다.
    • 전체 DNS 계층 구조를 이해하지 않고, 외부 DNS 서버로의 쿼리를 단순히 전달하고 캐시된 정보를 로컬에서 사용합니다.

Bind를 사용하여 구현하는 방법

Caching DNS(Recursive DNS) 구현

  • Bind 설정 파일(/etc/named.conf)에서 recursion yes;와 같은 재귀 쿼리를 활성화하는 설정을 찾아 활성화합니다.
 sudo vim /etc/named.conf
recursion yes;

Cache-Only DNS(DNS Resolver) 구현

  • Bind 설정 파일(/etc/named.conf)에서 recursion no;와 같은 재귀 쿼리를 비활성화하는 설정을 찾아 활성화합니다.
sudo vim /etc/bind/named.conf
recursion no;
728x90

BIND DNS에서 recursion 지시자를 설정하는 방법

BIND의 recursion 및 allow-recursion 설정은 DNS 서버의 재귀 쿼리 동작과 허용에 관한 중요한 설정입니다. 재귀 쿼리는 클라이언트에서 DNS 서버로 보내는 쿼리가 해당 서버가 다른 DNS 서버에게 이어지는지 여부를 나타냅니다.

 

출처-https://www.zytrax.com/books/dns/ch4/recursive-query.png

1. recursion 설정

  • recursion 설정은 DNS 서버가 재귀 쿼리를 수행할 것인지를 결정하는 설정입니다.
  • 재귀 쿼리란 DNS 서버가 클라이언트의 쿼리를 받아들이고 다른 DNS 서버(상위 도메인의 DNS 서버 등)에 해당 쿼리를 전달하고, 전체 DNS 계층 구조를 따라 답변을 찾는 작업을 의미합니다.

 

options {
    recursion yes;  // DNS 서버가 재귀 쿼리를 수행함
};
  • recursion 설정을 "yes"로 설정하면 DNS 서버가 재귀 쿼리를 수행합니다. 클라이언트로부터의 DNS 쿼리를 전달하고, 완전한 도메인 정보를 찾기 위해 다른 DNS 서버로 쿼리를 보냅니다.

2. allow-recursion 설정

  • allow-recursion 설정은 DNS 서버에서 재귀 쿼리를 허용할 IP 주소 또는 IP 대역을 지정하는 설정입니다.
  • 이 설정은 보안과 관련이 있으며, 특정 클라이언트 또는 네트워크에서만 재귀 쿼리를 허용하려는 경우 사용됩니다.
options {
    recursion yes;  // DNS 서버가 재귀 쿼리를 수행함
    allow-recursion { trusted-clients; };
};
  • 위의 예에서 trusted-clients는 허용할 클라이언트의 IP 주소 또는 대역을 정의한 ACL(Access Control List)의 이름입니다. 이 ACL에서 정의한 클라이언트만이 재귀 쿼리를 실행할 수 있습니다.

recursion와 allow-recursion 설정은 DNS 서버의 보안 및 동작을 제어하는 데 중요한 역할을 합니다. 보안을 강화하려면 적절한 allow-recursion 설정을 구성하여 허용되지 않는 클라이언트로부터의 재귀 쿼리를 차단할 수 있습니다.

 

위의 설정은 Bind DNS 서버를 Caching DNS 또는 Cache-Only DNS로 구성하는 방법의 간단한 개요입니다. 원하는 유형의 DNS 서버에 따라 설정을 조정해야 합니다.

 

참고URL

- ZyTrax : DNS Configuration Types

- O'Reilly : 8.10 Domain Name System (DNS)

 

728x90