서버 운영/Linux

DNS 서버 환경 설정 파일 named.conf

meong_j 2021. 11. 1. 00:09
728x90
반응형

DNS(Domain Name System)

도메인 네임 시스템(Domain Name System)은 호스트의 도메인 이름을 IP주소로 바꾸거나 그 반대의 변환을 위해 개발되었다. DNS서버는 보유한 도메인을 관리해주는 역할을 수행하지만, 클라이언트에서 도메인명에 대한 IP주소의 조회를 요청했을 경우에 반환해주는 역할도 수행한다.

 

DNS 서버 프로그램 : BIND(Berkeley Internet Name Domain)

bind는 가장 널리 쓰이는 DNS 서버 프로그램으로 ISC에서 DHCP 서버 프로그램과 함께 공개 소프트웨어로 배포되고 있다. 데몬명은 named를 사용하고 있다.

# yum install bind
  • centOS 7 버전에서 bind의 모든 패키지를 설치 할 수 있다.

 

/etc/named.conf 파일

  • DNS 서버의 전반적인 환경 설정을 담당하는 파일이다.
  • 서버에서 사용하는 zone파일 및 reverse zone 파일을 지정한다.

 

1) options 구문

  • DNS 서버의 동작 및 제어와 관련된 여러 가지 설정을 하는 영역
  • 존 파일이 위치하는 디렉터리명은 반드시 명기 해야함
directory  "/var/named";     
-> 존 파일이 위치하는  디렉터리 명을 명기한다.

 

forward (only|first);
-> forwarders  옵션과 같이 사용되며 only 나 first 두 값 중 하나를 갖는다.
-> only는 자신에게 들어온 도메인 질의를 지정한 다른 서버에 넘기도록 하는 것으로 다른 서버가 그에 대한 응답이 없을 경우 그 자신도 그 질의에 대해 응답하지 않는 경우 설정한다.
-> first는 타 서버에서 응답이 없을 때 자신이 응답하도록 설정한다
forwarders { 네임서버주소1; 네임서버주소2;... }
-> 도메인에 대한 질의를 다른 서버로 넘길때 사용하는 옵션으로 복수 형태로 지정 가능하고
세미콜론(;)로 구분한다.

 

forward first;
forwarders { 168.126.63.1; };
// 도메인에 대한 질의를 다른 DNS 서버인 168.126.63.1로 넘기는데,
// 이 서버에서 응답이 없을 경우에만 질의 응답을 처리한다.

 

allow-query { 192.168.28/24; 192.168.12.17; ihd; };
// 네임 서버에 질의할 수 있는 호스트를 192.168.28.0 네트워크 대역에 속한 호스트, 
// 192.168.12.17, ihd 로 묶은 호스트만 가능하도록 설정한다.,

 

2) acl 구문

  • ACL(Access Control List)의 약자로 여러 호스트를 하나의 명칭으로 지정한다.
acl "member" { 210.96.52.100; 203.247.40/24; 211.58.96.100; }

 

acl "member" {  210.96.52.100; 203.247.40/24; };
options {
    directory  "/var/named"; 
    allow-transfer   { 203.247.51.29;  203.247.51.30; }
    forward only;
    forwarders { 203.247.32.31;  };
    allow-query { 203.247.50/24; member; };
}
- 존 파일을 받을 수 있는 호스트 IP주소는 203.247.51.29 , 203.247.51.30로 설정한다.
- 서버로 들어온 도메인 질의 요청은 IP주소가 203.247.32.31인 호스트로 넘기고,
해당 서버에서 응답이 없더라도 질의에 대한 응답은 해주지 않는다.
- 도메인 질의 요청은 203.247.50.0 네트워크 대역에 속한 호스트와 member로 설정한 리스트만 가능하도록 설정한다.

 

acl "ihd" { 192.168.5.13; 192.168.12.22; 192.168.6.0/24; };
// IP 주소가 192.168.5.13 및 192.168.12.22인 호스트와
// 192.168.6.0 네트워크 대역에 속한 호스트를 ihd 라는 하나의 명칭으로 지정한다.

 

3) zone 구문

  • 도메인을 관리하는 데이터베이스 파일인 zone 파일을 지정한다.
zone "도메인명" IN {
         type (master | slave | hint);
         file  "존파일명";
}
항목 설명
zone 도메인명 자리에 설정하려는 도메인 이름을 기재한다.
리버스 존 파일에 대한 설정은 맨 마지막 주소를 제외하고 "50.247.203.in-addr.arpa" 형식으로 기재한다.(ip주소 반대로)
type DNS의 종류를 나타낸다. 
master는 Primary, slave는 Secondary, hint는 리졸빙을 위한 root zone 서버를 나타낸다.
file 사용하려는 존 파일명을 기재한다. 
일반적인 존 파일명은 "도메인명.zone"으로 설정하고 
리버스 존 파일은 "도메인명.rev"로 설정한다.
zone "linux.or.kr" IN {
      type master;
      file "linux.zone";
};

zone "12.168.192.in-addr.arpa" IN {
       type master;
       file "linux.rev";
};

-> DNS 서버의 IP주소는 192.168.12.22이고, 도메인은 linux.or.kr이다.
zone 파일은 linux.zone이고 Reverse Zone 파일은 linux.rev로 설정한다.

 

 

zone 파일

zone파일은 /etc/named.conf 파일에 저장된 디렉터리에 지정된 파일명으로 생성해야 한다. 기본 설정 디렉터리는 /var/named 디렉터리이므로 이 디렉터리에 생성하면 된다.

사용하는 도메인에 따라 zone 파일은 일반 존 파일과 리버스 존 파일로 나누어진다. 리버스 존 파일은 필수적으로 생성할 필요는 없지만, ip주소에 따른 도메인 조회를 하는 사이트로 메일 전송할 경우에 스팸 처리가 될 수도 있으니 염두에 두어야 한다. 존 파일은 메인 도메인뿐만 아니라 , 2차 도메인을 관리하는 역할도 한다.

 

zone 파일의 구조

zone 파일은 크게 SOA 레코드와 자원 레코드로 나눌 수 있다.

[$TTL]    [ID]
@ 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]

1) $TTL

  • Time to Live의 약자 zone 파일의 첫 줄에 설정해야 한다.
  • 다른 서버에서 도메인 관련 정보를 조회해서 가져갔을 경우에 그 쪽 서버의 캐시에 해당 정보가 얼마나 머물지를 결정한다.

2) SOA record

  • 존 파일을 시작하는 레코드
  • 시작은 도메인명 또는 도메인명을 나타내는 기호인 '@'을 사용한다.
주요 구성 설명
nameserver 네임 서버의 호스트명과 도메인명을 적는다.
전체 도메인으로 기입할 경우에는 마지막에 루트 도메인을 뜻하는 '.'을 찍어야 한다.
예) ns.linux.or.kr.
contact_email_address 관리자의 이메일 주소를 적는다
'계정.도메인' 형태로 기입하고, 마지막에 루트 도메인을 뜻하는 '.'을 찍어야 한다
serial_number 일종의 일련번호, 'YYYYMMDDNN' 형식 사용 
refresh_number 보조 네임 서버가 주 네임 서버에 얼마나 자주 체크 할 것인지 설정
retry_number 보조 네임 서버가 주 네임 서버 접근에 실패했을 경우 재시도할 주기 설정
expire_number 보조 네임 서버가 주 네임 서버 접근에 실패하여 retry_number에 설정한 주기로 재시도시 만기 시간 설정
minimum_number 일종의 SOA 영역의 TTL로서 가져간 정보의 최소 보관 시간 설정

3) 도메인

  • 도메인명, 호스트명, 공백, @, * 등이 올 수 있다
  • @는 현재 도메인
  • * 는 모든 호스트명
  • 호스트명만 기입하면 '호스트명.도메인이름'
  • 전체 도메인명 지정시 반드시 맨뒤에 '.'을 붙여야함

4) TTL

  • 해당 레코드에 대한 TTL 값 설정 항목
  • 보통 생략하고, $TTL 항목에 설정된 값이 반영됨

5) class

  • 레코드의 클래스를 지정하는 부분을 IN, CH, HS 등이 사용 가능
  • 보통 Internet을 의미하는 IN을 사용하는데 생략해도 무방

6)  type

해당 레코드 타입을 지정하는 영역

type 설명
A IPv4의 주소 기입시 사용
AAAA IPv6의 주소 기입시 사용
NS 도메인 네임 서버 지정시 사용
MX 메일 서버 지정시 사용, MX 다음에 0 또는 양의 정수값 기입하여 우선순위 지정
CNAME 일종의 별칭 지정
PTR 리버스 존에서만 사용하는 레코드로 IP주소를 도메인으로 변환

7) Rdata

IP주소, 도메인명, 호스트명을 지정하는 영역

@     IN SOA ns.ihd.or.kr.  kait@ihd.or.kr. (
             --중략
            3H)  ; minimum
       IN NS     ns.ind.or.kr.     ; 도메인은 ihd.or.kr이고, 관리자 메일은 kait@ihd.or.kr 일때 관련 설정
       IN A      192.168.5.13
       IN MX 10  ihd.or.kr.      ; ihd.or.kr 도메인으로 메일을 받을 수 있도록 설정, 0이상의 양의 정수 모두 가능
www IN A 192.168.5.13     ; www 도메인을 사용하는 호스트의 ip주소를 192.168.5.13 으로 설정

 

 

반응형