환경 : CentOS6.5 64비트
1. 개요
도메인 네임 시스템(Domain Name System, DNS)은 호스트의 도메인 이름을 호스트의 네트워크 주소로 바꾸거나 그 반대의 변환을 수행할 수 있도록 하기 위해 개발되었다.
특정 컴퓨터(또는 네트워크로 연결된 임의의 장치)의 주소를 찾기 위해, 사람이 이해하기 쉬운 도메인 이름을 숫자로 된 식별 번호(IP 주소)로 변환해준다.
도메인 네임 시스템은 흔히 “전화번호부”에 비유된다. 인터넷 도메인 주소 체계로서 TCP/IP의 응용에서, www.example.com과 같은 주 컴퓨터의 도메인 이름을 192.168.1.0과 같은 IP 주소로 변환하고 라우팅 정보를 제공하는 분산형 데이터베이스 시스템이다.
인터넷에 네임서버, DNS 서버 등을 검색해보면 무수히 많은 정보들을 찾을수 있다. 오늘 올리는 포스팅 또한 그중에 하나이며, 오류 없이 정확한 정보를 전달하려고 한다.
2. DNS 서버 설치(네임 서버 설치)
설치 OS : 리눅스(centos6.5)
bind 버전 : bind-9.8.2-0.37
설치를 진행하기에 앞서 몇가지 하고 싶은 얘기가 있다. 오늘 소개할 네임서버 구축은 리눅스의 bind 라는 툴을 이용해서 설치를 진행 할 것이다. 또한 윈도우 환경보다는 리눅스 환경에서 최적화 되게 설치를 쉽고 깔끔히 소개하도록 하겠다.
1) bind 설치
현재 커널버전 및 운영체제 확인을 해보도록 하겠다. 커널버전은 2.6.32. 64bit 환경이다.
yum -y install bind*
명령어를 이용해서 bind 를 설치 진행하도록 한다.
설치가 완료된 모습이다. 설치 환경에 따라서 다소 시간이 소요될 수 있다. 큰 문제점이 없다면, bind 와 관련된 각종 라이브러리, sdb,utils,libs,chroot, 등 모두 설치가 될 것이다.
이렇게 설치가 완료되었다. 다음은 환경설정 하는 방법이다.
2) named.conf 및 zone 파일 설정
vi /etc/sysconfig/named
파일을 열어서 ROOTDIR=/var/named/chroot 되어있는 부분을 주석처리 해야된다. 기본적으로 ROOTDIR 설정이 되어있어서 include 된 zone 파일을 호출할 경우 경로를 못찾을수 있다는 에러를 발견할 것이다. 이 때문에 /var/named/chroot 경로를 /etc/named.zone 등과 같이 설정해주거나 ROOTDIR 부분을 주석처리한다.
vi /etc/named/named.conf
conf 파일을 열어서 환경설정을 하도록 하자. 기본 설정에서 몇가지만 추가 및 변경해주면 된다. 위의 그림을 참고하여 변경하자.
################################################
//
// named.conf
//
// Provided by Red Hat bind package to configure the ISC BIND named(8) DNS
// server as a caching only nameserver (as a localhost DNS resolver only).
//
// See /usr/share/doc/bind*/sample/ for example named configuration files.
//
options {
# listen-on port 53 { 127.0.0.1; };
# listen-on-v6 port 53 { ::1; };
directory “/var/named”;
dump-file “/var/named/data/cache_dump.db”;
statistics-file “/var/named/data/named_stats.txt”;
memstatistics-file “/var/named/data/named_mem_stats.txt”;
# allow-query { localhost; };
recursion no;
dnssec-enable yes;
dnssec-validation yes;
dnssec-lookaside auto;
/* Path to ISC DLV key */
bindkeys-file “/etc/named.iscdlv.key”;
managed-keys-directory “/var/named/dynamic”;
};
logging {
channel default_debug {
file “data/named.run”;
severity dynamic;
};
};
zone “.” IN {
type hint;
file “named.ca”;
};
include “/etc/named.rfc1912.zones”;
include “/etc/named.root.key”;
zone “dslee.kr” IN {type master; file “dslee.kr.zone”; allow-update { none; }; };
###################################################
vi /var/named/dslee.kr.zone
zone 파일을 만들 차례다. 기존 zone 파일은 굉장히 심플하게 구성되어있는데, 위의 내용을 참고하여 새로 만들어 보도록 하자.
################################
$TTL 200
@ IN SOA ns.dslee.kr. root.dslee.kr. (
2013120624 ;
3H ;
15M ;
1W ;
1D ) ;
;
IN NS ns.dslee.kr. ;
IN MX 10 mail.dslee.kr. ;
IN TXT “v=spf1 ip4:210.114.223.175 ~all”
IN A 210.114.223.175 ;
www IN A 210.114.223.175 ;
ns IN A 210.114.223.192 ;
mail IN A 210.114.223.175 ;
m IN A 210.114.223.175 ;
* IN A 210.114.223.175 ;
###############################
마지막으로 방화벽 정책을 추가하도록 하자. 방화벽은 리눅스의 절대강자 인 iptables 이다.
vi /etc/sysconfig/iptables
-A INPUT -m state –state NEW -m tcp -p tcp –dport 53 -j ACCEPT
-A INPUT -m state –state NEW -m udp -p udp –dport 53 -j ACCEPT
위의 그림은 설치가 완료되고 난 이후에 최종적으로 bind 서비스가 정상구동하는지 확인한 부분이다. 실행파일인 named 가 서비스 올라가져 있으면 성공이다.
/etc/init.d/named start
3. DNS 서버 구축 후기
DNS 서버 설치를 해보았다. 개인서버를 운영할 경우에는 이런 방법은 솔직히 얘기해서 비추천한다. 이유는 안정적이지 못하기 때문이다. DNS 공격을 당할 경우도 있고, 불안불안한 서버에 구축을 해봤자 더 큰 문제가 발생할수 있다.
이 때문에 공식적으로 도메인 네임서버 변경 을 도와주는 사이트에 가입해서 DNS 를 추가하는것이 가장 좋다.