우분투 네임서버 구축하기 (Install Ubuntu bind9 nameserver)

HYEONG HWAN, MUN/ 10월 25, 2017/ 미분류/ 6 comments

https://blog.lael.be/post/6308

반드시 네임서버를 구축해야 할 경우가 아니라면, 직접 구축하지 말고 다음의 글로 이동하여 무료 서비스를 이용해 보세요.

무료 DNS 서비스 모음


도메인 네임서버란?

Domain Name Server 는 “네임서버” 또는 “DNS” 라고 부릅니다.

도메인 네임서버는 사람이 읽을 수 있는 도메인 이름기계가 읽을 수 있는 IP 주소로 변환하는 일을 합니다.

도메인 네임서버는 보통 계층형으로 이루어지고 결과를 캐쉬합니다.


<그림 : 계층형 DNS. 속도 개선 효과가 있다.>


구축 방법

Ubuntu Linux 에서 zone 파일을 구성하여 네임서버를 구축하는 예제를 설명합니다.

 

1. 운영체제의 apt 패키지 목록 갱신

# apt-get update

 

2. 네임서버 소프트웨어 Bind9 설치

# apt-get install bind9

 

3. 네임서버 서비스 상태 보기

# service bind9 status

서비스가 실행되고 있지 않다.(inactive)

 

4. 네임서버 서비스 켜기

# service bind9 start
# service bind9 status

 

5. 네임서버 서비스 테스트

설치한 네임서버 서비스에게 naver.com 의 아이피가 어떤 것인지 물어보는 명령어를 실행해보도록 하자.

# host naver.com 127.0.0.1

결과가 위와 같을 수도, 다를 수도 있다.

네임서버 환경설정을 하면서 위의 결과를 바꿀 것이다.

 

6. 네임서버 환경설정

# vi /etc/bind/named.conf.options

 

파일의 기본 값은 다음과 같다.


options {
    directory "/var/cache/bind";

    // If there is a firewall between you and nameservers you want
    // to talk to, you may need to fix the firewall to allow multiple
    // ports to talk.  See http://www.kb.cert.org/vuls/id/800113

    // If your ISP provided one or more IP addresses for stable 
    // nameservers, you probably want to use them as forwarders.  
    // Uncomment the following block, and insert the addresses replacing 
    // the all-0's placeholder.

    // forwarders {
    //  0.0.0.0;
    // };

    //========================================================================
    // If BIND logs error messages about the root key being expired,
    // you will need to update your keys.  See https://www.isc.org/bind-keys
    //========================================================================
    dnssec-validation auto;

    auth-nxdomain no;    # conform to RFC1035
    listen-on-v6 { any; };
};

 

필요 없는 주석 설명글을 제거하면 다음과 같은 모습이 된다.


options {
    directory "/var/cache/bind";
    dnssec-validation auto;

    auth-nxdomain no;    # conform to RFC1035
    listen-on-v6 { any; };
};

 

다음 내용과 같이 몇줄을 더 추가합니다.


options {
    directory "/var/cache/bind";
    dnssec-validation auto;

    auth-nxdomain no;    # conform to RFC1035
    listen-on-v6 { any; };

    recursion yes;
    allow-transfer { none; };
    
    forwarders {
            8.8.8.8;
            8.8.4.4;
    };
    forward only;
    allow-query { any; };

};

 

recursion no;  라고 설정하면 이 서버에서 정의되지 않은 도메인 요청은 거부(REFUSE)합니다. 이 경우 forward 관련 구문은 무시됩니다.

recursion yes; 라고 설정하면 이 서버에서 정의되지 않은 도메인 요청을 forwarders 서버에 전달하고 결과를 알려줍니다.

일반적으로는 recursion yes 를 많이 사용합니다.

 

위 예제의 forwarders 는 구글의 공개 DNS 인 8.8.8.8, 8.8.4.4 이며 실제 서비스 환경에서도 사용할 수 있는 값입니다.

forwarders 를 더 나은 곳으로 최적화 하고 싶다면 https://blog.lael.be/post/154 글로 이동하여 가장 적합한 통신사 네임서버를 찾아보세요. 그 값으로 변경하면 됩니다.

 

allow-query 는 DNS 요청을 허용할 IP 주소입니다. any 는 모든 IP 에 대하여 호출 허용한다는 뜻입니다.

접근 허용 IP 제한은 네트워크 방화벽 또는 클라우드 방화벽 또는 iptables 방화벽 등에서 적절히 설정하세요. (udp 53번 포트)

 

6. 도메인 네임 zone 파일 추가.

# vi /etc/bind/named.conf.local

zone "naver.com" { type master; file "/etc/bind/db.naver.com"; };

1차 도메인 주소를 적습니다. 이 도메인 주소의 모든 서브도메인을 관리합니다.

 

7. 도메인 네임 세부 값 설정

# vi /etc/bind/db.naver.com

$TTL    86400
@   IN  SOA localhost. root.localhost. (
                  1     ; Serial
             14400      ; Refresh
              14400     ; Retry
            1209600     ; Expire
              86400 )   ; Negative Cache TTL
@	IN	NS	localhost.
@   IN  A   52.78.137.201
blog   IN  A   52.78.137.201


 

8. 구문 오류 테스트

 # named-checkconf
 # named-checkzone naver.com /etc/bind/db.naver.com

OK 또는 아무 메세지가 출력되지 않으면 정상이다.

9. 변경사항 적용

 # service bind9 reload

10. 방화벽 설정

네임서버 표준 포트는 UDP 53 포트입니다. 적절한 접근 제어 권한을 설정하세요.

 

11. 사용하기

이 네임서버를 사용할 PC 로 이동한 후 네트워크 설정을 합니다.

저는 Apple Mac 을 사용중이며, 맥 컴퓨터의 경우 다음의 위치에서 네임서버를 설정할 수 있습니다.

위의 예제를 실행한 서버의 IP175.119.156.148 입니다.

 

 

12. 사용 예제

네임서버를 위와 같이 변경한 컴퓨터에서,

naver.com 및 blog.naver.com 이동시 다음과 같은 페이지가 나타나면 성공입니다.

 

13. 응용

개인정보를 가로채는 피싱(phishing) 사이트 만들때 위와 같이 작업합니다.

공유기 내부의 사내 서버에 접속하게 할 때 사용합니다.

회사 구성원끼리 개발 사이트를 정의할 때 사용됩니다. (각 PC의 host 파일을 변경할 필요가 없어집니다.)

 

 

 

끝~

6 Comments

  1. 제가 처음으로 댓글 달았네요

    늘 도움 받고 있습니다. 감사합니다.

  2. dnszi.com 사용하고 있는데
    이것을 설치하면 ddns도 가능한가요?

    1. 네임서버 구축은 어쩔 수 없을 경우에만 하는 것이고, 왠만하면 잘 되어있는 외부 서비스 쓰는게 나아요.
      dnszi 가 ddns 를 지원하니 그것을 쓰는것을 추천합니다.

  3. 형환찡 꾸준하네
    잘 사냐~

    1. ㅋㅋㅋㅋ 김박사님 아니십니까?
      연구는 잘 되십니까
      어쩌다보니 꾸준히 운영중입니다.

  4. 감사합니다 ㅜㅅㅜ …

SDK에 답글 남기기 응답 취소

작성하신 댓글은 관리자의 수동 승인 후 게시됩니다.

You may use these HTML tags and attributes: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <s> <strike> <strong>
*
*