본문 바로가기

Linux

DNS 관리 서비스

DNS (Domain Name System) 의 개요

 

1) DNS 의 개념과 구성요소

 

1. DNS 서비스의 개념

도메인 이름과 IP 주소를 상호 변환하는 서비스

 

2. DNS 서버의 동작과 종류

DNS 서버는 도메인을 관리하고 클라이언트 요청에 따라 도메인명 <-> IP주소 를 변환하여 응답

TCP/53, UDP/53 포트를 이용.

 

DNS 동작순서

1 - 클라이언트에서  도메인 주소를 입력하면, Local DNS 관련 IP 주소를 질의

2 - Local DNS에 호스트 네임에 대한 정보가 없을 경우 Root DNS에 질의 시작

3 - Root DNS 에도 관련정보가 없으면 다른 DNS 서버에 질의

4,5 - Local DNS는 .com 을 관리하는 DNS에게 질의하고 관련 정보가 없을경우 다시 질의할 다른 DNS 서버의 주소를 응답 받음.

6,7 - Local DNS는 www.youngjin.com을 관리하는 DNS에 질의하고 관련 정보가 있을경우 IP 주소를 응답 받음. 

8 - Local DNS는 www.youngjin.com 에 대한 IP 주소를 캐싱하고 클라이언트에게 전달

 

Primary Name Server Master Server 라고 하며, 필수 항목.
SecondaryName Server Slave DNS 라고 하며, Primary Server의 zone 파일을 백업.
Master DNS에 문제가 있을경우 보조 DNS로 사용가능.
Caching Name Server 도메인 관리없이 리졸빙 resolving 역할만 수행하는 서버로 도메인에 대한 리졸빙 결과를 저장하고 
해당 요청이 있을시 바로 응답하여 속도를 향상시키는 역할을 담당.

 


DNS 서비스 사용하기

 

1) DNS 서비스 설치

 

1. DNS 관련 패키지 설치

리눅스의 DNS 서버 프로그램 이름은 bind이며, named라는 데몬 이름을 가짐.

yum -y install bind 명령으로 DNS 관련 패키지인 bind, bind-libs, bind-utils 설치

 

bind 관련 파일과 디렉터리

/etc/rc.d/init.d/named DNS  서버를 시작하기 위한 데몬 스크립트
stop, start, restart, reload 등 실행 옵션 사용가능
/etc/named.conf 존 파일, 리버스 존 파일을 비롯한 DNS 서버의 주요한 환경을 설정하는 설정파일.
zone 파일은 도메인 이름과 IP주소 혹은 관련 리소스간 매핑을 포함하고 이소스 레코드로 구성.
리버스 존 파일을 이용해 IP주소에 대한 도메인 정보 조회를 제공
/var/named 루트 도메인 서버의 정보를 담은 named.ca. 사용자가 설정한 zone파일 등을 저장하는 디렉터리.

 

2) /etc/named.conf 파일 설정

 

1. /etc/named.conf 형식

  • options, acl, logging, zone 등의 주요 구문이 있음. 
    각 구문은 중괄호 {} 로 둘러싸고 끝날때는 세미콜론 ; 을 사용.
  • include 지시자를 선언하여 별도의 파일에 추가 정의 가능

2. options 구문의 설정 항목

options {
        //listen-on port 53 { 127.0.0.1; };

        listen-on port 53 { any; };

        // DNS 서버의 port 번호 설정과 접근 할 수 있는 IP 설정 옵션

        // DNS port 53에 대한 모든 IP가 접근 가능하도록 설정
        listen-on-v6 port 53 { ::1; };
        directory       "/var/named";

        // zone 파일 디렉토리 설정 옵션
        dump-file       "/var/named/data/cache_dump.db";

        //cache dump 파일이 생성되는 파일의 디렉토리 설정 옵션

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

        // 통계파일이 생성되는 디렉토리와 파일의 이름을 지정하는 설정 옵션
        memstatistics-file "/var/named/data/named_mem_stats.txt";

        //memory관련 통계파일이 생성되는 디렉토리와 파일의 이름을 지정하는 설정 옵션

        allow-query     { any; };

        // DNS 서버의 쿼리를 허용할 ip 대역 설정

        recursion yes;

        // 하위도메인 검색 허용 여부 지정. 외부에서 Name Server를 지정하여 허용/차단 옵션

        dnssec-enable yes;

        // DNSSEC 서명검증 기능 설정 (공개키 암호화방식으로 데이터 위조-변조 공격을 막는 설정 )

        // DNSSEC ( Domain Name System Security Extension ),bind 9버전 부터 적용
        dnssec-validation yes;

        // DNSSEC 검증 확인 설정
        dnssec-lookaside auto;

        /* Path to ISC DLV key */
        bindkeys-file "/etc/named.iscdlv.key";

        managed-keys-directory "/var/named/dynamic";

         // DLV ( DNSsec Lookaside Validator )
};

 

3. logging 구문의 설정 항목

bind 네임 서버의 로깅방식을 설정

 

logging {
        channel default_debug {
                file "data/named.run";
                severity dynamic;
        };
};

//Name Server의 실행에 있어 디버깅시에 참조 할 수 있는 log파일 생성 위치를 지정하는 설정 옵션

 

4. acl 구문의 설정 항목

acl(Access Control List) 구문은 여러 호스트 들을 하나의 이름으로 지정하여 options 구문의 allow-query, allow-transfer 등에 사용.

options 구문 이전에 설정.

 

ex) ihd 란 이름을 별칭으로 사용

acl ihd { 192.168.2.24; 192.168.4/24; }

 

5. zone 구문의 설정 항목

도메인을 관리하기 위한 데이터 파일인 zone 파일을 지정.

 

zone [도메인명] IN {
  type [master | save | hint];
  file [존 파일명];
}

hint : 루트 도메인 지정
master : 1차 네임서버를 지정
slave : 2차 네임서버 지정
zone "." IN {
  type hint;
  file "named.ca";
}
zone "linux.or.kr" IN {
  type master;
  file "linux.zone";
}

 

2) zone 파일 설정

 

1. zone 파일 특징

  • zone 파일은 도메인 이름과 IP 주소 혹은 관련 리소스 간 매핑 mapping을 포함하고, 리소스 레코드로 구성.
  • 리버스 존 파일을 이용해 IP 주소에 대한 도메인 정보 조회를 제공.
  • ; 를 이용하여 주석을 추가.

2. 구조

 

$TTL 1D

@  IN SOA ns.ihd.or.kr. kait.ihd.or.kr (
...
3H) ; minimum
IN NS ns.ihd.or.kr.
IN A 192.168.12.22
IN MX 10 ihd.or.kr.
www IN A 192.168.12.22
www1 IN CNAME www

 

구성항목

$TTL - Time To Live 의 약자. 설정한 정보를 다른 DNS 서버에서 조회하였을 경우 캐시에 보관할 시간 지정
- zone 파일의 첫번째 라인에 위치.
- 기본 시간 단위는 초. W,D,M 단위로 설정
SOA 레코드 - Start Of Authority 약자로 도메인 관리자 메일, 일련번호 등 DNS 핵심정보 지정.
- @ 기호는 오리진 도메인을 의미. /etc/named.conf 파일에서 설정한 도메인명.
만일 도메인명을 직접 지어할경우 마지막에 '.' 을 반드시 추가
SOA 레코드의 세부 속성은 별도의 표 참조.
개별도메인
(리소스 레코드)
[도메인명][IN][Class][Record Type][우선순위][도메인 혹은 IP]  형식

 

SOA 레코드 주요 속성

Nameserver 네임 서버의 호스트명과 도메인 명을 지정.
google.com. ('.'으로 끝남)
Contact_email_address 계정.도메인. 형식으로 관리자의 이메일 주소를 지정
Sereal_number Zone 파일이 갱신되면 증가하게 되는 일종의 일련번호
보통 YYYYMMDDNN 형식을 사용, NN 은 수정 횟수를 기입.
Refresh_number 보조네임 서버가 정보 업데이트를 위해 주 네임 서버에 얼마나 자주 접근 점검할 것인지 설정.
Retry_number 보조네임서버가 주 네임 서버로 접근 실패할 경우 재시도할 주기를 결정
Expire_number Retry_number에 설정한 주기로 재시도할 때의 만기시간을 지정
Minimum_number 일종의 TTL과 같은 개념으로 정보의 최소 보관 시간을 설정.

 

주요 레코드 타입

A(Address Mapping Records) 도메인 이름에 해당하는 IPv4 주소
AAAA(IPv6 Address Records) 도메인 이름에 해당하는 IPv6 주소
CNAME(Canonical Name) 도메인 이름의 별칭
HINFO(Host Infomation) CPU, OS 유형 등 호스트에 대한 정보
MX(Mail exchanger) 도메인 이름에 대한 공식 네임 서버
NS(Name Server) 호스트에 대한 공식 네임 서버
PTR(Reverse-lookup Pointer records) IP 주소를 기반으로 도메인 이름 반환
SOA(Start of Authority) 도메인 관리자 메일, 일련번호 등 DNS 핵심 정보 지정
TXT(Text) 임의의 텍스트 문자열 저장.

 

3) DNS 관련 주요 명령어

 

1. DNS 서비스 시작과 상태 점검

service를 명령어를 이용해 named 데몬을 실행하고 자세한 동작 상태를 확인

 

2. DNS 관련 주요 명령어

 

named-checkzone zone 파일의 문법적 오류를 점검
named-checkzone [도메인명][zone파일경로]의 명령 옵션을 이용
named-checkconf /etc/named.conf 환경성정 파일의 문법적 오류를 점검.
named-checkconf [파일경로] 의 명령 옵션 이용
rndc status DNS 서버의 자세한 상태를 확인
host 도메인을 조회하는 명령어
dig 명령을 이용하면 좀더 자세한 정보를 확인.

'Linux' 카테고리의 다른 글

가상화 관리 서비스  (0) 2020.10.02
네트워크 보안  (0) 2020.09.28
메일 관련 서비스  (0) 2020.09.27
파일관련 서비스  (0) 2020.09.27
인증관련 서비스  (0) 2020.09.25