본문 바로가기

PC

우분투(ubunt) DNS 서버 구축 - 내부 DNS 서버를 만들기

 

 

오랜만에 포스팅이다....

 

이게 다 DNS 만드느라고 흑흑... 누가 쉽다고 했어.....

 

사실 DNS 구축까지는 정말 쉽다;; 그냥 bind9만 깔면 끝... 그런데 DNS의 작동방식에 대해 거의 전무하다보니.....이해하는데 오래 걸렸다

 

오기로 달려 들어 끝을 보려고 했는데... 중간에 몇번 에이 때려칠까 했지만... 그동안 한게 또 아까워 결국 끝을 보았다 ㄷㄷ

 

IT 는 역시 끈기와 집념의 결정체 ㄷㄷ

 

(잘하는 사람들에게는 아니겠지만....나만 그런가?;;;;)

 

사설이 길었다 자!!

 

 

일단 우분투 DNS 구축인 만큼 우분투가 깔려있어야 겠다?ㄷㄷ;;

뭐 우분투 아니더라도 리눅스가 비슷한 부분이 많으니 참고만 하셔도 되겠다;;

 

우분투가 없으시면 일단 설치부터 해주시고;;

 

 

VM웨어로 설치 하실려면 전에 포스팅한 VM에 리눅스 깔기를 보고 하셔도 무방하다;;

http://thisstory.tistory.com/47

 
 
 
자 우분투가 깔린 상태시라면 이제 DNS 작업을 시작해 보자!!
 
우선 DNS에 사용되는 bind(Berkeley Internet Name Daemon) 라는 것을 설치해야 한다
 
 
이게 뭐냐면... 물어보지마시라..
 
Name server를 운용하기 위해서는 서버측 데몬 프로그램이 필요하게 되는데, 이중 BIND는 db 파일의 구성이 손쉽고 표준을 충실히 따른 검증된 도구로 많이 쓰인다...
 
 
 
자 어쩃든 BIND를 설치를 위해 다음 명령어를 날려주자
 

 

sudo apt-get update 

먼저 업데이트를 좀 해주시고...

 

sudo apt-get install bind9
 
 

 

대부분은 이처럼 이미 설치되어있다고 뜰 것이고;; 없으면 y를 눌러서 설치해주도록 하자!!

 

 

다음은 rndc-key를 만들어주자

(bind9부터 바뀌었는데 named를 컨트롤해 주는 프로그램인데 사실 없어도 DNS서비스는 잘된단다....)

 

명령어를 날려주자

rndc-confgen

 



저 키값의 이름을 임의로 바꿔주자

 

그리고 start부분부터 end부분까지 복사해 놓자

 

 root@thisstory:~# rndc-confgen

# rndc-confgen
# vi /etc/bind9/named.conf
 # Start of rndc.conf
 key "rndc-key" {
         algorithm hmac-md5;
         secret "vYXrMP4gfr4jUGKB90HchQ==";
 };
 
 options {
         default-key "thisstory";
         default-server 127.0.0.1;
         default-port 953;
 };
 # End of rndc.conf
 # Use with the following in named.conf, adjusting the allow list as needed:
 # key "rndc-key" {
 #       algorithm hmac-md5;
 #       secret "yHH6sSaUxOo8m8Fd0t+uyQ==";
 # };
 #
 # controls {
 #       inet 127.0.0.1 port 953
 #               allow { 127.0.0.1; } keys { "thisstory"; };
 # };
 # End of named.conf

 

 

이제 다음은 본격적으로 dns를 설정하는 부분이다

(이제 시작이다 ㄷㄷ)

 

다음 명령어를 날려서 named.conf 를 수정해 주자 (VI에디터 스킬이 필요하다.. ㅠㅠ)

 

 

 vi /etc/bind/named.conf

 



이런 내용이 나올 것이다... 자 이제 이걸 다음과 같이 꾹꾹 채워주자

 

 

 

 



 

 

미안하다.. 한글이 깨졋네 ㄷㄷ;; 한글 안꺠지게 하는것도 포스팅한번 해야겠다...

 

여튼

 

다시 풀어쓰자면

 

도메인을 thisstory라고 가정하고, 내가 쓰는 아이피가 172.17.12.221라면 다음과 같이 세팅하면 된다


 root@thisstory:~# vi /etc/bind/named.conf


options {
// zone file이 위치할 곳을 지정
 directory "/etc/bind/db";
// NXDOMAIN으로 응답 여부 (기본값 no)
 auth-nxdomain no;
// IPv6
 listen-on-v6 { any; };
// BIND 버전을 강제로 지정
// version "thisstory.net";
// 자체 네임서버를 사용할 경우 허용할 아이피 또는 대역을 설정
 allow-recursion { 127.0.0.1; 172.17.12.224; 172.17.12.1/24; };
// 네임서버의 zone data 정보를 남에게 보여줄 껀지 여부
 allow-transfer { 172.17.12.224; };
// 자체 네임서버도 사용안하며 OpenDNS를 사용하지 않으려면 주석 해제
// 단, allow-recursion는 주석처리 하셔야 합니다.
 //recursion no;
};

//----------------------------------------------//

// rndc-confgen 바로 전에 만들었던 key 부분인데 요부분만 복사해준다
key "thisstory-key" {
        algorithm hmac-md5;
        secret "vYXrMP4gfr4jUGKB90HchQ==";
};
controls {
        inet 127.0.0.1 port 953 allow { 127.0.0.1; } keys { "thisstory-key"; };
};

//----------------------------------------------//

// root 네임서버존! 외부 DNS의 정보들(가령 naver?)
zone "." {
        type hint;
        file "/etc/bind/db.root";
};

//----------------------------------------------//

// 문자를 IP로 바꿔주는 inverse존과
zone "thisstory.net" IN {
        type master;
        file "/etc/bind/db/inverse.db";
};

// IP를 문자로 바꿔주는 reverse존으로 나누어 지지만 우리는 내부 DNS만 간단히 할 거니까....
zone "12.17.172.in-addr.arpa" IN {
        type master;
        file "/etc/bind/db/12.17.172.zone";
        allow-update {none;};
};

 

 

zone 설정이 실제 DNS가 적용될 부분이다

 

zone 이름을 정해주고 파일 경로를 지정해준다

IP대역을 거꾸로 3번째 단까지만 적어주면 된다  172.17.12. -> 12.17.172

 


자 그럼 먼저  리버스존을 설정해 보도록 하자(도메인을 IP에 매칭)

 

파일을 만들어 줘야 한다

 

vi /etc/bind/db/inverse.db

 

 

 자 빨간부분의  도메인을 먼저 설정해 주고

 

아래쪽 옵션은 그대로 넣어줘도 무방하다

 

그리고 마지막 하단에 매칭시킬 IP와 도메인을 넣어준다

  

 

 

다음은 인버스존을 설정하여 주자(IP를 도메인에 매칭)

역시 파일을 만들어 줘야 한다 

vi /etc/bind/db/12.17.172.zone

 

 

 

 

자 이제 DNS 설정은 모두 완료가 되었다

 

항상 리눅스의 끝이 그러하듯... 설정 변경 후에는 재시작이 필요하다...

 

service bind9 restart

 

를 날려주자


 

 

설정이 잘 되었다면 OK 또는 done 이 나올것이고...

 

Fail 보인다면 ... 에러난 부분을 보고 다시 설정해보자;;

 

 

그리고 한가지더

bind 서비스는 잘 올라왔다 하더라도 dns설정 자체는 로그를 통해 확인해 보아야 한다

 

tail -n 19 /var/log/syslog

명령어로 로그를 보자



음.. 에러로 보이는 로그가 없다면 정상이다 잘 된거다 ㅋㅋㅋ

 

혹시 무엇인가 안된다면 이 로그를 살펴보라 그러면 답이 보일 것이다 ㄷㄷ

 

 

 

자 거의 다 왔다 !!

 

이제 마지막으로 우분투에 DNS서버 설정을 해주자!(정작 다 만들어 놓고도 DNS 설정을 안해주면 헛수고 ㄷㄷ)

 

새로나온 리눅스 버전부터 뭔가 DNS 설정이 난감해 졌다는 말이 들린다...(resolv.conf에서 바꿔줘도 초기화 된다고 하던...)

 

 

 

resolv.conf.d/head 파일에 다음과 같이 두줄을 추가해 주자

 

 

vi /etc/resolvconf/resolv.conf.d/head

 

 

search thisstory                         <---자신의 도메인(없으면 뺴도된다)

nameserver 172.17.12.224            <---자신의 IP

 

그리고

 

relolvconf -u

 

로 실행하면 nameserver 설정 내용이 /etc/resolv.conf에 적용된다

 

 

 

 

아니면 /etc/network/interfaces 파일에 다음줄을 추가해 주자

 

DNS: 172.17.12.224

 

 

추가해 주었으면 서비스를 재시작해주자!

 

 /etc/init.d/networking restart

 

뭐 방법은 여러가지니까... 이렇게 DNS 설정까지 해주고 나면 나도 내부 DNS를 쓸수 있게 된다!!

 

 

 

 

다 이제 다 끝낫으니 테스트를 해보자!!

 

 


 

다 정상적으로 나온다....