도메인 네임 서버 (DNS) 의 설정과 관리 > 리눅스 Tip

본문 바로가기
 

도메인 네임 서버 (DNS) 의 설정과 관리

페이지 정보

작성자 no_profile 차동박 쪽지보내기 메일보내기 자기소개 아이디로 검색 전체게시물 댓글 0건 조회 15,746회 작성일 08-05-13 17:14

본문

7.2. 도메인 네임 서버 (DNS) 의 설정과 관리

우리 회사에서는 리눅스를 DNS 서버로 사용하고 있다. 성능은 상상이상으로 뛰어나다. 이 섹션에서는 레드햇 배포판에서 표준으로 따라오는 BIND 8.x 를 이용하여 도메인 네임 서비스를 할 수 있도록 DNS 테이블을 설정하는 방법을 다룬다.

참고: 주의: 레드햇 5.1 과 그 이전 버전은 BIND 4.x 패키지를 사용하였는데 여기서 사용되었던 설정 파일은 약간 다른 형식으로 되어있다. BIND 8.x 는 BIND 4.x 보더 더 많은 기능을 제공하고 게다가 BIND 4.x 은 더 이상 개발되지 않기 때문에 BIND 패키지는 최근 버전으로 업그레이드하는 것을 고려하여야 할 것이다. 이럴 때에는 그냥 BIND RPM 패키지를 (RPM 유틸리티에 대한 상세한 내용은 10.1절 을 참조하시요) 설치하고 설정 파일을 새로운 형식으로 바꾸어 주기만 하면 된다.

다행히도, 기존의 BIND 4.x 설정 파일을 BIND 8.x 에 맞춰 바꾸는 것은 쉽다! BIND 에 딸려서 제공되는 문서 디렉토리 (예를 들어, BIND 버전 8.1.2 의 경우에는 ``/usr/doc/bind-8.1.2/'') 에는 ``named-bootconf.pl'' 라는 실행가능한 펄 프로그램이 있다. 시스템에 펄이 이미 설치되어 있다고 가정한다면, 설정 파일을 변환하기 위하여 그냥 이 프로그램을 이용하면 된다. 이 프로그램을 이용하는 방법은 (루트로서) 다음과 같이 타이핑하면 된다:

cd /usr/doc/bind-8.1.2
./named-bootconf.pl < /etc/named.boot > /etc/named.conf
mv /etc/named.boot /etc/named.boot-obsolete

이제 ``/etc/named.conf'' 라는 파일을 갖게 되었는데 이 파일은 BIND 8.x 와 "아무런 수정없이" 잘 동작할 것이다. DNS 테이블의 형식은 변하지 않았기 때문에, 기존의 DNS 테이블은 새 버전의 BIND 와 현재 그대로 동작한다.

리눅스에서 DNS 서비스를 설정하는데에는 다음과 같은 과정을 밟게 된다:

  1. DNS 서비스가 작동하게 하려면 ``/etc/host.conf'' 파일이 다음과 같이 되어 있어야 한다:

    # Lookup names via /etc/hosts first, then by DNS query
    order hosts, bind
    # We don't have machines with multiple addresses
    multi on
    # Check for IP address spoofing
    nospoof on
    # Warn us if someone attempts to spoof
    alert on

    스푸핑 탐지 기능을 추가하면 DNS 참조할 때 성능상의 약간의 (비록 무시할 수 있는 수준이지만) 저하를 가져온다. 따라서, 이런 것을 크게 걱정하지 않는다면 "nospoof""alert" 항목은 사용하지 않도록 하여도 된다.

  2. ``/etc/hosts'' 파일을 필요에 따라 설정한다. 전형적인 경우에 여기에 많은 항목을 넣을 필요는 없다. 하지만 성능의 향상을 위해서 (로컬 서버와 같이) 자주 엑세스되는 호스트는 DNS 참조를 하지 않도록 항목을 추가할 수 있다.

  3. ``/etc/named.conf'' 파일은 아래의 예에서도 볼 수 있듯이 DNS 테이블을 가리키도록 설정되어야 한다.

    참고: (주의: 여기에서 예로 든 IP 주소는 어디까지나 예시일 뿐이며 반드시 당신이 쓰는 주소로 바꾸어주어야 한다!):

    options {
    	// DNS tables are located in the /var/named directory
    	directory "/var/named";
    	// Forward any unresolved requests to our ISP's name server
    	// (this is an example IP address only -- do not use!)
    	forwarders {
    		123.12.40.17;
    	};
    	/*
    	 * If there is a firewall between you and nameservers you want
    	 * to talk to, you might need to uncomment the query-source
    	 * directive below.  Previous versions of BIND always asked
    	 * questions using port 53, but BIND 8.1 uses an unprivileged
    	 * port by default.
    	 */
    	// query-source address * port 53;
    };
    // Enable caching and load root server info
    zone "named.root" {
    	type hint;
    	file "";
    };
    // All our DNS information is stored in /var/named/mydomain_name.db
    // (eg. if mydomain.name = foobar.com then use foobar_com.db)
    zone "mydomain.name" {
    	type master;
    	file "mydomain_name.db";
    	allow-transfer { 123.12.41.40; };
    };
    // Reverse lookups for 123.12.41.*, .42.*, .43.*, .44.* class C's
    // (these are example Class C's only -- do not use!)
    zone "12.123.IN-ADDR.ARPA" {
    	type master;
    	file "123_12.rev";
    	allow-transfer { 123.12.41.40; };
    };
    // Reverse lookups for 126.27.18.*, .19.*, .20.* class C's
    // (these are example Class C's only -- do not use!)
    zone "27.126.IN-ADDR.ARPA" {
    	type master;
    	file "126_27.rev";
    	allow-transfer { 123.12.41.40; };
    };

    작은 정보: 팁: 위의 내용 중에서 allow-transfer 옵션에 주목하기 바란다. 이는 DNS 영역의 전달을 주어진 IP 주소로 제한한다. 앞의 예에서, 우리는 123.12.41.40 에 있는 (아마 우리 도메인의 보조 DNS 서버) 호스트에게만 영역 전달을 허용하고 있다. 만약 이 옵션을 빼먹는다면, 인터넷에 있는 임의의 사용자가 그러한 전달을 요청할 수 있게된다. 이렇게 해서 제공되는 정보는 스팸 메일을 보내는 사람이나 IP 스푸핑을 하는 사람들에 의하여 악용될 수 있으므로, 영역 전달은 보조 DNS 서버 아니면 루프백 주소 ``127.0.0.1'' 로만 제한할 것을 강력히 추천한다.

  4. 이제 ``var/named/'' 디렉토리에 있는 DNS 테이블을 세번째 단계에서 ``/etc/named.conf'' 파일에 설정한 내용에 따라 셋업할 수 있다. DNS 데이터베이스를 처음으로 설정하는 막중한 일로서 이 문서의 범위를 넘어선다. 참조할 만한 가이드라인이 온라인이나 인쇄된 책으로 몇가지 있다. 어쨌든 아래에 몇가지의 예를 제시하였다.

    ``/var/named/mydomain_name.db'' 전달 참조 파일에 들어 있는 항목의 예:

    ; This is the Start of Authority (SOA) record.  Contains contact
    ; & other information about the name server.  The serial number
    ; must be changed whenever the file is updated (to inform secondary
    ; servers that zone information has changed).
        @ IN SOA mydomain.name.  postmaster.mydomain.name. (
    	19990811	; Serial number
    	3600		; 1 hour refresh
    	300		; 5 minutes retry
    	172800		; 2 days expiry
    	43200 )		; 12 hours minimum
    ; List the name servers in use.  Unresolved (entries in other zones)
    ; will go to our ISP's name server isp.domain.name.com
    	IN NS		mydomain.name.
    	IN NS		isp.domain.name.com.
    ; This is the mail-exchanger.  You can list more than one (if
    ; applicable), with the integer field indicating priority (lowest
    ; being a higher priority)
    	IN MX		mail.mydomain.name.
    ; Provides optional information on the machine type & operating system
    ; used for the server
    	IN HINFO	Pentium/350	LINUX
    ; A list of machine names & addresses
        spock.mydomain.name.    IN A    123.12.41.40   ; OpenVMS Alpha
        mail.mydomain.name.     IN A    123.12.41.41   ; Linux (main server)
        kirk.mydomain.name.     IN A    123.12.41.42   ; Windows NT (blech!)
    ; Including any in our other class C's
        twixel.mydomain.name.   IN A    126.27.18.161  ; Linux test machine
        foxone.mydomain.name.   IN A    126.27.18.162  ; Linux devel. kernel
    ; Alias (canonical) names
        gopher	IN CNAME	mail.mydomain.name.
        ftp		IN CNAME	mail.mydomain.name.
        www		IN CNAME	mail.mydomain.name.

    ``/var/named/123_12.rev'' 역 참조 파일의 항목 예:

    ; This is the Start of Authority record.  Same as in forward lookup table.
        @ IN SOA mydomain.name.  postmaster.mydomain.name. (
    	19990811	; Serial number
    	3600		; 1 hour refresh
    	300		; 5 minutes retry
    	172800		; 2 days expiry
    	43200 )		; 12 hours minimum
    ; Name servers listed as in forward lookup table
    	IN NS		mail.mydomain.name.
    	IN NS		isp.domain.name.com.
    ; A list of machine names & addresses, in reverse.  We are mapping
    ; more than one class C here, so we need to list the class B portion
    ; as well.
        40.41	IN PTR    spock.mydomain.name.
        41.41	IN PTR    mail.mydomain.name.
        42.41	IN PTR    kirk.mydomain.name.
    ; As you can see, we can map our other class C's as long as they are
    ; under the 123.12.* class B addresses
        24.42	IN PTR    tsingtao.mydomain.name.
        250.42	IN PTR    redstripe.mydomain.name.
        24.43	IN PTR    kirin.mydomain.name.
        66.44	IN PTR    sapporo.mydomain.name.
    ; No alias (canonical) names should be listed in the reverse lookup
    ; file (for obvious reasons).

    다른 B 클래스 (126.27.* 과 같은) 주소를 매핑 시키기 위해서는 추가로 역 참조 파일을 만들 수 있으며 그 내용은 앞에서 본 것과 유사하다.

  5. named 데몬이 실행중인지 확인한다. 이 데몬은 대개 시스템이 부팅할 때 ``/etc/rc.d/init.d/named'' 파일에서 시작된다. 수작업으로 데몬은 시작 또는 중지시킬 수도 있다; 이를 위하여는 각기 ``named start'' 와 ``named stop'' 라고 타이핑하면 된다.

  6. DNS 테이블에 변화가 생길 때마다, DNS 서버는 ``/etc/rc.d/init.d/named restart'' 라고 타이핑하여 재시작되어야 한다. 새로 추가하거나 변경한 기계에 대하여 제대로 동작하는지 확인하기 위해서는 "nslookup" 와 같은 툴을 사용하면 된다.

DNS 서비스 설정에 대한 자세한 정보는 http://metalab.unc.edu/Linux/HOWTO/DNS-HOWTO-5.html 에 있는 ``DNS-HOWTO'' 가이드를 참조하면 된다.

댓글목록

등록된 댓글이 없습니다.

Total 138건 8 페이지
리눅스 Tip 목록
번호 제목 글쓴이 조회 날짜
12 no_profile 차동박 쪽지보내기 메일보내기 자기소개 아이디로 검색 전체게시물 15938 05-19
11 no_profile 차동박 쪽지보내기 메일보내기 자기소개 아이디로 검색 전체게시물 17508 05-15
10 no_profile 차동박 쪽지보내기 메일보내기 자기소개 아이디로 검색 전체게시물 15827 05-15
9 no_profile 차동박 쪽지보내기 메일보내기 자기소개 아이디로 검색 전체게시물 11929 05-13
열람중 no_profile 차동박 쪽지보내기 메일보내기 자기소개 아이디로 검색 전체게시물 15747 05-13
7 no_profile 차동박 쪽지보내기 메일보내기 자기소개 아이디로 검색 전체게시물 18087 05-13
6 no_profile 차동박 쪽지보내기 메일보내기 자기소개 아이디로 검색 전체게시물 17859 05-13
5 no_profile 차동박 쪽지보내기 메일보내기 자기소개 아이디로 검색 전체게시물 16960 05-13
4 no_profile 차동박 쪽지보내기 메일보내기 자기소개 아이디로 검색 전체게시물 15779 05-13
3 no_profile 차동박 쪽지보내기 메일보내기 자기소개 아이디로 검색 전체게시물 16856 05-13
2 no_profile 차동박 쪽지보내기 메일보내기 자기소개 아이디로 검색 전체게시물 18765 05-13
1 no_profile 차동박 쪽지보내기 메일보내기 자기소개 아이디로 검색 전체게시물 15134 05-13
게시물 검색