bind9 이용해 DNS 설치하기


도메인 등록 업체에서 구매한 도메인이 있는데, 그 도메인으로 접속했을 때, 내 서버로 접속이 되도록 하고 싶다!

카페24 같은 경우, 도메인 등록도 할 수 있고, 그 도메인을 자신들이 호스팅하는 서버로 바로 연결도 시켜주고 있어서 이런 작업이 필요없지만...


나처럼 도메인 따로 구입해놓고 자체적으로 웹서버를 돌릴려고 한다면, 이 둘을 연결해줄 필요가 있다...

이럴 때 필요한 것이 도메인 네임 서버, DNS 되시겠다.


자체적으로 DNS를 운영하면 소위 3차 도메인도 내 맘대로 만들어서 사용할 수 있다.

aaa.com 도 가능하지만, aaa.aaa.com, bbb.aaa.com 같이 앞에 다른 이름 넣는게 가능하다는 말쌈~~


그럼, 우분투에서 사용할 수 있는 DNS 프로그램을 설치해보자.. 그 이름은 bind9!

아참! 네임서버가 제대로 돌아가려면 53번 포트가 열려있어야 한다.


설치는 아래처럼...


$ sudo apt-get install bind9 bind9utils


주루룩~ 잘 설치가 된다. 

설치중 보이는 로그중에 /etc/bind/rndc.key 를 생성했다는 메세지도 보인다.

나중에 써먹을때가 있을지도...


wrote key file "/etc/bind/rndc.key"


이제 설정을 하나씩 해 보자..


현재 aaa.com 으로 사용할 서버에서 작업한다고 가정하고 출발~



/etc/hosts 수정

127.0.0.1       localhost

123.123.123.123   aaa.com

# The following lines are desirable for IPv6 capable hosts

::1     localhost ip6-localhost ip6-loopback

fe00::0 ip6-localnet

ff00::0 ip6-mcastprefix

ff02::1 ip6-allnodes

ff02::2 ip6-allrouters




이 서버로 접속해서 여기가 어디요? 하고 물어보는 것들에게 'aaa.com'이요~ 라고 이야기해 줄 수 있게 추가를 해 주자.


resolv.conf 수정

resolv.conf 파일이 머하는 녀석이냐? 하니, 도메인네임서버가 어디 있는지 시스템에게 알려주는 녀석이라네.


서버에 터미널 로그인을 하고, /etc/resolv.conf 파일을 편집해 보자.


# Dynamic resolv.conf(5) file for glibc resolver(3) generated by resolvconf(8)

#     DO NOT EDIT THIS FILE BY HAND -- YOUR CHANGES WILL BE OVERWRITTEN

nameserver 127.0.1.1



기본적으로는 위처럼 되어 있는데...흠...

127.0.0.1 은 localhost 를 의미한다고 알고 있는데, 127.0.1.1 은 머지??? 하고 검색을 해보니 데비안 리눅스에서 이것도 루프백 아이피라고 하네. 좀 더 자세한거는 설명하기 어렵...ㅠㅠ

암튼, 네임서버가 127.0.1.1 즉, 바로 내 자신, 니가 보고 있는 이 서버에 설치되어 있다~~ 라는 설정이 되겠다.


resolv.conf 에 nameserver 를 아래처럼 여러개 등록할 수도 있다.


# Dynamic resolv.conf(5) file for glibc resolver(3) generated by resolvconf(8)

#     DO NOT EDIT THIS FILE BY HAND -- YOUR CHANGES WILL BE OVERWRITTEN

nameserver 127.0.1.1

nameserver 168.126.63.1




nameserver 항목외에 domain, search 항목도 작성할 수 있는데. domain 에는 로컬 도메인 네임을 적어주면되고, 안 적으면, search 에 지정한 항목을 알아서 사용한다고 한다. (로컬 도메인은 머여? 아...어렵다...)


# Dynamic resolv.conf(5) file for glibc resolver(3) generated by resolvconf(8)

#     DO NOT EDIT THIS FILE BY HAND -- YOUR CHANGES WILL BE OVERWRITTEN

domain aaa.com 

nameserver 127.0.1.1

search otherdomain.com




bind9의 설정 파일 /etc/bind/named.conf


열어보니 아래처럼 되어있다. "손대지 마라!, zone 을 추가하려면 /etc/bind/named.conf.local 에서 해라!" 라고 적혀있다.


// This is the primary configuration file for the BIND DNS server named.

//

// Please read /usr/share/doc/bind9/README.Debian.gz for information on the

// structure of BIND configuration files in Debian, *BEFORE* you customize

// this configuration file.

//

// If you are just adding zones, please do that in /etc/bind/named.conf.local


include "/etc/bind/named.conf.options";

include "/etc/bind/named.conf.local";

include "/etc/bind/named.conf.default-zones";


시키는대로... /etc/bind/named.conf.local 을 열어보니


//

// Do any local configuration here

//


// Consider adding the 1918 zones here, if they are not used in your

// organization

//include "/etc/bind/zones.rfc1918";



주석처리된거 빼고 아무것도 없네. 여기다가 zone 을 추가하라는 말이쥐? 예제는 없니?


zone 은 무슨 의미인가? 

설치하고 있는 DNS 에서 관리할 도메인을 지정해주기 위한 거 같다.. "이 지역은 내 구역이야!" 라고.

"aaa.com 이라는 도메인은 내가 관리해..여긴 aaa.com 구역이야!" ...라는 의미로 아래처럼 추가를 해 줄수 있다고 한다.


//

// Do any local configuration here

//


// Consider adding the 1918 zones here, if they are not used in your

// organization

//include "/etc/bind/zones.rfc1918";


zone "aaa.com" {

        type master;

        file "/etc/bind/db.aaa.com";

};


type 에 master로 되어있는데, 사실 slave 타입도 있다. 그건 나중에 다시..

file 항목에 지정해준 "/etc/bind/db.aaa.com 을 zone 파일이라고 부른다.

저 파일도 만들어줘야한다.

어떻게??


미리 만들어져 있는 /etc/bind/db.local 을 복사해서 수정하는 방법으로 만들어 줄 수 있다.

/etc/bind/db.local 을 열어보까나...


;

; BIND data file for local loopback interface

;

$TTL    604800

@       IN      SOA     localhost. root.localhost. (

                              2         ; Serial

                         604800         ; Refresh

                          86400         ; Retry

                        2419200         ; Expire

                         604800 )       ; Negative Cache TTL

;

@       IN      NS      localhost.

@       IN      A       127.0.0.1

@       IN      AAAA    ::1



하... 


/etc/bind/ 로 가서 db.local 을 복사해서 db.aaa.com 파일을 만들고 아래처럼 수정을 하자.


;

; BIND data file for local loopback interface

;

$TTL    604800

@       IN      SOA     aaa.com. root.aaa.com. (

                              2         ; Serial

                         604800         ; Refresh

                          86400         ; Retry

                        2419200         ; Expire

                         604800 )       ; Negative Cache TTL

;

@       IN      NS      ns.aaa.com.

@       IN      A       123.123.123.123

@       IN      AAAA    ::1

ns      IN       A       123.123.123.123



후후...localhost 대신에 aaa.com 을 넣고, 네임서버라는 의미로 폼나게 ns 를 더했을뿐이다.

123.123.123.123 은 서버의 고정 IP 되시겠다. 훼이크다.



여기까지하고 bind9 을 재시작을 해서 추가한 설정들이 적용되도록 하자.


$ sudo service bind9 restart




도메인을 등록한 회사 사이트에 가서 aaa.com 도메인의 네임서버를 ns.aaa.com이라고 설정을 해야겠네.



이렇게 되면, 어디서든 aaa.com 으로 접속하려고 하면, ns.aaa.com(123.123.123.123) 에 가서 aaa.com 이 어디요? 라고 묻게되는데, resolv.conf 에 aaa.com이 등록되어있으니 이 서버로 연결되는 것....이 맞나? 


먼가 이해가 덜 된 부분이 있지만, 요기까지!


언제 날 봐서, 도메인 네임 운영 부분 전체에 대해서 한번 정리를 해야겠다.


끝!














































Posted by 똑똑한 영장류