본문 바로가기
Development/Free Topic

Ubuntu 에서의 DNS 서버 구축

by IMCOMKING 2016. 9. 28.

총 7대의 slave와 1대의 master로 구성된 클러스터 서버에서 IP주소를 일일이 외우지 않고, domain name으로 각 서버컴퓨터들을 사용하기 위해서 bind9을 이용한 DNS를 master서버에 구축하였다.


* DNS의 원리
slave.dns.server.co.kr : 이런식으로 구성된 도메인은 역순으로 구성된 DNS서버들을 거쳐서 recursive하게 ip주소를 받아낸다. 즉, kr -> co -> server -> dns 순서로 DNS를 물어본다.

보통의 경우 server.co.kr은 도메인을 구입해서 사용해야하고, 그 앞의 slave와 dns에 해당하는 부분을 서버 개발자가 구성하게 된다.


# bind9 설정하기

우선 아래의 링크만 정말 천천히 정독하면, 거의 한 번에 구현이 가능하다. 이 글은 이 내용을 요약한 것에 불과하다.

https://www.digitalocean.com/community/tutorials/how-to-configure-bind-as-a-private-network-dns-server-on-ubuntu-14-04

http://askubuntu.com/questions/330148/how-do-i-do-a-complete-bind9-dns-server-configuration-with-a-hostname



1) Master 설정

sudo apt-get update
sudo apt-get install bind9 bind9utils bind9-doc
sudo vim /etc/default/bind9
>> OPTIONS="-4 -u bind" 으로 수정해서 IP-v4 로 설정한다.

sudo vim /etc/bind/named.conf.options
>> 다음을 입력해서 DNS서버가 신뢰하는 ip주소를 설정하고, 또한 어떤 ip주소가 Master인지 알려준다.

acl "trusted" {
        10.128.10.11;    # Master server ip - can be set to localhos
        10.128.100.101;  # slave 2 ip
        10.128.200.102;  # slave 2 ip
};
options {
   directory "/var/cache/bind";

         recursion yes;                 # enables resursive queries
         allow-recursion { trusted; };  # allows recursive queries from "trusted" clients
         listen-on { [Master server IP]; };   # ns1 private IP address - listen on private network only
         allow-transfer { none; };      # disable zone transfers by default

         forwarders {
                 8.8.8.8;
                 8.8.4.4;
         };

   dnssec-validation auto;

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

sudo vim /etc/bind/named.conf.local
>> 다음을 입력해서 domain --> ip를 담당하는 forward zone과 ip --> domain을 담당하는 reverse zone을 생성한다.

zone "master.dns.server.com" { 
type master; file "/etc/bind/zones/db.master.dns.server.com"; # zone file path }; zone "128.10.in-addr.arpa" { # master ip주소의 앞 2자리를 역순으로 입력 type master; file "/etc/bind/zones/db.10.128"; # 10.128.0.0 };

sudo mkdir /etc/bind/zones
cd /etc/bind/zones
sudo cp ../db.local ./db.master.server.com
sudo vim /etc/bind/zones/db.master.server.com
>> 다음을 입력해서 domain --> ip 맵핑 테이블을 생성

$TTL    604800
@       IN      SOA     master.dns.server.com. admin.dns.server.com. (
                  3     ; Serial # 한 번 이 파일을 수정할 때마다 값을 1씩 증가시켜야함
             604800     ; Refresh
              86400     ; Retry
            2419200     ; Expire
             604800 )   ; Negative Cache TTL
;
; name servers - NS records
     IN      NS      master.dns.server.com.

; name servers - A records
master.dns.server.com.          IN      A       10.128.10.11

slave1.dns.server.com.        IN      A       10.128.100.101
slave2.dns.server.com.        IN      A       10.128.200.102

sudo cp ../db.127 ./db.10.128
sudo vim /etc/bind/zones/db.10.128
>> 다음을 입력해서  IP --> domain 맵핑 테이블을 생성

$TTL    604800
@       IN      SOA     master.dns.server.com. admin.dns.server.com. (
                              3         ; Serial
                         604800         ; Refresh
                          86400         ; Retry
                        2419200         ; Expire
                         604800 )       ; Negative Cache TTL
; name servers
      IN      NS      master.dns.server.com.

; PTR Records
11.10   IN      PTR     master.dns.server.com.  ; 10.128.10.11 #여기도 끝자리 ip 2자리를 역순으로 입력
101.100 IN      PTR     slave1.dns.server.com.  ; 10.128.100.101
102.200 IN      PTR     slave2.dns.server.com.  ; 10.128.200.102

# 설정 점검하기

sudo named-checkconf
sudo named-checkzone dns.server.com db.dns.server.com
sudo named-checkzone 128.10.in-addr.arpa db.10.128


위의 문법 검사에서 문제가 없으면, 이제 bind9을 재시작한다.

sudo service bind9 restart



2) Client 설정

sudo vim /etc/resolvconf/resolv.conf.d/head # 원래 써있던 overwirte경고문을 무시하고 그냥 하면 잘 됨,
>> 다음을 입력해서 어떤 DNS서버 ip주소를 지정한다.
search bigpu.snu.ac.kr
nameserver 147.46.215.81 # bind9 이 돌아가고 있는 DNS서버

sudo resolvconf -u



3) Test 해보기
nslookup 10.128.100.101
nslookup [도메인이름]
ping [도메인이름]
ssh [도메인이름]

또는 DNS 설정이 계속 잘 안될 경우, 다음 사이트에서 어떤 level까지 도달하는 지 확인 가능.



댓글