DNS 서버

eunyeong·2023년 1월 10일
0

Network_Basic

목록 보기
3/4

Ip 주소와 이름을 연결해 놓은 hosts 파일이 있지만 현재의 인터넷 환경은 호스트의 수가 너무 많아 모든 호스트를 파일에 직접 기록할 수 없다. 확인할 수 있는 방법을 고안하기 위해 DNS를 고안하게 되었다. ISP(Internet Service Provider)을 통해 DHCP(Dynamic Host Configuration Protocol) 서버로부터 IP주소와 DNS 서버의 정보를 전달 받는다. 운영체제에서 인터페이스에 할당하는 네트워크 정보 중에서 DNS 서버에 해당하는 항목을 변경하여, 선택한 DNS 서버로부터 서비스를 제공받을 수 있다. hosts 파일과 DNS 서비스를 모두 사용하면 먼저 hosts 파일에서 이름을 조회하고, 찾으려는 이름을 파일에서 조회할 수 없으면 지정된 DNS 서버에게 이름에 해당하는 IP 주소를 요청한다.

DNS 구조

기본적으로 DNS 는 클라이언트와 서버가 서로 요청하고 응답하는 구조를 보인다. 하지만 실제로 모든 도메인 이름 정보를 가지는 건 저장 공간의 문제뿐 아니라 갱신되는 어려움 때문에 DNS 서버는 계층적으로 이루어진 구조를 통해 단계별로 정보를 제공한다.

1) 재귀 쿼리

사용자는 자신이 요청한 DNS 서버에게만 요청을 전송하고, 요청에 대한 응답을 수신함. 요청에 대한 정확한 응답을 수신하는 과정을 재귀 쿼리라고 함.

2) 순환 쿼리

클라이언트의 요청을 수신한 DNS 서버는 요청을 처리하기 위하여 다른 DNS 서버로부터 단계적으로 질의하는 과정을 수행함. 이 과정을 순환 쿼리라고 함.

3) 동작 방식

가장 높은 단계의 요청을 처리하는 DNS 서버를 Root DNS 서버라고 함. Root DNS 서버는 모든 이름에 대한 정보 대신 다음 단계의 이름에 대한 답을 가지고 있는 서버의 정보를 가지고 있음.

4) 영역(Zone)

nobreak.co.kr의 DNS 서버인 ns.nobreak.co.kr 서버는 www.nobreak.co.kr 또는 mail.nobreak.co.kr 등 해당 특정 도메인에 해당하는 정보를 가지고 있다. 이 범위를 영역이라 함.

5) 정방향 조회/역방향 조회

정방향 조회: 호스트이름을 IP 주소로 변환해 주는 DNS 조회 방식 <-> 역방향 조회

6) DNS 캐시

시스템이 기억하고 있는 이름과 IP 주소의 기록을 DNS 캐시라고 함. 과도한 부하 발생을 막기 위해 DNS는 레코드의 수명을 설정하여, 한번 조회한 레코드의 수명이 다하기 전까지는 해당 레코드를 그대로 사용하도록 설계되었음. 따라서 불필요한 DNS 요청을 줄일 수 있게 됨. 이이 때 각 레코드의 수명을 TTL(Time To Live)라 함.

DNS 레코드 및 조회

*** DNS 레코드

  1. A(Address) 레코드
    : IPv4 주소와 도메인 이름을 연결하고 있는 레코드
    cf) AAAA 레코드 - IPv6주소

  2. CNAME(Canonical Name) 레코드
    : 다른 DNS 레코드의 별칭 레코드

  3. MX(Mail eXchanger) 레코드
    : 메일 서버에 대한 정보를 저장하고 있음. SMTP을 사용하는 메일서버의 정보와 함께 메일 서버의 우선순위를 지정

  4. NS(Name Server) 레코드
    : 현재 도메인의 이름 서버를 지정. 각 도메인은 도메인 내의 호스트에 대한 안내를 제공하는 네임서버가 반드시 필요

  5. PTR(Pointer) 레코드
    : 특정 IP 주소에 해당하는 도메인의 이름 정보를 저장하고 있는 레코드. 역방향 조회에 필요.

  6. SOA(State Of Authority) 레코드
    : 모든 영역은 한 개의 SOA 레코드를 가지고 있고, 이 레코드는 현재 영역에 대한 권한이 있음, 즉 영역을 직접 관리하고 서비스하고 있음을 의미. 영역을 구성하는 가장 기본 레코드 이기도 함. TTL과 영역 전송 시 적용되는 시간 정보를 포함하고 있음.

  7. TXT(Text) 레코드
    : 자유로운 형식의 텍스트 정보를 제공

*** DNS 조회 방법

사용자가 호스트 이름에 대한 실제 IP 주소를 직접 확인하고 싶을 때 사용할 수 있는 도구들

1) host
: host [option] name [server]

2) nslookup
: nslookup [option][name] [server]

3) dig
: dig [@server][option] [name]

DNS 서버 관리

영역 전송(Zone Transfer)
DNS 서버의 장애에 대비하기 위하여 DNS 서버를 이중화할 필요가 있음. 같은 레코드를 가지는 DNS 서버를 각각 따로 구성할 경우, 각 서버는 자신이 가지고 있는 레코드에 따라 정보를 제공하므로 정보가 동일함을 보장할 수 없음. 이를 방지하기 위해 DNS 서버 간 동기화를 통해 레코드를 동일하게 유지해야 함. 이 방식을 영역 전송(Zone Transfer)이라 함

1) Master DNS 서버 설정

cat /etc/named.conf
...
zone "nobreak.co.kr." IN {
type master (직접 관리할 경우)
file "data/nobreak.co.kr.zone";
Allow-transfer {192.168.100.129;};
(영역 전송을 허가할 DNS 서버를 지정 가능)
};

2) Slave DNS 서버 설정

cat /etc/naemd.conf
...
zone "nobreak.co.kr" IN {
type slave;
masters {192.168.100.130;};
file "slaves/nobreak.co.kr.slave";
};

profile
아무것도 모르는 초보

0개의 댓글