DNS 서버 구축 방법 (리눅스)


DNS 서버 구축 우분투 리눅스 환경에서 DNS 서버 구축 방법에 대해서 설명드립니다. 도메인 구입 후 설정방법과 DNS 데몬 설치 후, DNS 레코드 설정방법과 테스트 방법을 포함하여 설명드리도록 하겠습니다.

DNS 서버란?

hiseon.me 와 같은 도메인 주소를 IP 주소라는 숫자 형태의 주소 변환하거나, 그 반대로 변환해 주는 서버가 DNS(Domain Name System) 서버 입니다.

DNS 서버 구축

도메인 구입한 곳에서 DNS 서비스를 함께 제공하는 것이 일반적이지만, 이 글에서는 직접 DNS 서버를 구축하여 운영하는 방법에 대해서 설명드리도록 하겠습니다.

DNS 서버 구축 이유

기관 등의 내부 네트워크가 클 경우, DNS 서버가 기관 내부에 있을 경우 캐쉬 효과가 있습니다. 그리고 서비스 제공을 목적일 경우 직접 DNS 서버를 운영하게 되면 동적으로 DNS 레코드를 관리할 수 있다는 장점이 있습니다.

그리고 도메인 설정에서 지원하지 않는 DNS 레코드를 직접 설정해야 할 수도 있을 수 있는데 여러가지 이유로 직접 DNS 서버를 구축할 수 있습니다.

DNS 서버 구축 환경

이글에는 우분투 리눅스에서 DNS 서버를 구축하는 방법에 대해서 설명드리도록 하겠습니다. bind9 이라는 DNS 데몬 설치하고 사용방법에 대해서 함께 설명드리도록 하겠습니다.

hiseon.me 라는 도메인에 대해서 DNS 서버 주소는 1.2.3.4 라고 가정하고 설정드리도록 하겠습니다.

DNS 서버 구축

도메인 설정

구입한 도메인을 직접 구축한 DNS 서버를 사용하기 위해서는 DNS 호스트정보와 네임서버 정보를 수정해 주셔야 합니다.

아래의 내용은 도메인 구입처에서 설정하는 내용으로 가비아 설정 방법에 대해 설명드립니다.

DNS 호스트 설정

먼저 구입한 도메인에서 네임서버 주소로 사용하고자 하는 DNS 호스트명 정보를 입력합니다. 아래의 내용은 ns.hiseon.me 정보로 입력한 내용입니다.

네임서버 설정에서 최소 2개 이상의 네임서버 주소가 필요할 수도 있습니다. 같은 IP 주소로 지정해도 되지만 호스트명은 n1.hiseon.me, ns2.hiseon.me 등을 설정합니다.

DNS 서버 구축

네임서버 설정

클라이언트가 도메인 정보를 요청하였을 경우, 도메인 정보를 질의하게 될 네임서버 정보를 설정하는 합니다.

위에서 설정한 ns.hiseon.me 또는 ns1.hiseon.me, ns2.hiseon.me 등의 호스트명을 입력합니다.

DNS 서버 구축

DNS 레코드를 질의하였을 경우, 위의 호스트명에 해당되는 DNS 서버에 질의하게 됩니다.

DNS 서버 설치

지금부터 실제 네임서버에서 DNS 서버를 설치하고 설정하는 방법에 대해서 설명드리도록 하겠습니다.

우분투 리눅스 일 경우 아래의 명령어를 이용하여 bind9 패키지와 DNS 유틸을 설치해 주시기 바랍니다.

$ sudo apt install bind9 dnsutils

그리고 /etc/bind/named.conf.local 파일을 열고 아래의 내용을 추가합니다.

zone "hiseon.me" {
type master;
file "/etc/bind/db.hiseon.me";
};

다음은 아래와 같은 내용의 설정파일을 생성합니다. 참고로 DNS 설정 파일에서 주석은 ; 문자를 사용합니다.

$TTL  604800
@ IN  SOA ns.hiseon.me. root.hiseon.me. (
            2   ; Serial
       604800   ; Refresh
        86400   ; Retry
      2419200   ; Expire
       604800 ) ; Negative Cache TTL
;
@   IN  NS  ns.hiseon.me.

@   IN  A   1.2.3.4  ; hiseon.me 에 대한 IP 주소
www IN  A   1.2.3.5  ; www.hiseon.me 에 대한 IP 주소
*   IN  A   1.2.3.6  ; 그 외의 *.hiseon.me 에 대한 IP 주소

그리고 아래의 명령어로 bind 데몬을 재실행 합니다.

$sudo /etc/init.d/bind9 restart

DNS 서버 테스트

DNS 서버 테스트는 nslookup 명령어를 사용하여 설명드리도록 하겠습니다.

도메인 정보에서 DNS 서버를 변경하였을 경우, DNS 서버 정보가 변경되는 동안 시간이 소요될 수 있습니다. 따라서 nslookup 명령어를 실행 후 다음과 같이 실행하여 직접 구축한 DNS 서버에서 바로 질의하도록 하겠습니다.

server 1.2.3.4

hiseon.me 도메인의 IP 주소를 질의하게 되면 성공적으로 설정한 IP 주소가 올바르게 나타나고 있음을 알 수 있습니다. nslookup 명령어를 질의하면서 다음과 같이 질의할 네임서버를 함께 지정하여 조회 할 수도 있습니다.

$ nslookup [조회 도메인] [DNS 서버]

다음 명령어로 www.hiseon.me 도메인을 질의하면 1.2.3.5가 응답하고 있음을 확인 할 수 있습니다.

$ nslookup www.hiseon.me 1.2.3.4

그리고 test.hiseon.me 도메인을 질의했을 경우 1.2.3.6 으로 응답하는 것을 알 수 있습니다.

$ nslookup test.hiseon.me 1.2.3.4

( 본문 인용시 출처를 밝혀 주시면 감사하겠습니다.)