RSS구독하기:SUBSCRIBE TO RSS FEED
즐겨찾기추가:ADD FAVORITE
글쓰기:POST
관리자:ADMINISTRATOR
'dns'에 해당되는 글 2

출처 : 대전국제IT교육센터 정성재 강사

 

1. IP 주소와 도메인
  인터넷에 연결된 수많은 서버와 클라이언트 컴퓨터는 각자 고유한 IP주소를 가지고 있는데 이 IP는
오직 자기만의 주소이다. 주민등록번호가 다르듯이 IP주소도 똑같은 경우가 없다. IP는 숫자로 된
배열로 되어있는데(IP에 대해서는 네트워크 책 참조), 많은 수의 갯수를 외우기는 상당히 어렵다.
따라서, 알기 쉽게 등장한 것이 도메인 네임이다.

2. DNS서버에 대하여
우리는 흔히 특정한 사이트에 접속하기 위해 도메인이름을 입력한다. 그러나 실제적으로 인터넷은
IP주소기반이기 때문에 해당사이트의 IP주소를 알아야 한다. 이 때 우리가 이용하는 것이 네임서버
이다. 네임서버는 특정한 클라이언트로부터 특정한 도메인에 대한 요청이 왔을 경우 Root 네임서버와
다른 네임서버로 부터 정보를 얻어 요청한 도메인에 대한 IP주소를 알려주는 역할을 한다. 또한 각각
의 도메인네임서버들은 2차도메인도 부여하고, 다른 서버로부터 오는 도메인에 대한 요청도 응답한다.



3. DNS서버의 종류와 역할
(1) 설명: DNS서버는 크게 Primary서버, Secondary서버, Caching Only서버로 나뉜다. 자신의
          도메인을 가지기 위해서는 가장 기본이 되는 것이 Primary서버이고, Secondary서버 및
          Caching Only서버는 보조 및 백업 서버 혹은 속도를 빠르게 하기 위해서 필요한 서버이다.
          일반적으로 Secondary서버는 Primary 서버가 다운되었을 경우를 대비해 백업할 경우에
          사용하고,  Caching Only서버는 기간망간의 캐싱을 위해서 사용한다.
(2) 종류와 역할
   1) Primary Name Server: 도메인 네임서버 사용시에 꼭 구축해야 하고, 보통 Master DNS라고
                          부른다.
   2) Secondary Name Server: 주 도메인서버인 Master DNS의 백업을 담당하고 Slave DNS라고
                            부른다. 반드시 구축할 필요는 없다.
   3) Caching Only Server: 서버에 기록된 정보가 요청이 올 경우에 응답해주는 서버이다. 즉 한번
                          요청한 정보를 서버에 기록해 두었다가 다시 동일한 요청이 왔을 때 직접
                          조회하지 않고 바로 응답하도록 해주는 서버이다.

4. 네임서버 구축의 개요
(1) 개요: 네임 서버를 운영하기 위해서는 서버에서 도메인 네임 서비스를 수행하는 프로그램을 설
          치해야 한다. Red Hat은 BIND(Berkeley Internet Name Domain)이라는 DNS서버용
          소프트웨어(데몬)을 제공한다. 또한 이 네임서버의 데몬이름은 named이다.
(2) RedHat Linux와 rpm 패키지
   RedHat Linux는 3개의 rpm패키지로 제공한다. DNS 서버관련 패키지는 bind 및 bind-utils이고,
  기본 환경설정파일 관련 패키지는 caching-nameserver로 제공이 된다.
(3) bind관련 파일 및 디렉토리
   1) 주환경설정파일
     /etc/named.conf
      => named데몬이 작동할 때 처음으로 참조하는 파일로 환경설정과 밀접한 관련이 있다.
        이 파일에서는 도메인별 zone파일을 지정하는 역할을 주로 한다.
   2) 시스템 부팅시 자동 실행 스크립트 파일
     /etc/rc.d/init.d/named
      => named데몬을 실행시킴에 있어 최적화시킨 파일이다. 네임서버를 작동시키고 중단시킬 때
        사용한다. 보통 stop, start, restart, reload 등의 인자값을 사용하는데, DNS에서는
        restart하면 caching정보가 사라지므로, 보통 reload를 많이 사용한다.
   3) /var/named 디렉토리: 루트 도메인 서버에 대한 정보가 담긴 zone파일인 named.ca와
                          localhost에 대한 zone파일인 localhost.zone, reverse zone파일인
                          named.local 파일 등 도메인 설정을 위한 zone파일이 위치하는
                          디렉토리이다.
   4) localhost와 루트 네임서버 정보 데이터베이스파일
    ㄱ. /var/named/named.ca       : 루트(.) 네임서버에 대한 정보가 있는 데이터베이스 파일이다.
    ㄴ. /var/named/localhost.zone : 리눅스 시스템에 부여되는 호스트이름인 localhost에 대한
                                   zone파일로 일종의 sample파일이라고 보면 된다.
    ㄷ. /var/named/named.local    : localhost의 Reverse zone파일이다. Reverse zone파일 구성을
                                   위한 sample파일이라고 볼 수 있다.
(4) DNS 설정하기
   1) 설명: DNS설정에서 핵심은 named.conf파일과 존파일이다. 이 두 가지의 파일을 설정하면 된다.
           존파일의 이름은 관리자가 임의로 부여하여 사용할 수 있다. named.conf 파일이
           DNS설정의 뼈대이고, 실제 서버의 내용은 존파일에 기록한다.
   2) 역할
    ㄱ. /etc/named.conf: 서버에서 사용하는 도메인별로 존파일을 지정한다. 리버스존파일의 선언도
                        해준다.
    ㄴ. zone파일: named.conf파일에서 지정한 경로에 파일을 정해진 포맷으로 만든다. 이 존파일의
                 역할은 2차도메인 부여 등 사용하는 도메인에 대해 주 설정을 담당한다.

5. /etc/named.conf파일
(1) 파일의 구성과 특징
   1) 파일의 구성은 크게 주석문과 구문으로 구성되어 있다.
   2) 기본구문은 DNS서버 구동시 꼭 필요하므로 지우지 않도록 한다.
   3) 주석은 실제 내용의 설정과 관계없이 설명 등을 붙힐 때 사용한다. 주석은 C나 C++에서 사용하
     는 스타일과 같다.
      예) // => 한줄정도의 주석을 달 경우, 또는 '#'도 사용가능하다.
          /*  */  => 여러라인의 주석을 달 경우 사용한다.
   4) 각 설정은 세미콜론(;)으로 한다.
(2) 기본설정
    // generated by named-bootconf.pl
    options {
            directory "/var/named";
            /*
             * 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;
    };

    //
    // a caching only nameserver config
    //
    controls {
        inet 127.0.0.1 allow { localhost; } keys { rndckey; };
    };
    zone "." IN {
            type hint;
            file "named.ca";
    };

    zone "localhost" IN {
            type master;
            file "localhost.zone";
            allow-update { none; };
    };

    zone "0.0.127.in-addr.arpa" IN {
            type master;
            file "named.local";
            allow-update { none; };
    };
    include "/etc/rndc.key";
(3) Options
   1) 설명: 네임서버가 동작함에 있어 필요한 여러가지 설정을 하는 영역이다. 네임서버에 쓰이는
           존파일의 위치를 적는 directory 항목은 꼭 적어야 한다.
   2) 항목
    ㄱ. directory "/var/named";
         => 네임서버에서 데이터베이스 역할을 하는 존(zone)파일의 위치를 설정한다. 보통 기본값
           으로 /var/named 디렉토리가 지정된다.
    ㄴ. dump-file "/var/tmp/named_dump.db";
         => named는 정보가 갱신될 때 dump파일로 저장하는데 그 덤프파일이 생성될 위치와 파일명
           을 지정한다.
    ㄷ. statistics-file "/var/tmp/named.stats";
         => 네임서버의 통계를 낼 경우에 사용하는 옵션으로 메모리 통계 파일을 생성할 위치와
           파일명을 지정한다.
    ㄹ. forward (only|first);
         => 보통 forwarders 옵션과 함께 사용되며, only나 first 두 값 중 하나를 갖는다. only는
           자신에게 들어온 도메인 질의를 지정한 다른 서버로 넘기도록 하는 것으로 다른 서버가
           그에 대한 응답이 없을 경우 그 자신도 그 질의에 대해 응답하지 않을 경우에 설정한다.
           first는 타 서버에서 응답이 없을 때 자신이 응답하도록 할 때 설정한다.
    ㅂ. forwarders { 네임서버주소1; 네임서버주소2;....};
         => 도메인에 대한 질의를 다른 서버로 넘길 때 사용하는 옵션으로 복수 형태로
           지정가능하고 구분은 세미콜론(;)으로 한다.
    ㅅ. allow-query { 192.168.0/24; };
         => 네임서버에 질의할 수 있는 호스트를 지정한다. 위와 같이 지정하면 192.168.0.0 네트
           워크주소를 가진 호스트만이 질의할 수 있다.
    ㅇ. allow-transfer { 192.168.0/24; };
         => zone 파일의 내용을 복사할 대상에 제한을 걸 때 지정한다. 이 항목을 명기하지 않았을
          경우 기본적으로는 제한이 없다.
   3) 참고: ACL
    ㄱ. 설명: ACL이란 Access Control List의 약자로 여러 호스트를 하나의 명칭으로 지정하여
             사용하는 방법이다. allow-query나 allow-transfer 사용시 ACL을 이용하여 리스트를
             만든 후 사용가능하다.
    ㄴ. 사용예
        acl  "accesslist" { 192.168.0/24; 192.168.1.20; };
    ㄷ. 주의점: acl의 선언은 options {  }; 이전에 해야 한다.
   4) 사용예
     acl "member" { 210.96.52.100; 203.247.40/24; 211.58.96.100; };
     options {
             directory "/var/named";
             allow-transfer { 203.247.50/24; 203.247.51.30; };
             dump-file "/var/named/named_dump.db";
             statistics-file "/var/named/named.stat";
             forward only;
             forwarders { 203.247.32.31; };
             allow-query { 203.247.50/24; 203.247.51.33; member; };
     };
(4) zone 구문
   1) 설명: 실제적으로 도메인을 관리하는 데이터베이스파일인 zone파일을 지정한다. 이 zone구문
           은 크게 master, slave, hint(캐쉬서버)의 세가지 타입이 있다. 위의 예에서 보면
           zone "."이라는 항목이 있다. "."는 가장 상위도메인을 나타낸다. (참고로 말하면 원칙적
           으로 도메인을 칠때는 맨뒤에 "."을 붙여야 한다. 예를 들면 다음과 같이 "www.linux.co.
           kr."해야 한다. 그러나, 보통은 생략해서 사용해도 된다.) 도메인을 찾을 때는 가장 상위
           도메인서버에서 차례대로 트리구조형태로 찾는다. 또한 참조하는 파일인 named.ca는 일종
           의 캐시파일로서 인터닉(Internic)에서 배포하는 파일이므로 그 부분은 수정해서는 안된
           다. Reverse zone파일도 설정할 수 있다. Reverse zone 파일이란 IP를 도메인으로 변경하
           기 위해서 필요한 존파일이다. 몰론 설정안해도 무방하다. 또한 zone "0.0.127.in-addr.
           arpa"는 로컬호스트에서의 Reverse 파일에 관한 부분으로 이 부분 역시 설정그대로 둔다.
   2) 기본설정형식
     zone "도메인이름" {
       type (master | slave | hint);
       file "존파일이름";
       allow-update { none; };
     };
   3) 항목설명
    ㄱ. 도메인이름
      a. 설명: 일반적으로 해당 도메인이름을 적는다. 그 외에 "."은 캐시서버를 의미하고,
              리버스존파일의 선언은 "0.0.127.in-addr.arpa" 형태로 한다.
      b. 설정예
        1. zone "linux.co.kr"
        2. zone "50.247.203.in-addr.arpa"
    ㄴ. type
      a. 설명: type은 1차 네임서버와 2차 네임서버의 종류를 구분할 때 사용한다. 값에는master,
             slave, hint가 오는 데 이것은 DNS서버의 종류중에서 primary, slave, cache only
             서버를 뜻한다.
      b. 설정예
        1. type master;
            => Primary Name Server를 뜻한다.
        2. type slave;
           masters { primary_Name_Server_IP주소; };
    ㄷ. file
      a. 설명: 사용하고자할 존파일의 이름을 적는다. 보통 "도메인명.zone"으로 설정하고 리버스
              존파일인 경우에는 "도메인명.rev"로 설정한다.
      b. 설정예
        1. file "mybestone.zone";
        2. file "mybestone.rev";
    ㄹ. allow-update
      a. 설명: bind 9버전부터 등장한 항목으로 이 지시자는 아래의 Key설정영역과 함께 작동한다.
              역할은 Primary Name Server의 zone정보가 Slave Name Server에 업데이트될 때 사용
              한다. 이 지시자는 Primary Name Server와 Slave Name Server간에 인증을 위한 공유가
              설정되어 있어야 하고, 만약 공유키를 지정하지 않고, IP주소로 Slave Name Server를
              지정하고자 한다면 Slave Name Server의 IP주소를 적으면 된다. 물론 Slave Name Ser
              ver를 운영하지 않는다면 필요없는 항목이다.
      b. 설정예
        1. allow-update { key 공유키; };
        2. allow-update { 192.168.0.100; };
   4) 설정예:  도메인이 linux.co.kr이고, IP주소가 192.168.0.2인 경우
    ㄱ. zone파일지정(linux.zone)
       zone "linux.co.kr" {
              type master;
              file "linux.zone";
       };
    ㄴ. 리버스 zone파일지정
       zone "0.168.192.in-addr.arpa" {
             type master;
             file "linux.rev";
       };
(5) Key 설정 영역
   1) 설명: Bind 9 버전에 새롭게 추가된 보안 설정 영역으로 다른 서버에 존 설정관련 데이터들이
           전달될 때 서버 인증에 필요한 공유키를 설정하는 영역이다. 키 이름은 임의로 설정할 수
           있으나, 공유키 생성시에 지정한 키 이름과 같이 생성해야 한다. 역시 원격서버로 zone파
           일을 백업하지 않는다면 필요하지 않다.
   2) 기본구조
     key 키이름 {
           algorithm       알고리즘방식지정;
           secret          공유키값;
     };
      => bind 9에서는 HMAC-MD5알고리즘을 사용하고 공유키값은 dnssec-keygen이라는 것에 의해
        생성된다.
   3) 키생성
    ㄱ. 설명: Bind 9 에서는 RSA, DSA, HMAC-MD5 알고리즘중에서 HMAC-MD5만 지원한다. -a옵션으로
            알고리즘을 지정하고 -b 옵션으로 암호길이를 지정하면 된다. 최고 512bit로 지정할 수
            있다. -n HOST 뒤에 두 네임서버간의 공유키이름을 지정한다.
    ㄴ. 사용법
       dnssec-keygen -a hmac-md5 -b 128 -n HOST 키이름
    ㄷ. 사용예
       [root@www root]# dnssec-keygen -a hmac-md5 -b 128 -n HOST posein
       Kposein.+157+57372
       [root@www root]# ls K*
       Kposein.+157+57372.key  Kposein.+157+57372.private
        => 두 개의 키가 생성되는 데 두 키 가운데 하나를 선택하여 에디트하면 다음의 내용을 볼
          수 있다.
       [root@www root]# cat Kposein.+157+57372.key
       posein. IN KEY 512 3 157 6BPkem9J9/JOtfnWQ6Eahw==
        => 위의 내용을 편집해서 만들면 된다.
           key "posein" {
                 algorithm           "hmac-md";
                 secret              "6BPkem9J9/JOtfnWQ6Eahw==";
           };
(6) controls 설정 영역
   1) 설명: 이 영역은 rndc 유틸리티에 의해서 네임서버에 명령을 전달하여 네임서버를 구동시킬 때
           사용되는 제어 채널을 설정하는 부분이다.
   2) 기본구조
     controls {
        inet 127.0.0.1 allow { localhost; } keys { rndckey; };
     };
   3) 사용법
     inet 아이피주소 포트 allow { 허가주소; } keys { 키이름; };
   4) 사용예
    ㄱ. inet 127.0.0.1 allow { localhost; } keys { rndckey; };
      => 아이피주소 다음에 포트를 지정하지 않을 경우 기본값인 953으로 지정된다. allow 다음에
        설정한 localhost에서만 가능하고 키이름은 rndckey를 가진 경우에만 가능하다.
    ㄴ. inet * allow { any; } keys { key_list; };
      => *는 포트를 사용하지 않음을 나타내고, key_list라는 키를 가진 모든 호스트에서 가능하다.
(7) include "/etc/rndc.key" 설정 영역
    rndc라는 유틸리티의 접속을 위한 키설정부분이다. 이 내용은 /etc/rndc.key의 내용을 그대로
   가져와 control 영역의 키로 사용한다는 뜻이다.

6. 존(zone)파일
(1) 개요: 존파일은 /etc/named.conf의 정의하에 /var/named에 위치한다. /etc/named.conf에 정의된
          zone파일인 'named.ca', 'localhost.zone', 'named.local'는 BIND설치시 기본적으로
          제공해 주는 파일로, DNS 서버의 주 역할인 Resolving을 할 수 있도록 해주고(named.ca),
          개별 도메인 설정을 위한 샘플 파일같은 역할을 해준다.(localhost.zone, named.local)
          도메인을 설정하기 위해서는 zone 파일을 사용자가 지정해줘야 하는데, 임의로 생성하면
          된다. 예를 들면 linux.zone과 linux.rev 형태로 지정할 수 있는데, linux.zone파일은
          기본적인 도메인을 위해 필요한 것이고, linux.rev파일은 IP를 도메인으로 바꿔주는 역할
          (보통 Reverse라고 표현)을 하는 존파일이다. 물론 이 리버스 파일은 설정 안해도
          상관없다.
(2) 존파일의 역할: 사용하는 메인 도메인뿐만아니라, 2차 도메인을 관리하는 역할을 한다. 예를
                   들면 linux.co.kr이라는 도메인을 사용할 경우 2차도메인으로 game.linux.co.kr,
                   edu.linux.co.kr등을 사용할 수 있는데, 이러한 2차도메인의 지정을 담당하는
                   파일이다.
(3) 존파일의 구성
   1) 구성: 존파일은 도메인에 대한 실제적인 DNS정보를 담는 파일이다. 이 파일은 크게 SOA record
           와 실제내용으로 나뉜다.
   2) 기본구조
     $TTL    86400
     @ IN SOA nameserver contact-email-address (
     serial_number  ; Serial
     refresh_number ; Refresh
     retry_number   ; Retry
     expire_number  ; Expire
     minium_number  ; Minimum
     )
     [도메인] [ttl] [class] [type] [rdata]
   3) 항목설명
    ㄱ. $TTL: Time To Live의 약자로 bind 9 버전에서부터는 첫줄에 무조건 적도록 되어있다. TTL
             은 다른 서버에서 자신의 정보를 가져갔을 경우 그 쪽 서버의 캐시에 해당 정보가 얼
             마나 머물지를 결정한다. 값은 0~2147483647까지 가능하며, 단위는 초단위로 보통
             86400(1일)을 설정한다.
    ㄴ. SOA record : SOA(Start of Authority) 레코드는 zone의 시작을 가리키는 데 사용한다. 설정
                    시에 주석이 필요하면 세미콜론(;)을 입력하고 뒤에 문자열을 적는다.
      a. 맨 앞의 '@'는 현재 도메인을 나타낸다. 처음은 이것으로 시작한다.
      b. nameserver는 네임서버의 호스트명과 도메인명을 기록한다.그리고 마지막은 꼭 루트도메인
        을 뜻하는 '.'을 찍는다. 그러나 호스트명만을 입력할 때는 '.'을 생략할 수 있다.
         예) 도메인이 'linux.co.kr'인 경우 다음의 두 경우는 같다.
            ns                     IN           A          203.xxx.xxx.xxx
            ns.linux.co.kr.        IN           A          203.xxx.xxx.xxx
      c. contact-email-address는 관리자의 e-mail주소를 적는다. 일반적인 표기법은 'root@domain.
        com'이라고 표기하지만, 여기서는 'root.domain.com.'이라고 표기한다. 이 부분도 뒤에 꼭 
        '.'를 붙인다.
      d. serial_number : 일련번호로서 만약 도메인 데이터베이스가 갱신되어지면 숫자가 더 크도록
                        수정한다. 일반적으로 'YYYYMMDDNN'의 형식을 사용한다.'YYYYMMDD'는 해당
                        년월일을 적고, 'NN'은 수정한 횟수를 적어주면 된다.
      e. refresh_number : 2차 네임서버가 자신의 정보를 업데이트하기 위해서 1차네임서버에 얼마
                         나 자주 체크할 것인가를 설정하는 항목이다.
      f. retry_number : 만약 2차 네임서버가 1차 네임서버에 접속을 실패했을 경우 재시도할 시간
                       을 설정한다.
      g. expire_number : 2차 네임서버가 자신의 zone데이터를 사용할 수 있는 유효기간을 정한다.
      h. minimum_number : 데이터의 저장한도를 나타낸다. 시간들의 단위는 초단위이다.
        (참고) 2차 네임서버를 운영하지 않는다면 serial_number등의 항목은 무의미하다. 또한
              최근에 값설정시에 초단위값 대신에 W(weeks), D(Days), H(Hours), M(Minutes) 붙여
              사용해도 된다.
    ㄷ. [도메인] [ttl] [class] [type] [rdata]
      - 도메인: 도메인이름, 호스트명, 공백, @, * 등이 올 수 있다. @는 현재 도메인을 가리키고,
               *는 모든 도메인을 뜻한다. 호스트명만 기입하면 "호스트명.도메인이름"로 인식한다.
               공백은 바로 위 자원을 이어서 사용하고, 전체 도메인으로 지정시에는 반드시 도메인
               이름 맨 뒤에 꼭 맨 뒤에 '.'을 붙여야 한다.
      - ttl : 해당 레코드에 대한 TTL을 설정한다. 생략해도 무방하다.
      - class: 레코드에 대한 클래스를 지정하는 부분으로 일반적으로 Internet 클래스인 IN을 사용
             한다.
      - type: 레코드 타입을 지정한다.(A, MX 등)
      - rdata: 실제정보를 입력한다.
    ㄹ. type
      a. NS : Name Server를 지정한다.
        1. 사용법
          IN NS name_server_hostname
        2. 사용예
          IN NS ns.linux.co.kr.
      b. A : Address, 즉 특정호스트명에 대한 IP주소를 입력한다. 실제의 도메인 데이터베이스를
            구축하는 항목이다.
        1. 사용법
          hostname IN A IP_address
        2. 사용예
          www.linux.co.kr.      IN       A        211.36.134.226
      c. PTR : Domain Name Pointer, 이것은 위와 반대로 IP주소를 도메인으로 변환할 때 사용되는
              타입으로 reverse zone에서만 사용한다.
        1. 사용법
          IP_address           IN       PTR      hostname
        2. 사용예
          252     IN      PTR     mybestone.com.
        3. 참고: 이것은 꼭 안써주어도 상관은 없지만, 어떤 인터넷 서비스는 특정 호스트를 인증할
                때 IP역추적을 통해서 도메인이 등록이 되어 있는지를 인증하는 경우가 있다. 이때
                에는 이 항목을 사용하여야 한다.
      d. CNAME : Canonical Name 레코드이다. 일종의 Alias(별칭)을 의미한다.
        1. 사용법
          Alias  IN CNAME Canonical-hostname
        2. 사용예
          www                     IN A            192.168.3.224

          www1                    IN CNAME www
          www2                    IN CNAME www
      e. MX : Mail Exchanger의 약어로 일종의 Fowarding개념으로, 특정 도메인(호스트)에 대해서
             메일을 다른 메일서버로 보내게 된다.
       1. 사용법
         (도메인명 또는 호스트)      IN       MX       preference value     (메일서버)
          => 여기서 preference value는 '0'또는 양의 정수값이다. 여러개의 값이 존재할 경우에는
            낮을수록 우선권이 높다.
       2. 사용예 : linux.co.kr이라는 도메인으로 메일을 받을 경우
            IN    MX    10    linux.co.kr.
       3. 응용예 : 두개의 메일서버를 구축했을 경우
         IN     MX    10       mail
         IN     MX    20       mail2
         => 위의 예제는 이메일이 도착할 경우에는 먼저 mail서버로 먼저 보내고, 응답이 없을경우
           에는 mail2서버로 이메일을 보낸다. mail서버를 하나만 구축했을 경우에는 큰 의미가
           없다.
      f. HINFO: Host INFOrmation의 약자로 호스트정보를 제공할 때 쓴다.
       1. 사용법
         www    IN    HINFO     CPU정보    운영체제정보
       2. 사용예
         www    IN    HINFO     "i686"    "RedHat 9"
   4) 설정예: 여기서는 /etc/named.conf파일에서 존파일을 linux.zone으로 지정하고 Reverse 존파일
             을 linux.rev로 지정했다고 가정하자.
      예) 도메인이 linux.co.kr이고 IP가 192.168.0.2인 경우 다음과 같이 설정한다.
         1.linux.zone
          $TTL    86400
          @       IN      SOA     ns.linux.co.kr. root.linux.co.kr.  (
                                      2001022200 ; Serial
                                      28800      ; Refresh
                                      14400      ; Retry
                                      3600000    ; Expire
                                      86400 )    ; Minimum
               IN      NS      ns.linux.co.kr.
        linux.co.kr.           IN    A    192.168.0.2
                               IN    MX    10    linux.co.kr.
        www.linux.co.kr.       IN    A    192.168.0.2
       (주의) 이 파일을 설정시에는 도메인 네임뒤에 루트를 뜻하는 '.'을 꼭 찍어야 한다. 또한
            이 파일에서 도메인 네임을 설정한 것만 접속이 된다.
       (참고) 여기에서 @는 origin을 뜻하는 특수 문자이다. 즉 메인도메인인 'linux.co.kr'를 의
             미한다. 또한 linux.co.kr이라는 도메인으로 메일을 받는다.
         2. linux.rev
           @       IN      SOA     ns.linux.co.kr. root.linux.co.kr.  (
                                      2001022301 ; Serial
                                      28800      ; Refresh
                                      14400      ; Retry
                                      3600000    ; Expire
                                      86400 )    ; Minimum
                      IN      NS      ns.linux.co.kr.
          2               IN      PTR     ns.linux.co.kr.
          => 윗부분의 설정은 linux.zone의 설정과 같고, 아랫부분의 설정만 해주면 된다. 값은
            전체IP중에서 맨 숫자만 적어주면 된다. 왜냐하면 /etc/named.conf에서 linux.rev설정에
            서 일부를 지정했기 때문이다.

7. DNS관련 유틸리티
(1) rndc
   1) 설명: rndc는 네임서버 데몬을 관리하는 프로그램이다.
   2) 관련파일
    ㄱ. /etc/rndc.conf: rndc의 주 환경설정 파일이다.
    ㄴ. rndc-confgen: rndc의 주환경설정파일인 /etc/rndc.conf를 생성하는 명령이다.
   3) /etc/rndc.conf 기본설정예
     options {
        default-server  localhost;
        default-key     "rndckey";
     };

     server localhost {
             key     "rndckey";
     };

     include "/etc/rndc.key";
   4) /etc/rndc.conf의 항목
    ㄱ. options {};
       => default-server, default-key, default-port를 지정한다. 각각 서버, 키이름, 포트를 지정
         한다.
    ㄴ. server 서버주소 {};
       => 서버의 주소를 지정한 후 { }; 안에 사용할 식별키이름을 지정한다.
    ㄷ. key "키이름" {};
       => named.conf 파일과 같이 설정하거나 위의 항목처럼 include해도 된다.
         예) key "rndckey" {
                     algorithm       hmac-md5;
                     secret "2gNzw5u5z4ypwigLARTOgcA9cBQ94l4whKyjOBa5Rm4iu8P7XVt5LT8wht6x";
             };
   5) rndc-confgen
    ㄱ. 설명: /etc/rndc.conf 파일을 생성해주는 명령이다.
    ㄴ. 사용법
       rndc-confgen [option]
    ㄷ. option
       -a : /etc/rndc.key 키파일을 생성한다.
    ㄹ. 생성예
       [root@www root]# rndc-confgen -a
        => /etc/rndc.key 파일을 생성한다.
       [root@www root]# chmod 640 /etc/rndc.key
        => 퍼미션 변경
       [root@www root]# chown named.named /etc/rndc.key
        => 소유권 변경
       [root@www root]# rndc-confgen > /etc/rndc.conf
        => 리다이렉션기호를 사용하여 /etc/rndc.conf 파일로 저장할 수 있다.
   6) rndc 사용하기
    ㄱ. 조건: 네임서버 데몬이 작동하고 있어야 하며, /etc/named.conf 파일에 controls구문이 설정
             되어 있어야 한다.
    ㄴ. 사용예
       [root@www root]# rndc reload
        => named 데몬의 설정을 다시 로딩한다.
(2) redhat-config-bind: 레드햇 8.0부터 제공하는 GUI기반 BIND 설정도구이다.

(3) named-checkconf
   1) 설명: 네임서버의 주 환경 설정 파일인 /etc/named.conf의 문법적 오류를 찾아주는 명령이다.
   2) 사용법
     named-checkconf [filename]
      => 기본적으로 /etc/named.conf 파일의 오류를 검사하고, 다른 경로의 named.conf파일을
        검사하려면 파일의 경로를 적어주면 된다.
   3) 사용예
    ㄱ. [root@linux224 named]# named-checkconf
          => /etc/named.conf 파일의 문법적 오류를 찾는다.
    ㄴ. [root@linux224 root]# named-checkconf ~/named.conf
        /root/named.conf:12: unknown option 'acl
          => ~/named.conf의 문법적 오류를 찾는다.

(4) named-checkzone
   1) 설명: zone파일의 문법적 오류를 찾아주는 명령이다.
   2) 사용법
     named-checkzone 도메인명 zone파일경로
   3) 사용예
     [root@linux224 root]# named-checkzone linux.com /var/named/linux.zone
     /var/named/linux.zone:1: no TTL specified; using SOA MINTTL instead
     zone linux.com/IN: loaded serial 2005070802
     OK

8. DNS서버 구성예
(1) 단일서버
   1) 설명: 부여받은 IP주소가 192.168.1.125이고 신청한 도메인이 linux.co.kr이고, 하나의 시스템
           에 DNS, WEB, Mail서버 운영하는 경우
   2) 설정하기
    ㄱ. /etc/named.conf 파일의 설정: 이 파일에는 기본적으로 zone파일의 위치하는 디렉토리와
                                    2개의 존파일이 선언되어 있는 데, 기본설정은 건드리지 말고
                                    내용만 추가해야 한다.
      (예)
       [root@www root]# vi /etc/named.conf
       // generated by named-bootconf.pl

       options {
               directory "/var/named";
               /*
                * 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;
       };

       //
       // a caching only nameserver config
       //
       controls {
               inet 127.0.0.1 allow { localhost; } keys { rndckey; };
       };
       zone "." IN {
               type hint;
               file "named.ca";
       };

       zone "localhost" IN {
               type master;
               file "localhost.zone";
               allow-update { none; };
       };

       zone "0.0.127.in-addr.arpa" IN {
               type master;
               file "named.local";
               allow-update { none; };
       };
       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등을 이용하여 IP주소로 도메인이름
               file "linux.rev";           을 조회할 때 사용. 타입은 master이고, zone파일의
       };                                  이름은 임의로 지정할 수 있으며, 여기서는 linux.rev
                                           라 함.

       include "/etc/rndc.key";
    ㄴ. zone파일의 생성: /etc/named.conf파일에서 zone파일들이 위치하는 디렉토리가 /var/named
                        라고 정의되어 있으므로 이 디렉토리에 생성한다. 아울러, 이 디렉토리에
                        localhost의 zone파일인 localhost.zone파일이 존재하므로 이 파일을
                        위에서 설정한 zone파일인 linux.zone으로 변경한뒤에 편집하고 리버스
                        존파일인 linux.rev는 linux.zone파일을 복사하여 설정하면 된다.
       (예)
      1. linux.zone파일의 설정
       [root@www named]# vi linux.zone
       $TTL    86400
       @       IN      SOA     ns.linux.co.kr. root.linux.co.kr.  ( // 네임서버와 관리자 메일
                                        2001071500 ; Serial           설정시 도메인명 뒤에
                                        28800      ; Refresh          반드시 '.'를 표기
                                        14400      ; Retry
                                        3600000    ; Expire         // 예전에는 초단위의 값을
                                        86400 )    ; Minimum          사용했으나 현재는 H(시),
                              IN   NS       ns.linux.co.kr.           D(일)등의 단위도 사용
       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.co.kr.         IN   A       192.168.1.125
           => (생략법)
               *                      IN   A       192.168.1.125

      2. linux.rev 파일의 설정
       [root@www named]# vi linux.rev
       $TTL    86400
       @       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의 맨 마지막을 표기한
       125             IN PTR     linux.co.kr.         것이며. PTR은 리버스존에서 정의해주는
       125             IN PTR     www.linux.co.kr.     것으로 IP주소로 도메인을 변환할 때 사용
                                                       한다.
   3) 테스트하기
    ㄱ. named 데몬을 작동시킨다.
       [root@www named]# /etc/rc.d/init.d/named start
         => named 시작시 [OK]메시지가 나타나도 /etc/named.conf파일의 설정이 잘못되면 데몬이
           작동되지 않으므로 데몬작동유무를 확인해야 한다.
    ㄴ. /etc/reslov.conf파일에 본인의 IP주소를 네임서버로 등록한다.
       예) [root@www named]# vi /etc/resolv.conf
           nameserver 192.168.1.125
    ㄷ. nslookup 명령등으로 테스트한다.
       예) [root@www named]# nslookup linux.co.kr
           Note:  nslookup is deprecated and may be removed from future releases.
           Consider using the `dig' or `host' programs instead.  Run nslookup with
           the `-sil[ent]' option to prevent this message from appearing.
           Server:         192.168.1.125
           Address:        192.168.1.125#53

           Name:   linux.co.kr
           Address: 192.168.1.125
(2) 단일서버2
   1) 설명: 위의 단일서버에 linux.com이라는 도메인 추가하기
   2) 설정하기
    ㄱ. /etc/named.conf 파일의 설정: 도메인이 추가된 경우에는 반드시 이 파일에 등록하고
                                    linux.com의 존파일을 선언해야 한다. 단순히 도메인만 추가
                                    하여 사용하는 경우에는 linux.com의 2차도메인인
                                    www.linux.com 등을 사용하기 위하여 새로운 존파일을
                                    생성해야 한다.
       (예)
      1. linux.zone파일의 설정
       [root@www named]# vi linux.com.zone
       $TTL    86400
       @       IN      SOA     ns.linux.com. root.linux.com.  ( // 네임서버와 관리자 메일
                                        2001071500 ; Serial       설정시 도메인명 뒤에
                                        28800      ; Refresh      반드시 '.'를 표기
                                        14400      ; Retry
                                        3600000    ; Expire         // 예전에는 초단위의 값을
                                        86400 )    ; Minimum          사용했으나 현재는 H(시),
                              IN   NS       ns.linux.com.             D(일)등의 단위도 사용
       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 파일의 설정
       [root@www named]# vi linux.rev
       $TTL    86400
       @       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     linux.co.kr.
       125             IN PTR     www.linux.co.kr.
       125             IN PTR     linux.com.            // 추가
       125             IN PTR     www.linux.com.        // 추가
    ㄷ. apache의 설정: 웹서비스를 하는 경우 아파치의 환경파일인 httpd.conf에서도 설정해줘야
                      한다.
        예) [root@www apache]# vi 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
                ErrorLog logs/linux.com-error-log
                CustomLog logs/linux.com-access_log common
            </VirtualHost>
              => 위의 ServerAlias 설정은 브라우저상에서 linux.com과 www.linux.com를 입력했을
                경우에 웹페이지가 열리도록 설정. 만약 2차도메인이 전부 이 동일한 웹페이지가
                열리도록 하려면 *.linux.com이라고 설정한다.
   3) 테스트하기
     [root@www named]# nslookup
     Note:  nslookup is deprecated and may be removed from future releases.
     Consider using the `dig' or `host' programs instead.  Run nslookup with
     the `-sil[ent]' option to prevent this message from appearing.
     > www.linux.co.kr                           // www.linux.co.kr 조회
     Server:         192.168.1.125
     Address:        192.168.1.125#53

     Name:   www.linux.co.kr
     Address: 192.168.1.125
     > www.linux.com                            // www.linux.com 조회
     Server:         192.168.1.125
     Address:        192.168.1.125#53

     Name:   www.linux.com
     Address: 192.168.1.125
     > 192.168.1.125                           // IP로 조회
     Server:         192.168.1.125
     Address:        192.168.1.125#53

     125.1.168.192.in-addr.arpa     name = linux.co.kr.
     125.1.168.192.in-addr.arpa     name = linux.com.
     125.1.168.192.in-addr.arpa     name = ns.linux.co.kr.
     125.1.168.192.in-addr.arpa     name = www.linux.co.kr.
     125.1.168.192.in-addr.arpa     name = www.linux.com.

(3) 다중 웹서버
   1) 설명: 웹서버 2대를 따로 운영할 경우 직접 www이라는 동일한 이름으로 지정가능하다.
   2) 사용예
     [root@linux224 named]# vi linux.zone
     @                        IN SOA ns.linux.com. posein.linux.com. (
                                             2005070501      ; serial (d. adams)
                                             3H              ; refresh
                                             15M             ; retry
                                             1W              ; expiry
                                             1D )            ; minimum

                              IN NS          ns.linux.com.
                              IN A           203.247.50.224
                              IN MX 10       203.247.50.224
     www                   0  IN A           203.247.50.227
     www                   0  IN A           203.247.50.228
       => TTL을 0으로 설정하면 caching을 하지 말도록 하는 설정이다.

(4) 2차도메인서버운영
   1) 개요: mybestone.com이라는 도메인으로 서버가 한 대 운영중이고 linux.mybestone.com이라는
           서브도메인(2차도메인)을 부여하여 이 서버가 독자적인 IP를 가지고 있고, 웹서버 및
           메일서버도 독자적으로 운영하려고 한다. 또한 이 서버의 서브도메인(3차도메인)도
           가능하게 설정하도록 한다.
   2) 조건
    ㄱ. mybestone.com (주 도메인)
         IP 주소         : 192.168.0.3
         zone 파일       : mybestone.zone
         Reverse zone파일: mybestone.rev
    ㄴ. linux.mybestone.com (서브 도메인)
         IP 주소         : 192.168.0.4
   3) 설정
    ㄱ. 주 네임서버(ns.mybestone.com)의 설정
      a. /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
              라고 한줄만 지정해도 된다.
       b. /var/named 디렉토리에 존재하는 mybestone.rev파일의 설정 추가
            linux            IN      NS      ns.linux.mybestone.com.
            4                IN      NS      ns.linux.mybestone.com.
    ㄴ. 서브 네임서버(ns.linux.mybestone.com)의 설정
      a. /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";
                 };
      b. 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
      c. 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     linux.mybestone.com.
         4             IN      PTR     ns.linux.mybestone.com.
         4             IN      PTR     www.linux.mybestone.com.
   ㄷ. httpd.conf파일에 설정한다.
        <VirtualHost 192.168.0.4>
            ServerAdmin root@linux.mybestone.com
            ServerName www.linux.mybesone.com
            DocumentRoot /usr/local/apache/html
            ErrorLog logs/linux.mybestone.com-error_log
            CustomLog logs/linux.mybestone.com-access_log common
        </VirtualHost>
(5) Slave DNS 구성하기
   1) 설명: Slave DNS는 Master DNS의 zone파일을 백업하는 역할을 하는 서버이다. Master DNS의
           IP주소를 192.168.1.125, 도메인 네임을 linux.co.kr이라고 가정하고, Slave DNS는
           192.168.1.126이라고 가정한다.
   2) 설정하기
    ㄱ. Master DNS(192.168.1.125)의 /etc/named.conf 파일에 허가할 Slave DNS의 설정
       [root@master root]# vi /etc/named.conf
       options {
               directory "/var/named";
               allow-transfer { 192.168.0/24; 192.168.1.126; };  // 허가할 Slave DNS IP주소
       };
       ----- 이하 생략 ------
    ㄴ. Slave DNS(192.168.126) 설정
      a. /etc/named.conf 파일의 설정: 다음의 항을 추가한다.
        [root@slave root]# vi /etc/named.conf
        ---- 생략 ----
        zone "linux.co.kr" IN {
                type slave;
                file "linux.zone";
                masters { 192.168.1.125; };
        };

        zone "1.168.192.in-addr.arpa" IN {
                type slave;
                masters { 192.168.1.125; };
                file "linux.rev";
        };
       b. zone파일을 복사할 /var/named의 허가권 조정: 복사를 해오는 named가 기본적으로
                                                     /var/named에 쓰기권한이 없다. 따라서,
                                                     허가권을 조정해야 한다.
         [root@www root]# ls -ld /var/named
         drwxr-x---    2 named    named        4096  8월 16 21:48 /var/named/
         [root@www root]# chmod g+w /var/named
         drwxrwx---    2 named    named        4096  8월 16 21:48 /var/named/
     ㄷ. slave DNS에서 named 데몬을 재가동하면 Master DNS의 존파일인 linux.zone, linux.rev
        파일을 복사해온다.


출처 : 대전국제IT교육센터 정성재 강사

 

1. 프로토콜(Protocol)이란?
사람은 언어를 사용한다. 한국사람은 한국어를 사용하고 미국사람은 영어를 사용한다. 미리 정해진
특별한 규칙에 의해 서로 의사소통을 한다. 프토토콜이란 바로 컴퓨터간의 통신을 위해 미리 정해진
특별한 규칙이자 규약을 말한다.

2. TCP/IP란?
(1) 개요 : TCP/IP는 컴퓨터의 기종에 관계없이 정보교환이 가능케 해주는 것으로 인터넷에서 정보
           전송을 위해 사용하는 프로토콜(통신규약)이다. TCP(Transmission Control Protocol)와
           IP(Internet Protocol)라는 두개의 프로토콜의 이름을 따서 만든 것이다. 인터넷에서
           사용하는 대부분의 통신은 이 두개의 프로토콜을 사용하여 서로 정보를 교환한다. 그러나
           인터넷에서 사용하는 프로토콜은 TCP/IP만 사용하는 것은 아니며, 다른 프로토콜도 사용
           한다.
(2) TCP와 IP 프로토콜의 역할
   1) TCP프로토콜
     ㄱ. IP프로토콜에 의해서 만들어진 패킷들의 전송 흐름 부분을 담당한다.
     ㄴ. 패킷이 목적지 주소에 올바른 순서로 도달하도록 제어한다.
     ㄷ. 패킷이 중간에 유실되지 않도록 한다.
   2) IP프로토콜
     ㄱ. 보내고자 하는 자료를 패킷으로 쪼갠다.
     ㄴ. 목적지 주소를 지정한다.
     ㄷ. 쪼개진 패킷을 목적지 주소로 운반한다.
(3) TCP/IP 프로토콜과 OSI 7 레이어 구조 비교
   

TCP/IP 프로토콜 구조 OSI 7 레이어 구조
APPLICATION APPLICATION
PRESENTATION
SESSION
TRANSPORT TRANSPORT
INTERNET NETWORK
NETWORK INTERFACE DATA LINK
PHYSICAL


(4) TCP/IP 프로토콜 계층설명
   1) Application Layer(응용계층)
    사용자 응용 프로그램으로부터 요청을 받아들여서 이를 적절한 메시지로 변환하고 하위 계층인
   Transport Layer로 전달한다. 이 계층에서 지원하는 프로토콜에는 FTP, NFS, POP, SMTP, TELNET,
   SNMP, DNS, HTTP, NNTP(뉴스송수신) 등이 있다.
   2) Transport Layer(트랜스포트 계층)
    ㄱ. 개요 : 이 계층의 역할은 Application Layer로 부터 받은 데이터를 세그먼트(Segment)형태로
             만들어 네트워크를 통해 상대방까지 전달하는 역할을 한다. TCP와 UDP 두가지 프로토콜
             이 제공된다.
    ㄴ. TCP(Transmission Control Protocol)
      연결지향(Connection Oriented)전송 프로토콜로 세그먼트가 상대측까지 제대로 전달되었는지
     응답(Ack)을 주고 받음으로서 점검한다. 즉 TCP는 IP에 의해 전달되는 패킷의 오류를 검사하고
     재전송을 요구하는 등의 보다 정교한 제어를 담당한다. TCP는 패킷을 전송할 두 지점을 네트워
     크상에 있는 최단 경로로 찾아서 1:1로 직접 연결한 뒤에 패킷을 주고 받기 때문에 전송과 오류
     수정에 있어 신뢰도가 높다. 두 지점을 직접 제어하기 때문에 다른 프로토콜에 비해 상대적으로
     많은 전송 시간이 필요하다. 그러나 안전성과 신뢰성이 뛰어나 사용자 데이터 전송, 대용량 전
     송에 이용된다.
    ㄷ. UDP(User Datagram Protocol)
      비연결(Connectionless)전송 프로토콜로 세그먼트를 보내기만하고 Ack를 주고 받지 않는다.
     따라서 제대로 전달되었는지 확인하지 않는 특성을 갖고 있고, 오류 수정을 하지 않는다. 오류
     수정 등의 기능은 없지만 TCP에 비해 속도가 빠르며, 직접 연결에 따른 네트워크 부하를 줄일
     수 있다. 보통 시스템 내부 메시지 전달과 데이터 전달, 소규모 데이터 전송에 이용된다.
   3) Internet Layer(인터넷 계층)
    ㄱ. 개요 : Transport계층에서 받은 패킷을 목적지까지 효율적으로 전달하는 역할을 한다. 패킷
              이 목적지에 제대로 도착되었는지, 데이터의 손상 여부에 대해서는 상위 계층에서 처
              리한다. 이 계층에 해당하는 프로토콜은 ICMP, IP, ARP가 있다.
    ㄴ. ICMP(Internet Control Message Protocol)
       메시지에 대한 오류 보고와 이에 대한 피드백을 원래 호스트에 보고하는 역할을 수행한다.
      ICMP제어 메시지는 IP패킷의 형태로 전달된다.
    ㄷ. IP(Internet Protocol)
       데이터 세그먼트를 패킷으로 만들어 이를 목적지로 전달하는 역할을 수행한다. 그러나 전달
      여부를 보장하지는 않는다. 라우터(Router)는 Internet Layer에 원격 네트워크간 패킷의 전달
      을 담당하는 장치로서 최적 경로를 결정하고 결정된 경로로 패킷을 전달하는 역할을 한다.
    ㄷ. ARP(Address Resolusion Protocol) : 주소찾기 프로토콜
       IP 프로토콜은 하드웨어 주소(Physical 계층에서 MAC Address라고도 하며 Lan Card에 설정에
      있는 고유한 값)와 논리적인 할당에 의한 IP주소를 갖는다. 개별 호스트는 비록 독자의 IP주소
      를 할당받지만 실제의 데이터 전달은 하드웨어 주소를 알아야 한다. 따라서, 이 두 가지의 주
      소를 적절히 매칭시킬 필요가 있는데 동적으로 특정 프로토콜에 의해서 필요한 때마다 목적지
      호스트의 하드웨어 주소를 찾는 역할을 한다.
   4) Network Interface layer(네트워크 인터페이스 계층)
     이더넷 카드 등으로 연결된 물리적인 네트워크를 의미하며, 프레임을 물리적인 회선에 올리거나
    내려받는 역할을 한다. 즉, 보내는 쪽은 상위계층에서 받은 패킷을 프레임으로 만들어서 물리적
    인 회선에 올리게 되고, 받는 쪽은 필요한 데이터를 추출하여 조합한 프레임을 패킷으로 변환
    하여 상위계층으로 전달한다.

3. IP 주소
(1) 개요 : 사람으로 말하면 주민등록번호에 해당하는 것으로 하나의 IP주소는 전세계적으로
           고유하다. 고유한 만큼 IP주소는 완전히 개인것이 아니다. IP주소는 사용 후 해당
           ISP업체에 반납해야 한다.
(2) IP주소의 구성
   1) 구성
     IP주소 = 네트워크 부분주소 + 호스트 부분 주소
   2) 특징 : 32비트의 숫자로 8비트 4부분으로 구성되어 있으며, 각 부분은 .(dot)으로 구분한다.
            각 부분은 십진수 숫자로 0-255 까지의 숫자를 갖는다.

    (참고1) 8비트는 다음과 같다.
        2726252423222120
        으로 구성되어 있으므로 한 자리가 가질수 있는 최대의 수는 255이다.

   3) IP주소 예
     192.168.0.2
      => 이 주소 방식을 IPv4(IP version 4)라고 하며, 위 예에서 192.168.0.0 네트워크에 속해
        있는 주소라고 할 때, 192.168.0은 네트워크 ID를 나타내는 부분이고 마지막 2는 호스트
        ID를 나타낸다. IP주소의 첫번째 자리는 주소의 클래스를 구분하는 자리로, A,B,C,D,E 5개
        의 클래스가 있다. A,B,C 클래스는 일반적인 목적으로 사용되고, 나머지는 특수 목적으로
        사용된다.
(3) IP 클래스
   1) A 클래스(N.H.H.H)
     IP 주소 첫번째 자리의 1bit가 '0'이며, 네트워크 ID는 0~127까지 나타낼 수 있다. 속해있는
    IP주소는 0.0.0.0 ~ 127.255.255.255까지 가능하다. 이 중 0.0.0.0과 127.0.0.0는 각각 기본
    라우터와 루프백 네트워크 주소를 나타내는 특수용도로 사용되므로 실질적으로 사용 가능한
    네트워크 주소는 1 ~ 126 까지이다.
   2) B 클래스(N.N.H.H)
     IP 첫번째 자리의 2bit가 '10'이며 네트워크 주소는 128.0 ~ 191.255 까지 사용한다.
   3) C 클래스(N.N.N.H)
     IP주소 첫번째 자리의 3bit가 '110'이며, 네트워크 주소는 192.0.0 ~ 223.255.255 이다.
   4) D 클래스
     IP주소 첫번째 자리의 4bit가 '1110'이며, 다중 방송 통신(MULTICAST)용으로 사용된다.
   5) E 클래스
     연구용으로 사용된다. 보통 E 클래스를 D 클래스와 같이 묶어 D클래스라고 통칭한다.
   6) 참고
     특정한 네트워크 클래스라도 맨 처음과 마지막IP주소는 네트워크 인터페이스를 나타내는데 사용
    하지 않고 특수한 용도로 사용한다. 맨 마지막이 0인 네트워크 주소는 네트워크 전체를 나타내는
    네트워크 주소이고, 제일마지막이 255인 주소는 브로드캐스트 주소로 사용하기 때문에 네트워크
    인터페이스를 나타내는 주소로 사용하지 않는다.

(참고2) 클래스별 IP 네트워크 전체 범위
클래스 IP 네트워크 전체 범위
A 클래스 0.0.0.0 127.255.255.255
B 클래스 128.0.0.0 191.255.255.255
C 클래스 192.0.0.0 223.255.255.255
D 클래스 224.0.0.0 255.255.255.255


(4) 기타 특수한 IP
   1) 내부 IP : 직접 인터넷에 연결되지 않고 내부 네트워크를 구축할 경우에 사용하는 IP이다.
     -A 클래스(1개의 네트워크)      : 10.0.0.0 ~  10.255.255.255
     -B 클래스(16개의 네트워크)   : 172.16.0.0 ~ 172.31.255.255
     -C 클래스(256개의 네트워크) : 192.168.0.0 ~ 192.168.255.255
   2) 루프백 IP : 루프백네트워크라 하면 127.0.0.0 네트워크이다. 관련파일은 /etc/hosts이다.
     -A 클래스 : 127.0.0.0 ~ 127.255.255.255


4. 넷마스크(netmask)
(1) 개요 : 서브 넷마스크(sub netmask) 또는 줄여서 서브넷이라고 한다. 서브넷을 구성하는 이유는
           체계적인 네트워크의 구성과 트래픽장애를 제거하기 위해서이다.
(2) 네트워크주소와 브로드캐스트
   1) 네트워크주소
    ㄱ. 설명: 네트워크 주소는 서브 네트워크에 속한 모든 IP 호스트를 말할 때 사용한다. 일반적
             으로 서브 네트워크 주소는 최하위(맨위쪽) IP주소가 네트워크 주소이다.
    ㄴ. 클래스와 호스트의 갯수
     a. C클래스: 하나의 C클래스로 하나의 네트워크를 구성했을 경우, 네트워크 주소가 192.168.2.0
                이라고 표현하면 192.168.2.0부터 192.168.2.255까지의 모든 IP 호스트(256개)를
                말한다.
     b. B클래스: B클래스 네트워크일 경우에 172.16.0.0으로 표현하면 172.16.0.0부터 172.16.255.
                255까지의 모든 호스트를 말하면 호스트의 개수는 256*256인 65,536개이다.
     c. A클래스: A클래스 네트워크인 경우에 10.0.0.0으로 표현하면 10.0.0.0 부터 10.255.255.255
                까지의 모든 호스트를 말하며 갯수는 256*256*256인 16,777,216개의 호스트가 이에
                해당된다.
    ㄷ. 특징: 넷마스크값과 브로드캐스드값이 주어지면 네트워크주소는 자동으로 계산할 수 있다.
   2) 브로드캐스트
    ㄱ. 설명: 브로드캐스트는 넷마스크로 나누어진 지역 서브 네트워크의 모든 IP호스트가 듣는
             특별한 주소이다. 일반적 브로드캐스트 주소는 서브 네트워크의 최상위(맨뒤쪽)의 IP
             주소가 이에 해당된다.
    ㄴ. 특징: 넷마스크값과 네트워크 주소가 주어지면 브로드캐스트 주소는 자동으로 계산할 수
             있다.
   3) 구성예
     IP 주소          : 192.168.2.20
     넷마스크 주소    : 255.255.255.0
     네트워크 주소    : 192.168.2.0
     브로드캐스트주소 : 192.168.2.255
(3) 서브넷마스크와 네트워크 계산
   1) 각 클래스별 IP주소를 기준으로 넷마스크, 브로드캐스트, 네트워크주소 분석
    ㄱ. IP주소
       - A클래스인 경우: 10.2.1.3
       - B클래스인 경우: 172.16.1.3
       - C클래스인 경우: 192.168.1.3
    ㄴ. 넷마스크
       - 하나의 A클래스 네트워크일 경우: 255.0.0.0
       - 하나의 B클래스 네트워크일 경우: 255.255.0.0
       - 하나의 C클래스 네트워크일 경우: 255.255.255.0
    ㄷ. 네트워크주소
       - 하나의 A클래스 네트워크일 경우: 10.0.0.0
       - 하나의 B클래스 네트워크일 경우: 172.16.0.0
       - 하나의 C클래스 네트워크일 경우: 192.168.1.0
    ㄹ. 브로드캐스트 주소
       - 하나의 A클래스 네트워크일 경우: 10.255.255.255
       - 하나의 B클래스 네트워크일 경우: 172.16.255.255
       - 하나의 C클래스 네트워크일 경우: 192.168.1.255

   2) 하나의 C클래스의 넷마스크값이 255.255.255.0인 경우
192.168.3.0
네트워크주소
192.168.3.1
192.168.3.2
.
.
.
192.168.3.253
192.168.3.254
실제 네트워크 인터페이스에 사용할 수 있는 IP주소
(호스트 부분의 IP주소를 의미)로 총
254개를 사용할 수 있다.
192.168.3.255
브로드캐스트


   3) 하나의 C클래스를 두 개의 서브넷으로 나눌 경우(서브넷마스크: 255.255.255.128)
192.168.3.0
네트워크주소
서브넷 1
(128개)
총256개
사용가능한 IP호스트는
총 252개이다.
192.168.3.1
192.168.3.2
.
.
.
192.168.3.125
192.168.3.126
사용가능한
IP호스트
(126개)
192.168.3.127
브로드캐스트주소
192.168.3.128
네트워크주소
서브넷 2
(128개)
192.168.3.129
192.168.3.130
.
.
.
192.168.3.253
192.168.3.254
사용가능한
IP호스트
(126개)
192.168.3.255
브로드캐스트


   4) 하나의 C클래스를 네개의 서브넷으로 나눌 경우(서브 넷마스크: 255.255.255.192)
192.168.3.0
네트워크주소
서브넷1
(64개)
총 256개
사용 가능한IP 호스트는
총 248개
192.168.3.1
192.168.3.2
.
.
.
192.168.3.61
192.168.3.62
사용가능한
IP 호스트
(62개)
192.168.3.63
브로드캐스트주소
192.168.3.64
네트워크주소
서브넷2
(64개)
192.168.3.65
192.168.3.66
.
.
.
192.168.3.125
192.168.3.126
사용가능한
IP 호스트
(62개)
192.168.3.128
브로드캐스트주소
192.168.3.129
네트워크주소
서브넷3
(64개)
192.168.3.130
192.168.3.131
.
.
.
192.168.3.189
192.168.3.190
사용가능한
IP 호스트
(62개)
192.168.3.191
브로드캐스트주소
192.168.3.192
네트워크주소
서브넷1
(64개)
192.168.3.193
192.168.3.194
.
.
.
192.168.3.253
192.168.3.254
사용가능한
IP 호스트
(62개)
192.168.3.255
브로드캐스트주소



5. DNS
(1) 개요 : Domain Name System의 약어로 도메인 네임을 IP주소와 매칭시켜 클라이언트에게
          IP주소를 알려주는 역할을 하는 서버를 말한다. 처음 인터넷이 생겼을 때는 IP주소를
          사용해 통신을 했는데, IP주소는 기억하기 어려웠다. 그래서, 등장한 것이 영문이름이고
          이것을 관리하는것이 DNS 서버이다.
(2) DNS의 역사
   Domain Name System의 역사는 인터넷에서 컴퓨터에 이름 대 주소 매핑 서비스를 제공하기 위해
  개발되었다. 1987년 DNS가 소개되기 전까지는 주로 hosts파일이라는 정적 공유 파일을 사용하여
  친숙한 컴퓨터의 이름을 IP주소에 매핑하는 방법을 사용하였다. 초기 인터넷은 규모가 작았기
  때문에 중앙에서 관리하는 한 파일을 사용해서 매핑하는 데 충분했으며 이 파일은 FTP를 이용하여
  인터넷에 연결된 곳에 게시되고 다운로드되었다. 각 인터넷 사이트는 주기적으로 이 Hosts파일
  복사본을 업데이트했고 업데이트된 Hosts파일의 버전이 게시되어 네트워크 변경 내용을 반영하였다.
  인터넷을 사용하는 컴퓨터의 수가 증가함에 따라 한 기관이 중앙에서 모든 인터넷 호스트를 단일
  Hosts파일에서 관리하는 것이 불가능해졌다. 또한 파일이 점차 커지면서 모든 사이트에 업데이트된
  최신 상태의 파일을 유지하고 배포하기가 어려워졌다. 그래서, 등장한 것이 Domain Name System
  이다.
(3) Domain Name의 이해
   1) IP주소 : 컴퓨터가 이해하는 숫자로된 컴퓨터의 주소를 말한다.
   .   예) 168.126.63.1
   2) Domain Name : 인간이 이해하는 영문으로 된 주소를 말한다.
       예) www.yahoo.com
   3) DNS 서비스 : IP주소를 도메인네임과 상호변경시켜주는 서비스를 말한다.
(4) Domain Name의 구성 : 마침표(.)로 각각의 레이블을 구분하며 각 레이블은 2개 이상이 존재하며
                         여러단계로 구분되어 진다.
   1) 최상위 도메인 : 이름을 사용하는 국가/지역 또는 조직의 종류를 나타내는 데 사용된다.
     예) .com, .kr 등
   2) 둘째 수준 도메인 : 인터넷에서 사용하기 위해 개인 또는 조직에 등록되는 이름.
     예) yahoo.com, kisa.or.kr 등
   3) 하위 도메인 : 등록된 둘째 수준 도메인이름에서 파생된 추가 이름으로 조직이 만들 수 있는
                   이름이다. 즉, 조직의 DNS이름 트리를 확장하여 부서나 지역으로 분리할 때 추가
                   하는 이름이 포함된다.
     예)kr.yahoo.com등
   4) 호스트 또는 리소스 이름 : 호스트 또는 리소스를 식별하기 위한 이름으로 보통 컴퓨터의
                               이름이 등록된다. 사용용도에 따라 www, ftp, home등이 사용된다.
    예)www.yahoo.com등
(5) DNS가 제공하는 기능
   1) 도메인 네임과 자원레코드에 대한 정보를 저장하고 있다. 트리구조화된 네임존과 네임과
     관련된 정보를 저장하고 있다. 개념적으로 도메인트리의 각 노드와 HOST는 한세트의 정보에
     이름을 부여하고, 질의작업은 특정세트로부터 고유의 정보유형을 추출한다. 인터넷은 도메인
     네임을 사용하여 호스트들을 식별하는데, 주소자원에 대한 질의를 답변하기 위해 관련 정보들을
     담고 있다.
   2) 네임서버의 기능을 제공한다.
   3) 클라이언트 요청에 응답하여 네임 서버들로부터 정보를 추출하는 기능을 제공한다.
(6) DNS의 설정
   DNS는 도메인과 IP주소를 매칭시키는 역할을 하므로, 어느 DNS주소를 설정해도 상관이 없다. 특정
  DNS가 다운됐을 경우를 대비해 두세곳을 설정해두는것이 좋다. PING테스트를 해서 속도가 빠른
  곳으로 설정한다. 일반적인 경우라면 DNS는 자신이 속한 네트워크에 있는 것으로 설정하는 것이
  좋다. 로컬네트워크가 대체적으로 외부망보다 빠르기 때문이다. 물론 현재 리눅스서버로 DNS서버를
  구축했을 경우에는 자기 자신의 IP가 Name Server의 역할을 한다.
(7) 관련파일 : 현재 리눅스시스템에서 DNS서버의 설정확인은 /etc/resolv.conf에서 확인한다.
   예) /etc/resolv.conf
      nameserver    168.126.63.1                             //한국통신 DNS
      nameserver    210.94.0.7                               //하나로통신 DNS

6. PPP설정과 사용
(1) PPP(Point-to-Point Protocol)
   1) 설명: 모뎀을 이용하여 인터넷 전용선에 연결된 것처럼 인터넷을 사용하는 프로토콜을 말한다.
           PPP의 목적은 호스트가 전화접속을 이용하여 네트워크, 즉 네트워크나 인터넷에 접속할
           수 있도록 하는 것이다. TCP/IP에 대한 초기의 라인프로토콜은 SLIP(Serial Line Inter
           net Protocol)이었다.
   2) 모뎀설정: modeltool & minicom
    ㄱ. 연결: PPP연결은 /usr/sbin/pppd와 /usr/sbin/chat을 사용해서 이루어진다.
       a. pppd: 명령 자체로 모뎀을 제어할 수 있지만, 실제 다이얼링이나 로그인을 할 수 없다.
       b. chat: 모뎀에 명령을 내리고, 필요한 로그인 정보를 제공한다.
   3) 리눅스에서 설정단계
    ㄱ. PPP지원을 커널에 컴파일해 넣기: Kernel에 PPP지원 추가, 재 컴파일
    ㄴ. 인터넷 서비스 업체에서 정보받기: 전화번호, 유동 IP, DNS IP, 비밀번호 및 인증프로토콜
                                        (PAP)
    ㄷ. 모뎀과 직렬포트설정: IRQ 설정
    ㄹ. DNS 설정
       - /etc/resolv.conf (DNS 지정)
       - /etc/host.conf
    ㅁ. /etc/ppp/options 파일은 pppd를 실행할 때 프롬프트에서 입력할 옵션을 대신 처리하도록
       하는데 사용한다.
        예) /dev/modem (모뎀 포트)
            crtscts (하드웨어 흐름제어방식인 RTS/CTS를 사용한다.)
            defaultroute (연결된 ISP의 router로 패킷을 전송한다.)
    ㅂ. kernel에서 모뎀과 직렬 포트의 IRQ 설정이 제대로 되어 있는지 확인한다.
   4) PPP관련 설정파일: 참고로 버전에 따라 존재하지 않을 수도 있다.
    ㄱ. /usr/sbin/ppp-on: PPP연결할 때 사용하는 스크립트
    ㄴ. /usr/sbin/ppp-off: PPP연결을 끊을 때 사용하는 스크립트
    ㄷ. /usr/ppp/ppp-on-dialer
(2) 리눅스의 PPP기반에서 사용하는 인증 프로토콜
   1) PAP(Password Authenication Protocol)
   2) CHAP(Challenge Handshake Authentication Protocol)

7. 주요서비스와 포트번호
(1) 개요 : Transport Layer는 Application Layer에 데이터를 전송하기 위해서 포트번호를 사용한
           다. 이러한 포트들을 사용하여 네트워크상의 다른 호스트와 동시에 세션을 지원할 수
           있게 된다. /etc/services파일에 각 네트워크 서비스와 일반적으로 그 서비스에 사용되는
           포트 번호를 지정하고 있다.
(2) 주요 서비스와 포트번호
   21    FTP       File Transfer Protocol
   23    Telnet
   25    SMTP      Simple Mail Transfer Protocol
   53    DNS       Domain Name System
   80    www       World Wide Web
   110   POP3      Post Office Protocol 3
   119   NNTP      Network News Transfer Protocol
   143   IMAP      Internet Mail Access Protocol
   161   SNMP      Simple Network Management Protocol
우주곰:지구곰이 아닙니다.
지구곰이 아닙니다.
Categories (190)
Information (5)
About uzoogom (5)
My Advanced Linux (73)
Learning Linux (96)
OperatingSystem (5)
Databases (4)
Tips! (1)
OpenSource (1)
«   2018/01   »
  1 2 3 4 5 6
7 8 9 10 11 12 13
14 15 16 17 18 19 20
21 22 23 24 25 26 27
28 29 30 31      
  1. 2012/12 (2)
  2. 2012/04 (3)
  3. 2012/03 (6)
  4. 2012/02 (6)
  5. 2012/01 (2)