강좌
클라우드/리눅스에 관한 강좌입니다.
리눅스 분류

홈 네트워크를 위한 DNS I, II

작성자 정보

  • 웹관리자 작성
  • 작성일

컨텐츠 정보

본문

icon01.giftitle32.gif

홈 네트워크를 위한 DNS (DNS for the Home Network)

윤봉환 / el@linuxlab.co.kr

 

Disclaimer :

이 기사는 단행본, 하우투 문서들, 맨 페이지, 유즈넷 뉴스그룹, 그리고 셀 수 없는 시간을 키보드와 씨름하며 수집한 정보를 제공한다.  이는 모든 주제에 대해 통달했다는 것을 뜻하지는 않지만, 초급자가 중급 사용자가 되는 발판이 될 것이다.  모든 예제들은 우리 홈 네트워크로부터 그대로 가져왔으므로 우리가 아는 한 잘 동작한다.

 

이 가이드를 어떻게 사용할까 :

·[Enter] 처럼 각 괄호에 담긴 단어들은 키보드에서 그 키를 누르거나 마우스
  1번 버튼을 누르라는 뜻이다.
·{your name here}처럼 구불구불한 괄호안에 담긴 단어들은 사용자가 입력
  해야 할 “진짜” 데이터에 대응하는 데이터를 뜻한다.
·이택릭체로(기울어진) 쓰여진 텍스트는 사용자 자신이 셸 프롬프트에 써 넣어
  야 할 명령을 뜻한다.

 

필요한 조건 :

이 가이드는 당신이 bind v8.2를 설치했으며, 당신이 등록되어 있는(legal)
도메인 이름을 선정했고, 당신이 인터넷으로부터 자신의 머신을 “숨기기”위해 IP 매스커레이드를 사용하고 있다고 가정한다.  만약 당신이 bind v4.x를 사용하고 있다면 업그레이드하거나(버전 4.x에는 몇 가지 보안상의 문제가 있다)
제대로 적용되지 않을 것이므로 이 문서를 사용하지 않는 것이 좋겠다.

*주의
- 대부분 배포판들은 bind의 세 가지 패키지를 가진다.
- 당신이 원하지 않는 단 하나는 “caching-only” 버전이다.

 

DNS는 무엇인가?  

DNS는 Domain Name System을 나타내고 실제로는 프로토콜이다. 당신이 사용할 프로그램 Bind(Berkeley Internet Name Domain)는 서버와 클라이언트 양 쪽에서 DNS를 실제로 구성하는 도구이다.  DNS는 이름들을 사람들이 사용하는 문자-숫자(alpha-numeric) 이름을, 컴퓨터 프로그램이 사용하는 ip 주소로 번역한다.  예를 들어 www.netscape.com은 207.200.75.200으로 번역한다.

 

왜 자신만의 DNS 서버를 가지는가?  

당신은 자신의 DNS 서버를 가지지 않고도 당신의 ISP에서 제공하는 DNS 서버를 사용하면 살아남을(survive) 수 있다.  당신 자신의 서버를 사용해서 이름을 찾는 속도를 높이며, 당신이 새로운 컴퓨터를 추가하고, 당신의 홈 네트워크가 더 멋지게 동작하도록 센드메일을 허용하는 등 당신의 네트워크를 설정하는 데 소비하는 시간을 최소화한다  그리고 주말을 보낼 좋은 계획을 선사한다.

 

누가 지금 당신에게 DNS를 제공하는가?

아마 당신의 로컬 ISP는 당신에게 DNS를 제공할 것이다.  다음 예제를 따라 하면 우리의 가정들을 확인할 것이고, 설치 후에 당신의 DNS를 테스트하기 위한 기초를 제공한다.  
당신의 ISP에 연결하고 터미널 윈도우에 아래 명령들을 써 넣는다.

nslookup[Enter]
Default Server: {your ISP’s DNS name will show here}
Address: {your ISP’s DNS server IP address here}

Now type this in to see dns work:
>www.tux.org

Non-authoritative answer:
Name: gwyn.tux.org
Address: 207.96.122.8
Aliases: www.tux.org
>exit [Enter]

 

중요한 노트 - 매스커레이딩

매스커레이딩을 설정하지 않고 당신 자신의 개인적인 DNS 구성은 생각조차 해서는 안된다.(또는 실제 아이피 주소와 등록된 네트워크 이름 없이!)  그렇지 않다면 시스템이 헝클어지고, 아마 그 아이피를 가진 진짜 주인으로부터 어떤 험악한 이메일을 받게 될 지도 모른다.  매스커레이딩은 ip 주소가 무엇이든, 당신 자신의 개인적인 네트워크에 당신이 원하는 이름을 사용할 수 있도록 허용하고, 네트워크를 통해 인터넷에 유효한 ip 주소로 연결할 수 있도록 가장한다.

 

DNS 설치 :

당신은 DNS를 작동하기 위해 bind 프로그램을 설치해야 한다. 내 홈 네트워크 설정에서는, kulai.org는 내 도메인이다. 내가 매스커레이드를 사용한 이래, kulai.org는 어떤 목록에도 오르지 않았고, 나 또한 이 이름을 아무 곳에도 등록하지 않았다. 당신의 도메인 이름을 정했다면, 아직 등록된 것이 아니거나, 또는(이미 등록된 것이라면) 결국 엉망진창으로 만들고 말 것이다.  당신은 whois 프로그램을 사용해서 당신의 도메인이 벌써 등록된 것이 아닌지 검사해야 한다. 예를 들어, 네트워크에 연결된 동안:

whois  kulai.org [Enter]

그리고 나는 잡다한 출력물 끝에 다음 메시지를 돌려 받았다:

No match for “ KULAI.ORG”.

이 기사(article)를 쓰는 동안 나는 내 컴퓨터들을 사용할 것이다.  그들은:

 

master.kulai.org

192.168.124.10

linux only, the server

ic.kulai.org

192.168.124.1

linux and win98

fserver.kulai.org

192.168.124.11

freebsd only

phillip.kulai.org

192.168.124.20

win98 only

 

당신의 DNS를 설정하자 :

당신이 만들어야 하는 파일은 다섯 개이다. 이들 파일은 일반적인 텍스트파일로 당신이 좋아하는 에디터로 만들면 된다.  당신은 이 기사에서 제공되는 아래 예제로부터 복사하고, 붙여도 된다 - 다만 이름과 IP 주소는 당신의 것으로 바꾸어야 한다! 이들 파일들은 매우 특별한 문법을 가지는데 - 매우 조심스럽게 그들을 편집해야 한다.

/etc/named.conf
/var/named/db.cache
/var/named/db.kulai.org  (where kulai.org is my domain)
/var/named/db.124.168.192
(where my network is 192.168.124.0)
/var/named/db.127.0.0 

 

<경고 >

당신의 DNS가 설정되는 동안, /etc/resolv.conf 파일의 이름을 바꾸지 않고 절대 당신의 서버를 리부트하지 않는다. 부트가 끝나면, 이 파일의 이름을 다시 /etc/resolv.conf로 바꾼다. 좋지 않은 역(reverse) DNS는 부팅자체를 방해할 수 있기 때문에, 부트하고 망가진 곳을 고쳐야 한다.  문제로부터 보호하는 것은 - 이름바꾸기 이다.

또한, 당신의 /etc/nsswitch.cnf 파일을 점검해야 한다.  
“hosts”라인은 “hosts: files dns”라 되어 있어야 한다.  
이것은 시스템이 호스트이름을 해석할 때, 아무리 해도 동작하지 않는 DNS에게 묻는 대신 먼저 /etc/hosts 파일에서 찾아보도록 만든다.  만약 당신이 NIS(Network Information System)을 사용한다면, 그 줄은 “hosts: files nis dns”가 될 것이다.

 

시작하기 :

위에 설명된 파일들을 만들고 나서, 당신의 /etc/resolv.conf
파일을 편집하여 단지 당신 자신의 네임서버 목록만을 가지도록 한다.

search kulai.org
nameserver 192.168.124.10

주의>
/etc/resolv.conf는 bind 8.* 프로그램에 필수적이다.
다음과 같이 쓴다.

tail -f /var/log/messages [Enter]

이제 당신은 named 데몬이 시작할 때 어떤 에러 메시지도 감시할(monitor) 수 있다.  다른 윈도/콘솔을 열고 다음과 같이 쓴다:

/usr/sbin/ndc start [Enter]
(or for Redhat users: /etc/rc.d/init.d/named start )

당신의 /var/log/messages 파일은 아래처럼 named와 끝에 대한 항목번호를 가져야 한다.

Jul 10 15:54:26 master named: named startup
succeeded
Jul 10 15:54:26 master named[3523]: Ready to answer
queries.

테스트하기 위해, 인터넷에 연결하고 “Who is providing your DNS now?” 섹션의 프로세스를 반복한다.  이렇게 하면 네임서버처럼 당신의 서버이름을 돌려줄 것이다.  당신이 자주 찾아가는 곳을 쓰고 그 ip 주소를 당신에게 돌려주는지 알아본다.

동작하지 않는다면 :

    1. named 데몬이 실행중인지 점검한다.
        ps ax|grep named [Enter]

    2. 다른 머신에서 서버에 ip 주소와 이름 모두로 ping을 보내본다.
        ping 192.168.124.10 [Enter]
        ping  master.kulai.org [Enter]

    3. 서버에 telnet으로 연결한다.  오래도록 연결해서 문제를 확인한다.

만약 모두 잘 된다면, 당신의 새로운 네임서버에 홈 네트워크 위의 컴퓨터들을 지정한다.

 

마지막 배려 :

우리는 당신에게 간단한 dns 서버를 구축하는 개략적인 방법을 주었다.  성공은 대개 더 큰 관심거리를 불러일으키므로 여기 더 배울 수 있는 곳을 몇 군데 소개한다.

The DNS HOWTO
DNS and Bind by O’Reilly
DNS - ZDNet Webopedia Definition and Links
Troubeshooters.com: DNS -- 지난 버전의 bind를 사용하는 이들을 위한 힌트도 포함한다.

Copyright ⓒ 1999, JC Pollman and Bill Mote
Published in Issue 44 of Linux Gazette, August 1999


icon01.giftitle40.gif

윤 봉 환 : el@linuxlab.co.kr

 

※ 이 글은 ‘99년 10월호 “홈 네트워크는를 위한 DNS” 기사의
    설정 파일 설명입니다.

 

FILE named.conf:

이 파일은 필요한 다른 파일들이 어디에 있는지 named에게 말해준다.

아래는 내 파일의 내용이다:
 

options {
directory “/var/named”;

forwarders {
216.116.0.4;
216.116.0.10;
};

};

zone “.” {
type hint;
file “db.cache”;
};

zone “kulai.org” {
type master;
file “db.kulai”;
};

zone “124.168.192.IN-ADDR.ARPA” {
type master;
file “db.124.168.192”;
};

zone “0.0.127.IN-ADDR.ARPA” {
type master;
file “db.127.0.0”;
};

 

zone이 4개 있다:

최 상위 zone - .
name-to-ip zone - kulai.org
ip-to-name zone - 124.168.192.IN-ADDR.ARPA
localhost zone - 0.0.127.IN-ADDR.ARPA

zone은 각각 다른 파일로 만들어진다.

directory: 당신의 파일들이 놓일 곳이다.

forwards: 인터넷상에서 DNS 서버의 ip이다.(거의 대부분 자신의 ISP에서 제공하는 DNS 서버를 사용한다) 기억할 것은, 당신 서버에서 운영되는 named는 당신의 컴퓨터들에 대해서만 유효하며, 다른 ip를 가져오려면 다른 서버로 가야만 할 것이다.

db.cache, db.kulai, db.127.0.0, db.124.168.192: 이 것들은 내 zone을 위해 스스로 만든 파일들의 이름이다: 당신이 원하는 다른 이름으로 바꾸어 사용할 수 있다

 

FILE db.cache:

이 파일 리스트는 최상위 도메인을 위해 유효한 네임서버들이다. 이 것을 가져오고 제대로 관리하기란 정말 수고스럽기 마련이지만, bind 버전 8에 따라나오는 “dig”라는 이름을 가진 프로그램이 모든 궂은 일들을 다 처리해준다. 당신의 db.cache 파일을 가져오려면, 인터넷에 시스템을 연결하고, 다음처럼 쓴다:

dig @e.root-servers.net . ns>/var/named/db.cache

이 파일은 최신 정보로 업데이트 되어야하므로, 이 문서에 그 내용은 담지 않는다 - 어떻게든 이 파일을 가져오는 것은 매우 쉽다. 이 파일은 항상 최신성을 유지해야 하므로 나는 cron을 이용해 매달 이 명령을 수행하도록 내 dns 서버에 설정해 둔다.

 

FILE db.kulai:

이 파일은 이름을  ip 주소로 바꾼다.

 

  @             IN      SOA     master.kulai.org.
jpollman.kulai.org. (
                        1;
                        10800;
                        3600;
                        604800;
                        86400 );

                  IN      NS      master.kulai.org.
master         IN      A       192.168.124.10

mail             IN      A       192.168.124.10
www            IN      A       192.168.124.10
news            IN      A       192.168.124.10

localhost       IN      A       127.0.0.1

fserver          IN      A       192.168.124.11
jc                 IN      A       192.168.124.1
phillip           IN      A       192.168.124.20

 

주: 이 파일을 만드는 데 가장 큰 골칫거리는, 꼭 필요한 마침표 하나를 빠트리는 것이다. 마침표는 “여기가 이름의 끝이다”라는 것을 의미한다. 마침표가 없다면, 도메인 이름이 뒤에 이어져 버리므로, master.kulai.org는: master.kulai.org.kulai.org가 될 것이다. 다시 말하면, 마침표는 절대주소와 상대주소를 구분한다.

@ 기본 도메인 이름을 짧게 쓴 것이다. 주의: @ 문자는 반드시 맨 꼭대기 줄에 빈 칸이 없이 맨 앞에 쓰여져야 한다.
master.kulai.org. 서버 이름이다.

jpollman.kulai.org. 실제로 편지를 받을 수 있는 전자우편 주소로 @ 대신에 마침표를 쓴다(@ 문자는 도메인 이름을 뜻하기 때문이다) 문제가 생겼다면 이메일을 보내 관리자에게 알린다.

모든 숫자들: 이 문서에서 사용한 숫자들은 인터넷상에 실제로 등록된 주소가 없을 때 사용한다. 이 숫자들을 바꾸고 싶다면, 레퍼런스를 읽는다 - 내 홈 네트워크에서 사용했을 때 쓸만했다.

IN NS: 이 줄은 master.kulai.org이 네임서버임을 named에게 알린다. 이 줄의 첫 부분은 반드시 비워두어야 하며(named가 kulai.org를 자동으로 넣는다), 줄 끝에 쓰여진 이름은 반드시 같은 파일 안에서 “IN A” 목록에 있어야 한다.

IN A: 이 줄들은 “name-to-ip”가 어떻게 연관되어 있는지 named에게 알려준다. 주의할 것은, 이름이 마침표로 끝나지 않았는데, 그 이유는 named 데몬이 자동으로 kulai.org(내 도메인 이름)을 그 끝에 붙여주기 때문이다. 내가 /etc/named.conf 파일에 zone “kilai.org”라고 써 두었으므로 named는 도메인 이름이 kulai.org라는 것을 알고 있다.

IN CNAME: 이전에는 같은 ip에 별명들을 붙여, 하나의 ip로 여러 개의 호스트이름을 추가사용하기 위해 쓰였다. 이제는 더 이상 필요 없는데 - 사실 이 것은 실망스럽다. 내 메일, 웹, 뉴스서버 등은 모두 master.kulai,org이다. 나는 단지 서버 이름만을 사용해 쉽게 설정한다. 예를 들어, master.kulai.org는 모든 서비스를 제공하지만 mail.kulai.org은 ISP들이 일반적으로 사용하는 방법이다. 주: 나는 ip 주소를 사용하고, 이름은 사용하지 않으므로 CNAME은 쓰지 않는다.

주의: 당신은 표준적인 컴퓨터 네트워크를 위해 서버리스트와 localhost 항목을 IN A 줄에 가지고 있어야 한다.

 

FILE db.124.168.192:

이 파일은 db.kulai와 짝을 이룬다.  ip 주소를 주면 컴퓨터 이름을 돌려 받는다.

 

        @       IN      SOA     master.kulai.org. jpollman.kulai.org. (
                                1;
                                10800;
                                3600;
                                604800;
                                86400 );

                IN      NS      master.kulai.org.
        10      IN      PTR     master.kulai.org.
        10      IN      PTR     www.kulai.org
        10      IN      PTR     mail.kulai.org.
        10      IN      PTR     news.kulai.org.
        11      IN      PTR     fserver.kulai.org.
        1       IN      PTR     jc.kulai.kulai.org.
        20      IN      PTR     phillip.kulai.org.

 

이 파일은 기본적으로 db.kulai 파일과 같은 구조를 가진다.

왼 쪽의 숫자들은(10, 11, 1, 20) ip 주소의 마지막 식별값이다. 예를 들어, 10이라는 숫자는: 192.168.124.10.으로 확장된다.
이 파일에서 IN A 대신에  IN PRT를 사용한 것에 주의한다.

 

FILE db.127.0.0:

named에게 localhost를 알려주는 간단한 파일이다.

 

@       IN      SOA     master.kulai.org.
jpollman.imcnet.net. (
                                1;
                                10800;
                                3600;
                                604800;
                                86400 );
         IN      NS      localhost.
1       IN      PTR     localhost.

 

이 파일은 수정 없이 모든 컴퓨터에서 동작할 것이다.

db.kulai 파일과 같은 구조이다.


관련자료

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

공지사항


뉴스광장


  • 현재 회원수 :  60,035 명
  • 현재 강좌수 :  35,798 개
  • 현재 접속자 :  113 명