웹마스터 팁

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를 다루자면 너무(?) 복잡해진다.
끝.

제목 글쓴이 날짜
MS홈에 쓰이는 오른쪽메뉴 툴바 [13] file Kortion 2003.02.22
두군데 IFRAME 위치에 내용 동시출력하기-프레임에도 가능 [4] 깜보 2003.02.22
슬라이딩 Layer ( 옆에 메뉴 보이시죠, 비슷꾸리한거 ) [8] 이남두 2003.02.26
즐겨찾기 추가하기 [3] file 라엘 2003.03.01
자바스크립트로 쪼물딱 거리는 배경 이미지 [3] 미친개 2003.03.02
허접하나마... 플래쉬와 동영상 받는 소스... [2] 꽃ちゃん 2003.03.04
다음 로그인 폼 입니다... 로그인후 원하는 곳으로!! [3] 정성교 2003.03.05
자바스크립트로 만든 로또추첨기~ ^^ 행복한고니 2003.03.05
주민등록번호를 받아 자동으로 폼에 생일, 성별 체크해주기 [4] jugug 2003.03.06
[re] 비밀번호 실시간(?) 확인 스크립트;;; 개인적으로 수정 [2] 아이쿠 2003.03.15
비밀번호 실시간(?) 확인 스크립트;;; [11] Zective 2003.03.09
자바 스크립트 소스 올릴때 예제 쉽게 보이기 [2] xcool 2003.03.12
비밀번호 실시간 확인 스크립트 - 제로보드 응용버전 [2] 세죠위그이 2003.03.14
그림을 생성시키는 듯한 효과의 스크립트 [5] 미친개 2003.03.17
주민등록번호로 자동으로 생일, 성별체크 [3] [포터]아렌티 2003.03.19
입력된 내용대로 출력하는 JS 소스코드 생성기 [1] xcool 2003.03.25
무료로 컵받침을 만들어주는 스크립트... -_-;; [18] 행복한고니 2003.03.25
책갈피로 띄운 새창내용 바로가서 보기 RedEye 2003.03.27
[초보 강좌] 쉬운 사칙연산을 하여보자 첫번째 [3] ZipShin 2003.03.27
엔지오식 좌측이동메뉴 레이어 가운데기준정렬 [11] 스티치 2003.03.29