질문&답변
클라우드/리눅스에 관한 질문과 답변을 주고 받는 곳입니다.
리눅스 분류

DNS서버 만들기

작성자 정보

  • 관리자 작성
  • 작성일

컨텐츠 정보

본문

DNS서버 만들기



여기서는 간단히 1개의 primary 서버만을 DNS로 만들기로 한다.
즉, secondary server는 설명하지 않겠다.
DNS와 아파치에 연관된 작업등 실제 서비스에 필요한 것들을 정리해보았다.

DNS에 관한 자세한 설명을 보려면 김승영씨가 쓴 Powered by DNS를 보라

DNS를 꾸미기 위해 일단 BIND(Berkeley Internet Name Domain)를 가져온다.
바이너리를 가져와 설치해도 되지만, 나의 경우 소스를 가져와 컴파일하기를
좋아한다. 이번 경우도 예외없이 소스를 가져와 컴파일했다.

http://www.isc.org로 가서 bind의 최신 버전을 가져온다.
이 곳은 뉴스서버에 쓰이는 INN도 있는 곳이다.
이 시점(2001-03-26)에서 최신버전은 BIND Version 9.1.1rc6 이다.

소스를 풀고 컴파일을 한다.

tar xvzf ..
configure --prefix=/usr/local/dns
make
make install

보통 bind의 설정파일은 /etc에 named.conf로 존재하나, 우리는 configure시에 prefix를 주어 bind가
설치되는 곳을 지정한 관계로 /usr/local/dns/etc/named.conf에 있다.

여기서부터가 실제 핵심이다.
dbakorea.pe.kr 도메인을 등록할 것이다.
그러기 위해서 일단 도메인을 등록한 곳(krnic(www.nic.or.kr), whois(whois.co.kr))에 name server로
bind를 설치한 서버의 IP주소로 지정한다.

나의 경우, bind를 설치할 IP는 211.43.134.240이 된다.
참고로 이 서버는 ssh, iptables로 필터링을 한다.

설정파일(named.conf) 설정
이 설정파일은 다른 설정파일(zone파일..)을 위한 설정의 시작점이 된다.
/usr/local/dns/etc디렉토리는 존재하지 않으므로 만들어 준다.

[root@ns /etc]# mkdir /usr/local/dns/etc
[root@ns /etc]# cd /usr/local/dns/etc
[root@ns etc]# l
total 1
-rw-r--r--    1 root     root          733 Mar 25 11:08 named.conf
[root@ns etc]# cat named.conf
//dbakorea.pe.kr 설정파일(named.conf)
options {
        directory "/var/named"; // zone파일이 위치하는 디렉토리
        dump-file "/var/tmp/named_dmp.db";
        statistics-file "/var/tmp/named.stats";
        pid-file "/var/run/named.pid";
        allow-transfer { 211.43.134.102; };     // zone transfer 금지(이곳엔 zone-transfer를 허용할 주소를 적어준다)
};
logging {
        category lame-servers { null; };
        category notify { null; };
};

zone "." IN {
        type hint;
        file "named.root";
};

zone "0.0.127.in-addr.arpa" IN {
        type master;
        file "zone-0.0.127.in-addr.arpa";
        notify no;
};

zone "134.43.211.in-addr.arpa" IN {
        type master;
        file "zone-134.43.211.in-addr.arpa";
};

zone "dbakorea.pe.kr" IN {
        type master;
        file "zone-dbakorea.pe.kr";
};
[root@ns etc]#

위에서 보듯이 3개의 도메인이 있다.
각각은 하나의 파일에서 관리할 수도 있으나(웹호스팅 업체에선 유용하겠지..)
간단명료하게 각각의 도메인에 대해 zone파일을 만들었다.
named.conf의 설정은 /usr/local/dns/sbin/named-checkconf파일로 설정을
올바로 했는지 확인할 수 있다.

[root@ns etc]# named-checkconf /usr/local/dns/etc/named.conf
the default for the 'auth-nxdomain' option is now 'no'

무슨 메시지를 뱉는구만..
무시하고 진행하겠다.

/var/named디렉토리를 만들고 여기다 zone파일들을 작성한다.
[root@ns etc]# cd /var/named
[kang@ns named]$ l
total 6
-rw-r--r--    1 root     root         2769  3월 23 22:59 named.root
-rw-r--r--    1 root     root          265  7월  5 10:34 zone-0.0.127.in-addr.arpa
-rw-r--r--    1 root     root          275  7월  6 09:28 zone-134.43.211.in-addr.arpa
-rw-r--r--    1 root     root          741  7월 18 11:29 zone-dbakorea.pe.kr


간단히 zone-dbakorea.pe.kr만을 보겠다.
나머지들은 전부 zone파일들인데 named.root만이 다르다.
이 놈은 internic(ftp://ftp.rs.internic.net/domain)에서 받아와서 복사해줘야 한다.
사실 DNS를 갖춘 아무곳에서나 복사해와도 된다.
이름은 사이트마다 다를 수 있으나 named.conf에서 .에 대해 지정한 파일이다.

[root@ns named]# cat zone-dbakorea.pe.kr
$TTL    3600
@       IN      SOA             ns.dbakorea.pe.kr.      root.dbakorea.pe.kr. (
                                2001041100      ;Serial
                                84600           ;Refresh
                                1800            ;Retry
                                1209600         ;Expire
                                84600 )         ;Minimum

        IN      NS              ns.dbakorea.pe.kr.
        IN      NS              ns2.dbakorea.pe.kr.
        IN      A               211.43.134.240

        IN      MX      10      mail

mail    IN      A               211.43.134.240
ns      IN      A               211.43.134.240
ns2     IN      A               211.43.134.240
ftp     IN      A               211.43.134.240
www     IN      A               211.62.43.45

[kang@ns named]$ cat zone-0.0.127.in-addr.arpa
$TTL    3600
@       IN      SOA             ns.dbakorea.pe.kr. kang.dbakorea.pe.kr. (
                                2001070500      ;Serial
                                21600           ;Refresh        ( 6 hours )
                                1800            ;Retry          ( 30 minutes )
                                1209600         ;Expire         ( 14 days )
                                86400 )         ;Minimum        ( 1 day )
        IN      NS              ns.dbakorea.pe.kr.

1       IN      PTR             localhost.

[kang@ns named]$ cat zone-134.43.211.in-addr.arpa
$TTL    3600
@       IN      SOA             ns.dbakorea.pe.kr. root.dbakorea.pe.kr. (
                                2001070600      ;Serial
                                21600           ;Refresh        ( 6 hours )
                                1800            ;Retry          ( 30 minutes )
                                1209600         ;Expire         ( 14 days )
                                86400 )         ;Minimum        ( 1 day )
        IN      NS              ns.dbakorea.pe.kr.

240     IN      PTR             ns.dbakorea.pe.kr.

위에서 www.dbakorea.pe.kr은 211.62.43.45 IP로 주소를 주었다.
211.62.43.45 IP에서의 apache의 설정파일에는 다음과 같이 www.dbakorea.pe.kr가
VirtualHost되어 있다.

<VirtualHost 211.62.43.45>
        ServerName      www.dbakorea.pe.kr
        DocumentRoot    /data/webhosting/dbakorea/
        CustomLog       /usr/local/apache/logs/www.dbakorea.pe.kr combined
        Alias           /cgi-bin/ /data/webhosting/dbakorea/cgi-bin/
</VirtualHost>

ns.dbakorea.pe.kr에서의 아파치설정은 다음과 같다.
<VirtualHost *>
    ServerName      dbakorea.pe.kr
    Redirect    /   http://www.dbakorea.pe.kr
</VirtualHost>

zone파일에 대한 설정을 체크하려면 named-checkzone을 이용하면 된다.
[root@ns conf]# named-checkzone /var/named/zone-dbakorea.pe.kr
OK

설정이 모두 끝났다면 쉘상에서 named명령으로 dns서버를 기동할 수 있다.
dns설정이 문제 있다면, named데몬이 뜨지 않는다.
ps명령과 /var/log/messages(linux의 경우)파일을 확인하여 설정이 제대로 된건지 파악하라.


DNS관련 쓸만한 명령들

host -l company.com (nslookup프롬프트의 ls)            : company.com이 가진 호스트목록
host -a company.com                                    : company.com의 zone파일 정보
nslookup -query=hinfo company.com                      : company.com의 name server 정보
nslookup -type=ns company.com (host -t ns company.com) : company.com의 name server
nslookup -type=mx company.com                          : company.com의 mail server
dig company.com. soa                                   : company.com의 SOA record출력


몇몇 사이트는 zone transfer를 보안상의 이유로 금지하므로
host -l, -a등의 명령은 refuse될 수 있다.
zone transfer의 금지는 다음과 같이 설정하면 된다.

named.conf
options {
        allow-transfer { 211.43.134.102; };
};

혹은,
zone “dbakorea.pe.kr”IN {
        type master;
        file “zone-dbakorea.pe.kr”;
        allow-transfer { 211.43.134.102; };
};
                    
설명이 좀 빈약하군..
너무 길어지면 지루할 수 있으므로, 이런 것도 좋을 수 있다는 생각이 든다.
DNS를 다루자면 너무(?) 복잡해진다.
끝.


This article comes from dbakorea.pe.kr (Leave this line as is)

관련자료

댓글 0
등록된 댓글이 없습니다.

공지사항


뉴스광장


  • 현재 회원수 :  60,031 명
  • 현재 강좌수 :  35,769 개
  • 현재 접속자 :  98 명