도메인네임 시스템 : DNS(Domain Name System)

인터넷을 랜투랜 또는 PPP로 연결할 때 필수적으로 지정하는 부분이 DNS서버 주소이다.

물론 쉘어카운트로 인터넷을 사용하는 경우는 DNS서버 주소를 지정하지 않지만, 이는 쉘어카운트의 경우 인터넷에 직접 연결되어있는게 아니라 쉘어카운트가 있는 유닉스 호스트의 주소를 공유하여 쓰기 때문이다.
즉, 유닉스 호스트에만 DNS 서버를 지정하면 되기 때문이다.

  1. DNS의 역할은 무엇인가?

    인터넷에서 사용하는 TCP/IP 프로토콜은 인터넷에 연결된 모든 컴퓨터에 다른 컴퓨터와 중복되지 않는 32bit의 주소를 부여하며, 이 주소는 또한 한 호스트에서 다른 호스트로 데이타가 이동하는 경로를 찾는데도 사용된다.

    따라서 tcp/ip 프로토콜을 사용하는 모든 프로그램 - telnet, ftp, http, finger 등 - 들과 라우팅 프로토콜 등도 오직 이 32bit 주소만을 인식하도록 되어있다.

    하지만 이주소를 이진법으로 표기하면 너무 길기 때문에 실제는 4개의 8bit로 끊은 다음 이를 10진 숫자로 표기한다.
    즉, 203.234.216.203 이런 식이다.

    한 숫자는 8bit이므로 최대가 255이다.
    즉, 255.255.255.255가 가능한 최대의 숫자이다.

    인터넷에서 다른 호스트를 연결하려면 반드시 위의 IP(Internet Protocol) 주소를 알아야 하는데 이는 숫자라 외우기가 쉽지 않다. DNS서버의 역할은 바로 외우기 쉬운 이름으로 위의 주소를 찾아주는 것이다.

    203.234.216.203 보다는 www.linuxlab.co.kr이라고 표시하는게 외우기 쉽기 때문이다.

    웹을 볼 때 PC에서 http://www.linuxlab.co.kr이라 입력하면 PC의 웹브라우저(네스케이프 등) 는 먼저 DNS서버에게 www.linuxlab.co.kr 이라는 도메인네임에 대한 IP 주소를 문의하여 이 주소를 가지고 상대 호스트를 연결하게 된다.

  2. 도메인네임 부여방법

    본인의 메일주소는 bae@www.linuxlab.co.kr이다
    여기서 도메인네임은 linuxlab.co.kr 이고 www은 호스트네임, 그리고 bae는 churl 호스트에 있는 본인의 계정명(account)이다.
    호스트네임과 도메인네임을 합한건 FQDN(Fully Qualified Domain Name) 이라 부른다.
    도메인네임중 맨 끝의 kr은 한국(Korea)을 의미하며 co는 대분류로서 회사(company)를 의미한다.
    대분류 중 go(government)는 정부, nm(network management)은 인터넷망 관리회사, ac(academy)는 학교, or(organization)는 비영리 기관이다.

    그러나 미국의 경우는 다르다. 미국은 자기들이 인터넷을 만들었다고 도메인네임에 국가이름을 넣지 않고 바로 끝에 대분류를 넣는다.
    com(company)
    gov(government)
    org(organization) 등이다

    알아야 할 사항은 끝이 com이라고 해서 그 호스트가 미국에 있는 것은 아니라는 점이다. 단지 미국에 있는 com을 관장하는 DNS서버에 등록되어 있다는 의미이다.
    우리나라에서도 미국에 등록만 하면 얼마든지 끝에 com이 들어가는 도메인네임을 받을 수 있다. 하지만 미국에서는 도메인네임을 돈을 받고 판다. 판다기보다 관리비를 받는다. 비용은 연간 100달러이다.
    따라서 돈만 내면 원하는 도메인네임을 가질 수 있다.

    얼마전에 현대에서 미국에 도메인네임으로 hyundai.com을 신청했는데, 그 이름을 이미 미국의 어느 개인이 사용중 이어서 양도를 받으려 하니 1억원을 요구해서 포기했다는 이야기가 있다.

    co.kr을 관장하는 DNS서버는 한국전산원에서 운영하고 있는데 도메인네임을 부여하는데 아직은 돈은 받지 않고 있다. 하지만 개인에게서는 도메인네임을 신청받지 않고 인터넷 서비스 업체(ISP:Internet Service Provider)를 통해서만 신청을 받는다.

    *. 참조

    인터넷에 직접 연결되어 있다는 것과 인터넷을 사용 가능하다는 건 개념이 다르다.
    인터넷에 직접 연결된 경우는 반드시 인터넷에서 부여한 정식 IP Address가 필요하지만(PC도 마찬가지다.) 파이어월 내부 랜에서 proxy 서버를 통해서 인터넷을 사용하는 경우는 인터넷의 정식 어드레스가 필요없고 단지 해당 네트웍에서 임의로 부여하는 내부 어드레스만 필요하다.

    proxy 서버를 통해 인터넷을 사용하는 경우는 proxy 서버에 따라 약간 차이가 있지만, 인터넷의 상당수 서비스를 사용할 수 없다.
    예를 들면 인터넷 폰이나 리얼오디오, SeeYouSeeMe, IRC, telnet 등은 proxy 서버를 통해 인터넷을 사용하는 경우는 실행되지 않는다.

    우리나라의 일부 싸구려 인터넷 서비스 업체에서 proxy 서버를 쓰고 있다. 즉, 싼게 비지떡인 셈이다.

    그 서비스업체에서 proxy 서버를 쓰는지는 간단히 알 수 있다.
    netscape에서 option -> network preference에서 proxy 난에 proxy 서버 주소를 넣어야 인터넷을 사용할 수 있다면 그 업체는 proxy 서버를 채택하고 있는 것이다.

  3. DNS의 구조

    DNS는 분산형 계층구조로 구성되어 있다.
    즉, 제일 상위의 DNS서버에서부터 점차 하위의 DNS서버로 검색범위를 좁혀가는 방법을 쓴다.
    예를들어 www.microsoft.com이라는 주소를 찾으려면 먼저 com을 관장하는 DNS서버에서 microsoft를 관장하는 DNS서버의 주소를 찾아내고 microsoft를 관장하는 DNS 서버에서 www라는 호스트의 주소를 찾는 방법이다.
    따라서 한개의 DNS서버에는 하위의 DNS서버 주소나 자신이 관장하는 호스트의 주소만 등록하면 되므로 많아야 몇 천개의 주소만 등록하면 되고 전세계의 모든 호스트에 대한 주소를 가질 필요가 없다.

  4. DNS서버의 설치

    DNS서버는 상당히 많은 호스트를 갖고 있는 경우가 아니면 별로 설치의 필요가 없다.
    즉, 모든 ISP들은 DNS서버를 운영하므로 ISP의 DNS서버를 이용하면 된다. 하지만 자신이 직접 DNS서버를 설치하려면 우선 DNS서버는 두 대를 운영하여야 한다. 왜냐하면 DNS서버가 다운되면 그 DNS서버에 등록된 모든 컴퓨터의 인터넷 사용이 중단되기 때문이다.

    DNS서버는 거의 대부분 유닉스 기종에 설치되나 소규모의 도메인에서는 NT를 사용하기도 한다. 윈95나 도스에는 DNS서버를 설치할 수가 없다.
    이는 DNS서버는 동시에 많은 컴퓨터의 조회에 응답해야 하므로 멀티유저를 지원하는 운영체제에서만 가동되기 때문이다.
    또, DNS서버는 반드시 상위 DNS서버에 등록하여야 작동한다. 물론 인터넷과 연결되어 있는 경우이다.

  5. DNS 서버 프로그램

    아래 예는 본인의 집에 있는 486 pc(운영체제는 리눅스)에 DNS를 설치한 예이다.

    참고로 이 서버를 인터넷과 연결하는데 소요되는 비용은 월 25,000원이다. 전용선이므로 24시간 인터넷 사용이 가능하고 별도의 전화비도 들지 않는다.
    또, 정식 IP 주소도 부여되므로 각종 인터넷서버도 구축할 수 있다.

    연결방법은 OS동우회 랜 강좌/정보 난에 본인이 3회에 걸쳐 쓴글이 있으니 참고 하기 바람.

    *. 아래 예는 www.worldline.co.kr 에서의 예임.
    이주고는 예전에 본인이 인터넷 서버에 사용하였음.

◈ DNS서버 설치 절차

  1. 유닉스에서 DNS서버 프로그램은 BIND라고 불리며 데모 프로그램은 named이다.

    리눅스의 경우는 named는 /usr/sbin에 위치한다. 하지만 배포본에 따라서는 bind가 설치되지 않은 경우가 있으므로 debian의 경우는 dselect 프로그램을 써서 bind를 설치해야 한다.

  2. named가 가동시 처음 찾는 파일은 /etc/named.boot이다.

    아래에 named.boot 파일 내용이다.
    ( ; 은 주석문이다)

     

    ;
     
    ; named.boot
     
    ;
     
    directory                /var/named
     
    cache                    .                          root.cache
     
    primary                  0.0.127.in-addr.arpa       world.local
     
    primary                  worldline.co.kr            world.hosts
     
    primary                  216.234.203.in-addr.arpa   world.rev
     

    여기서 directory /var/named는 DNS서버가 이후에 찾는 파일들이 위치하는 디렉토리이다.
    (즉 root.cache world.local 등은 파일 이름이다.)

    두번째의 cache . root.cache 는 루트DNS서버의 IP address를 저장하는 파일이다. 루트 DNS는 자주 바뀌지 않으므로 캐쉬에 넣어 즉시 참조할 수 있게 하기 위함이다.

    혹시 인터넷과 연결 안된 네트웍에서 DNS를 설치하려면 자신의 domain에 대한 cache를 넣고 루트캐쉬는 없애야 한다.

    세번째 줄은 localhost(127.0.0.1)에 대한 DNS 참조를 위한 설정 파일이고 네번째가 worldline 이란 도메인의 호스트들을 등록하는 파일이며, 마지막은 ip address로 도메인네임을 알아낼 때 필요한 파일이다.

  3. world.local

     

    ;
     
    ; world.local
     
    ;
     
     
     
    @               IN      SOA     churl.worldline.co.kr. root.worldline.co.kr. (
     
                                    2       ; Serial
     
                                    28800   ; Refresh
     
                                    7200    ; Retry
     
                                    604800  ; Expire
     
                                    86400)  ; Minimum TTL
     
                            NS      churl.worldline.co.kr.
     
    1                       PTR     localhost.
     
  4. world.hosts

     

    ;
     
    ; world.hosts
     
    ;
     
     
     
    @       IN        SOA     churl.worldline.co.kr.  root.worldline.co.kr. (
     
                              199611302       ; serial, todays date + todays seri
     
                              28800           ; refresh, seconds
     
                              7200            ; retry, seconds
     
                              3600000         ; expire, seconds
     
                              86400 )         ; minimum, seconds
     
                      NS      churl.worldline.co.kr.
     
    churl   IN        A       203.234.216.203
     
    churl   IN        MX      10 churl.worldline.co.kr.   ; Primary Mail Exchange
     
    localhost         A       127.0.0.1
     
    www               A       203.234.216.193
     
    churl             A       203.234.216.203
     
    sunglim           A       203.234.216.199
     
    netmate           A       203.234.216.205
     
    sujung            A       203.234.216.201
     
  5. world.rev

     

    ;
     
    ; world.rev
     
    ;
     
     
     
    @               IN      SOA     churl.worldline.co.kr. root.worldline.co.kr. (
     
                                    2       ; Serial
     
                                    28800   ; Refresh
     
                                    7200    ; Retry
     
                                    604800  ; Expire
     
                                    86400)  ; Minimum TTL
     
                            NS      churl.worldline.co.kr.
     
    193                     PTR     www.worldline.co.kr.
     
    199                     PTR     sunglim.worldline.co.kr.
     
    201                     PTR     sujung.worldline.co.kr.
     
    203                     PTR     churl.worldline.co.kr.
     

 

최종 갱신일 1997/06/05