실습/[CentOS]

[CentOS] 네임서버(DNS) 기본 구축

DNS 서버란?

- 웹 브라우저나 FTP 클라이언트를 사용할 때 URL을 사용한다. 실제 원하는 서버에 접근하려면 URL을 해당 컴퓨터의 IP주소로 변환시켜아한다. www.naver.com 같은 도메인을 IP 주소로 변환해주는 서버이다.   

 

 

 

 

 

도메인 변환 순서

1. Web Browser, Command에 도메인네임을 입력한다.

www.nate.com, http://www.nate.com

 

2. /etc/host.conf (hosts참조, DNS질의) 우선순위

hosts, bind

2-1. hosts : /etc/hosts 파일을 우선 참조하여 해석

2-2. bind : /etc/resolv.conf 파일에 저장된 nameserver에게 질의

 

3. /etc/hosts 을 참조하거나 /etc/resolv.conf 에 저장된 nameserver

질의가 성공하면, IP주소를 획득하고, 다음 통신을 진행하고,

실패하고 통신을 진행하고 않는다.

 

 

 

 

 

도메인의 종류

 일반(gTLD)  도메인 : com, net, org, edu, ...
 국가(ccTLD) 도메인 : kr, fr, sp
 특수          도메인 : arpa

 

 

 

 

 

DNS 레코드
  A : IPv4 Address, 정방향 조회 (DomainName -> IP Address) 
  AAAA : IPv6 Address, 정방향 조회 
  mx : Mail eXchanger, 메일 교환기(서버) 
  ns : Name Server   , 네임(DNS)서버 
  soa : Start Of Authority, 권한의 시작(Master NS) 
  cname : Canonical Name, 별칭 이름 
  ptr : Pointer, 역방향 조회 (IP Address -> DomainName) 
  txt : Text, 서버의 대한 설명 
          사용을 안하면서 역할의 바뀐 상태, 
          SPF(Sender Policy Framework)

 

 

 

 

 

필요한 패키지

네임서버 운영에 필요한 패키지들
 - bind, bind-libs, bind-utils, (bind-chroot)

 

 

 

 

 

DNS 조회 유틸리티
  1. nslookup 사용법
     nslookup  [-type=레코드]  도메인네임  [DNS IP]
     -type=레코드  : 질의 도메인네임 유형을 지정한다.
                     생략할 경우 기본값 -type=a (IPv4)
     DNS IP        : 특정 DNS 서버(IP)로 질의하고 싶을 때 사용
                     생략할 경우, 시스템 등록된 기본 DNS로 질의

  2. dig 사용법
     dig  [-x]  [@DNS IP]  도메인네임  [레코드]  [+옵션]
     -x : 역방향 조회시 사용, 생략할 경우 정방향 조회
     @DNS IP    : 특정 DNS 서버(IP)로 질의하고 싶을 때 사용
                  생략할 경우, 시스템 등록된 기본 DNS로 질의
     레코드     : 질의 도메인네임 유형을 지정한다.
                  생략할 경우 기본값 -type=a (IPv4)
     +옵션      : +short - 응답 중 Answer 섹션의 내용만 출력

 

 

 

 

 

NS(네임서버) 구축 순서

rpm -e bind-chroot (CentOS5 에는 기본적으로 설치되어있다. 간단하게 구축하기 위해 삭제하고 설치하자.)

 

0. 패키지: bind, bind-utils, bind-libs, ...

파 일: 설정 - /etc/named.conf

/etc/rndc.conf

/etc/rndc.key

/etc/named.rfc1912.zones <- 추가

/etc/named.root.hints <- 추가

영역 - /var/named/*.zone

 

1. 설정파일 수정: /etc/named.conf

 

2. 영역 설정파일: /var/named/*.zone

$TTL 시간 ; 기본 TTL 시간을 설정

$ORIGIN 영역명.

영역명. IN SOA ; Master NS 관련 설정

마스터NS 관리자E-Mail ( 시리얼 갱신주기 재시도 만료 최소TTL )

 

영역명. IN NS ; Master/Slave NS 나열

3. 설정파일 점검명령어: named-checkconf, named-checkzone

 

 

 

 

 

ZONE 파일 설정하는 여러가지 방법

1. $ORIGIN 과 상관없이 설정하는 방법: 모든 도메인명에 .으로

마무리를 한다.

 

2. $ORIGIN 을 적극적으로 이용하는 방법: ORIGIN == @, .을 생략하면

ORIGIN(@)이 뒤에 따라붙는다.

왼쪽(질문) 도메인이 생략된 경우 위에 질문 도메인이 아래로 상속된다.

 

3. $ORIGIN 을 수정, 이용하는 방법(.을 생략해도 상관없는 방법)

 

 

 

 

----------------------------------------실습----------------------------------------

 

 

# yum install bind bind-utils bind-libs

네임서버를 구축하기 위해 bind 패키지들을 설치해주자.

 

 

 

 

 

 

# vi /etc/named.conf

파일을 수정하자. 파일 내용은

----------------------------------------------------------------------

options {

listen-on port 53 { any; };

// 나의 어떤 IP와 포트로 청취할 것인가의 옵션이다.

listen-on-v6 port 53 { none; };

// 위 옵션과 같이 IPv6 의 IP 와 포트를 청취할 것인가이다.

directory "/var/named";

// zone 파일이 있을 기본값 위치

dump-file "/var/named/data/cache_dump.db";

statistics-file "/var/named/data/named_stats.txt";

memstatistics-file "/var/named/data/named_mem_stats.txt";

allow-query { any; };

// 어떤 IP한테서의 쿼리를 허용할 것인가이다.

allow-query-cache { any; };

// 캐시 서비스에 대한 것을 어떠한 IP한테서의 쿼리를 허용할 것인가이다.

};

 

include "/etc/named.rfc1912.zones";

// sample 로 있는 cache를 이용했다. cache에 대한 zone 파일이 저장되어 있다.

// 이는 /etc/named.rfc1912.zones 불러온다는 뜻이다.

 

ZONE "cgh.co.kr" IN {

type master;

file "cgh.co.kr.zone";

};

// DNS 서버를 운영하기 위하여 나만의 ZONE 파일을 정의하엿다.

----------------------------------------------------------------------

 

 

 

 

 

# vi /var/named/cgh.co.kr.zone

으로 설정파일에서 만든 zone 파일을 생성하자.

zone 파일의 내용은

----------------------------------------------------------------------

$ORIGIN cgh.co.kr.

$TTL 1D

@ IN SOA ns1 root(

2020072200 ; Serial Number

3H ; Refresh

15M ; Retry

1W ; Expire

1D ) ; Minimum TTL

// SOA 설정값이다

 

cgh.co.kr. IN NS ns1.cgh.co.kr.

// 네임서버 지정

 

ns1.cgh.co.kr. IN A 192.168.200.103

// 네임서버 IP 지정

 

www.cgh.co.kr. IN A 123.123.123.123

ftp IN A 222.222.222.222

// 테스트 해보기위한 각종 도메인 지정

----------------------------------------------------------------------

 

 

 

 

 

테스트를 위해

# vi /etc/resolv.conf

에서 DNS 서버를 루프백으로 바꾸어 테스트하자.

 

 

 

 

 

# iptables -I INPUT -p udp --dport 53 -j ACCEPT 

# service named restart

방화벽을 개방시키고 서비스를 구동하여 리눅스와 윈도우에서 테스트해보자.

 

 

 

 

 

 

이 처럼 캐시 DNS 서비스와 임의로 만든 ZONE 파일이 잘 작동되는 것을 확인할 수 있었다.