Admin/Linux 2010. 4. 16. 14:12

dns 셋팅

ex)www.abc.com 를  그냥 ex)abc.com 이렇게 입력했을때도 사이트로 이동하는 방법은?
네임서버 bind 라는 가정하에..
abc.com 의 존 화일을 abc.com.zone 이라고 한다면..
abc.com.zone 의 화일에서...

                IN      NS              ns1.abc.com(가정)
                IN      A              IP Addr <== 이 부분이 설정 되어 있어야 합니다.
                IN      MX      10      mail
ns1            IN      A              IP Addr
mail            IN      A              IP Addr
www            IN      A              IP Addr

만약 되어 있다면..
아파치 설정에서
ServerName abc.com
Redirect / http://www.abc.com/
하시면 됩니다.

+-------------------------------------------------------------------------------------------------
abc.com이 www.abc.com과 같은 IP에 설정이 제대로 되어 있다면, Apache 설정을 변경해 주셔야 합니다.
VirtualHost에서 ServerAlias 부분에 abc.com을 추가하면 됩니다.
--------------------------------------------------------------------------------------------------

dns 서버만들기
첫번째방법
부여받은 IP가 192.168.1.125이고 신청한 도메인이 linux.co.kr일 때 DNS서버 세팅하기
1. /etc/named.conf파일의 설정 : 이 파일에는 기본적으로 zone파일의 위치하는 디렉토리와 2개의
                                존파일이 선언되어 있는 데, 기본설정은 건드리지 말고 내용만 추
                                가해야 한다.
   zone "linux.co.kr" {                  // 사용하고자 하는 도메인을 선언한다.
         type master;                    // 기본 primary로 사용시에는 master로 선언한다.
          file "linux.zone";             // 사용하고자하는 zone파일의 이름을 선언한다. 물론 이
   };                                    //름은 임의로 선언한다. 여기서는 linux.zone이라고 함.

   zone "1.168.192.in-addr.arpa" {       // 부여받은 IP중 마지막 자리를 뺀 나머지를 역으로 선
           type master;                  //언한다. 물론 이 선언은 안해도 무방하나, nslookup명
           file "linux.rev";             //령등을 원할히 사용하려면 꼭 선언해야 한다. 역시 타
   };                                    //입은 maseter이고 zone파일의 이름은 임의로 linux.rev
                                         //라 함.
2. /var/named에 위치하는 zone파일의 설정
  (1) linux.zone파일의 설정
     @       IN      SOA     ns.linux.co.kr. root.linux.co.kr.  (  // 네임서버와 관리자의 메일
                                      2001071500 ; Serial       //을 설정한다. 꼭 도메인명 뒤
                                      28800      ; Refresh      //에 '.'를 표기한다.
                                      14400      ; Retry
                                      3600000    ; Expire
                                      86400 )    ; Minimum
                IN      NS      ns.linux.co.kr.
     linux.co.kr.           IN      A       192.168.1.125
                  IN      MX      10      linux.co.kr.        // 메일서버의 우선순위를 지정
     www.linux.co.kr.       IN      A       192.168.1.125
  (2) linux.rev 파일의 설정 : 설정안해도 무방하나 nslookup등의 명령을 사용하려면 필요하다.
     @       IN      SOA     ns.linux.co.kr. root.linux.co.kr.  (
                                           2001020201 ; Serial
                                           28800      ; Refresh
                                           14400      ; Retry
                                           3600000    ; Expire
                                           86400 )    ; Minimum
                   IN      NS      ns.linux.co.kr.
     125             IN      PTR     ns.linux.co.kr.    // 125는 부여받은 IP의 맨 마지막을 표
                                                        //기한 것이며. PTR은 리버스존에서 정의
                                                        //해주는 것으로 IP주소로 도메인을 변환
                                                        //할 때 사용한다.

실습2. 위의 설정에 추가로 linux.com이라는 도메인 추가하기
1. /etc/named.conf의 설정 : 현재 네임서버에서 사용하는 모든 도메인은 이 파일에 꼭 등록을 해야
                            한다. linux.com이라는 도메인을 사용하려면 당연히 이 파일에서 추가
                            하여 설정해야 한다.
  예1) zone파일을 공유한 경우
     zone "linux.co.kr" {
            type master;
             file "linux.zone";
     };
     zone "1.168.192.in-addr.arpa" {
             type master;
             file "linux.rev";      // 리버스존파일은 한 서버에 여러도메인을 사용하는 경우에도
     };                               //하나만 만들어 사용한다.

    zone "linux.com" {
          type master;
          file "linux.zone";        // 존파일은 만약 그냥 웹페이지만 공유할 경우에는 그냥 동일
    };                              //한 존파일을 사용해도 무방하지만, 별도로 2차도메인을 부여
                                    //하고자 할 경우에는 별도로 존파일을 생성해야 한다. 현재의
                                    //설정은 그냥 zone파일을 공유한 경우이다.
  예2) zone파일을 공유하지 않은 경우 : 각 도메인에 해당하는 2차도메인을 사용할 경우에는 새로운
                                      존파일을 생성해야 한다.
     zone "linux.co.kr" {
            type master;
             file "linux.zone";
     };
     zone "1.168.192.in-addr.arpa" {
             type master;
             file "linux.rev";
     };
     zone "linux.com" {
          type master;
          file "linuxcom.zone";   // 새로운 zone파일을 생성하였다.
     };
2. /var/named에 위치하는 zone파일의 설정 : 새로설정하는 도메인인 linux.com 도메인의 존파일을
                                           linuxcom.zone이라고 만들고, 리버스존파일은 하나만
                                           존재해야 하므로, 기존의 리버스존파일인 linux.rev
                                           파일에 linux.com도메인 관련된 세팅만 해주면 된다.
  (1)linuxcom.zone의 설정
   @       IN      SOA     ns.linux.com. root.linux.com.  (     // 네임서버를 별도로 구성함.
                                        2001071500 ; Serial
                                        28800      ; Refresh
                                        14400      ; Retry
                                        3600000    ; Expire
                                        86400 )    ; Minimum
                IN      NS      ns.linux.com.
   linux.com.              IN      A       192.168.1.125
                           IN      MX      10      linux.com.    // 메일의 우선순위지정
   www.linux.com.          IN      A       192.168.1.125
  (2)linux.rev파일의 설정
   @       IN      SOA     ns.linux.co.kr. root.linux.co.kr.  (
                                         2001020201 ; Serial
                                         28800      ; Refresh
                                         14400      ; Retry
                                         3600000    ; Expire
                                         86400 )    ; Minimum
                 IN      NS      ns.linux.co.kr.
   125             IN      PTR     ns.linux.co.kr.
   125             IN      PTR     ns.linux.com.     // 기존의 설정에 이 부분만 추가한다.
3. apache의 설정 : 웹서비스와 연계되므로 아파치의 환경파일인 httpd.conf에서도 설정해줘야 한
                   다.
          NameVirtualHost 192.168.1.125              // 이 부분에 사용하는 IP를 적는다.
          ------------------------------------
          <VirtualHost 192.168.1.125>
              ServerAdmin admin@linux.com
              DocumentRoot /usr/local/apache/htdocs
              ServerName www.linux.com
              ServerAlias linux.com www.linux.com    // 브라우저상에서 linux.com과 www.linux.
                                                     //com를 입력했을 경우에 웹페이지가 열리도
                                                     //록 설정. 만약 2차도메인이 전부 이 동일
                                                     //한 웹페이지가 열리도록 하려면 *.linux.
                                                     //com이라고 설정하면 된다.
          ErrorLog logs/linux-error-log
          CustomLog logs/linux-access_log common
       </VirtualHost>

(실습3) mybestone.com이라는 도메인으로 서버가 한 대 운영중이다. linux.mybestone.com
이라는 서브도메인(2차도메인) 을 부여하여 이 서버가 독자적인 IP를 가지고 있고, 웹서버
및 메일서버도 독자적으로 운영하려고 한다. 또한 이 서버의 서브도메인(3차도메인)도
가능하게 세팅하려고 한다. 설정하도록 한다.


(조건)
1. mybestone.com (주 도메인)
   IP 주소         : 192.168.0.3
   zone 파일       : mybestone.zone
   Reverse zone파일: mybestone.rev
2. linux.mybestone.com (서브 도메인)
   IP 주소         : 192.168.0.4

(설정)
(1) 주 네임서버(ns.mybestone.com)의 설정
  1) /var/named 디렉토리에 존재하는 mybestone.zone파일의 설정 추가
    linux            IN      NS      ns.linux
    ns.linux         IN      A       192.168.0.4
      => 첫번째줄의 설정을 풀어쓰면 다음과 같다.
        linux.mybestone.com.         IN       NS      ns.linux.mybestone.com.
        즉 linux.mybestone.com이라는 도메인의 네임서버를 ns.linux.mybestone.com이라는 것으로
       정한다는 뜻이다.
        두번째줄의 설정을 풀어쓰면 다음과 같다.
        ns.linux.mybestone.com.      IN       A      192.168.0.4
       즉, ns.linux.mybestone.com의 IP주소는 192.168.0.4라는 뜻이 된다.
   (참고) 단순히 2차 도메인 사용만 지정하려면
         linux             IN      A      192.168.0.4
         라고 한줄만 지정해도 된다.
  2) /var/named 디렉토리에 존재하는 mybestone.rev파일의 설정 추가
    linux            IN      NS      ns.linux.mybestone.com.
    4                IN      NS      ns.linux.mybestone.com.
(2) 서브 네임서버(ns.linux.mybestone.com)의 설정
  1) /etc/named.conf파일의 설정
    zone "linux.mybestone.com" {        // 위임받은 2차도메인 설정
          type master;
          file "linux.mybestone.zone";
    };

    zone "linux.0.168.192.in-addr.arpa" { // 위임받은 2차도메인의 역존 설정법
            type master;
            file "linux.mybestone.rev";
     };
  2) linux.mybestone.zone파일의 설정
    @       IN      SOA     ns.linux.mybestone.com. root.linux.mybestone.com.  (
                                     2001071500 ; Serial
                                     28800      ; Refresh
                                     14400      ; Retry
                                     3600000    ; Expire
                                     86400 )    ; Minimum
               IN      NS      ns.linux.mybestone.com.
    linux.mybestone.com.           IN      A       192.168.0.4
                 IN      MX      10      linux.mybestone.com.
    www.linux.mybestone.com.       IN      A       192.168.0.4
   3) linux.mybestone.rev 파일의 설정
     @       IN      SOA     ns.linux.mybestone.com. root.linux.mybestone.com.  (
                                           2001020201 ; Serial
                                           28800      ; Refresh
                                           14400      ; Retry
                                           3600000    ; Expire
                                           86400 )    ; Minimum
                   IN      NS      ns.linux.mybestone.com.
     4             IN      PTR     ns.linux.mybestone.com.
(3) httpd.conf파일에 설정한다.
   <VirtualHost 192.168.0.4>
       ServerAdmin root@linux.mybestone.com
       ServerName linux.mybesone.com.com
       DocumentRoot /usr/local/apache/html
       ErrorLog logs/linux.mybestone.com-error_log
       CustomLog logs/linux.mybestone.com-access_log common
   </VirtualHost>

+두번째방법

여기서는 간단히 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)

'Admin > Linux' 카테고리의 다른 글

리눅스에서 네트웍 설정하기  (0) 2009.05.16
시스템 서버용량 알아보기  (0) 2009.05.16
zendoptimizer설치하기  (0) 2009.05.15
데몬 demon  (0) 2009.05.15
SSH를 이용한 Secure FTP 구성하기  (0) 2009.05.15
포스팅 포스팅이 유익 하셨다면 Ctistory.com을 구독하세요->

Posted by phil
,