웹마스터 팁

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되어 있다.

        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/


ns.dbakorea.pe.kr에서의 아파치설정은 다음과 같다.

    ServerName      dbakorea.pe.kr
    Redirect    /   http://www.dbakorea.pe.kr


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관련 쓸만한 명령들 command 설명 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 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를 다루자면 너무(?) 복잡해진다.
끝.

제목 글쓴이 날짜
[진자 유용한] www 자동으로 붙여주기 [6] Dopesoul 2003.05.24
[간단팁] 윈도우즈 2003 에서 mysql 사용할때.. [5] 오종선 2003.05.22
ie60이상버전의 개인정보기능으로 인한 서비스문제 [2] 날파리 2003.05.21
한컴 리눅스 2.2 apach php mysql phpmyadmin zeroboard 서버구축기 예전에 쓴글 약간 수정판 입니다. [6] 한돌 2003.05.19
IIS 5.0 WebDAV Buffer Overflow 취약점에 대한 공격빈도 증가 DearMai 2003.05.17
커널에러 복구 하기~~~ [5] 서인구 2003.05.11
윈도2000 서버에서 DNS 서버 운영하기 file DearMai 2003.05.10
apache 98 % 활용하기 ! (윈도우버젼) [13] 이성헌 2003.05.09
DNS서버 만들기 [4] 제르디스™ 2003.05.04
NSLOOKUP 으로 서브도메인과 메일서버 알아보기 [6] 환군+ 2003.05.02
MASQUERADE 클라이언트 IP 자동으로 부여해주기 [1] 엔포게이트 2003.05.01
MASQUERADE 클라이언트 컴퓨터 인터넷 되게..^^; [4] 김도진 2003.04.25
APM_Setup4에서 CGI 쉽게 설치하기 [3] RedEye 2003.04.14
(더 성공률 높은)Apache에서 ASP돌리기(초간다안!!) [6] okw1003 2003.04.09
mysqldump를 이용해서 원하는 조건의 record만 뽑아내기 [2] 겨울늑대 2003.04.08
mysql DB 주기적 자동 백업 하기 [8] 김령현 2003.04.04
md5 암호화 알고리즘을 488bit blf 알고리즘으로 바꾸기 [17] 김령현 2003.04.04
센드메일 에라타.. 선장 2003.04.01
특정 유저만 su root 허용 군고구마 2003.04.01
서버의 아파치보안 테스트 해보세요 [12] 김령현 2003.03.26