본문 바로가기
Linux

DNS1

by Salt-Fn 2020. 11. 29.

1. DNS서버 설치

1. BIND(Berkeley Internet Name Domain)패키지 설치

#yum install bind* //bind패키지 설치

■ 패키지 설치 후 생성되는 주요 파일 및 디렉토리

/var/named/chroot/etc/named.conf :네임 서버의 주 설정파일

/var/named/chroot/etc/named.rfc1912.zones : 존 정보를 설정하기 위한 파일

/var/named/chroot/var/named : 네임서버의 데이터베이스 파일을 보관하는 디렉토리

/usr/sbin/named : 네임서버 데몬 파일

 

■ 설치되는 주요 패키지 bind : DNS서버 구축 프로그램 제공

bind-utils : DNS서버 질의를 위해 사용되는 유틸리티 모음

bind-libs : BIND와 BIND유틸리티 프로그램이 사용하는 라이브러리 패키지

bind-chroot : BIND의 chroot(change root)환경을 위해 사용되는 파일 제공

 

부팅시 자동으로 구동되게 설정

// chkconfig 명령어 : 데몬 관리 명령어

// xinetd가 관리한다. 서비스를 즉시 적용한다.

// 특정 run level 에서 실행할 프로그램을 등록/설정/변경할 수 있다.

// chkconfig --list // 서비스 상태(런 레벨)를 확인하는 명령어

// chkconfig --list sshd // 특정 서비스의 상태(런 레벨)를 확인하는 명령어

// sshd 0:off 1:off 2:on 3:on 4:on 5:on 6:off // 해당 서비스 서버를 부팅과 동시에 구동하고 싶으면 on 옵션을, 부팅시 자동 구동되지 않게 하려면 off옵션으로 설정

// chkconfig --level [runlevel] [sshd] on // 부팅시에 서비스 실행

// chkconfig --del portmap 특정 서비스 삭제

// chkconfig --add portmap 특정 서비스 추가

 

2. 도메인 서버 시작

named 프로세스가 실행되면 53번 포트가 열림

서비스가 시작이 되면 /var/named/chroot/etc/ 경로 밑에 named.conf 파일과 named.rfc1912.zones 파일이 자동으로 생성된다.

 

: named 데몬이 사용하는 홈 디렉토리는 일반적으로 /var/named/chroot/를 사용

: DNS서버의 보안을 높이기 위한 방식으로 /var/named/chroot/ 를 최상위 '/'루트로 인식하여 상대 경로로 파일을 참조

: 설정 파일들은 모드 chroot디렉토리 내부에 있어야한다. named의 작업은 /var/named/chroot/ 경로 아래에서부터 시작한다.

※ chroot : 보안상의 이유, WINSCP를 이용해 해당 리눅스 서버로 파일을 옮길 경우 해당 리눅스 시스템의 디렉토리 정보가 다 보임. 그러나 chroot를 사용할 경우 경로 보여주는 것을 막음

※ /etc/named.conf : /etc/ 경로 바로 밑에도 named.conf 파일이 존재하지만 거기에서 작업을 하지는 않는다. chroot/etc/경로 아래에는 named.conf, named.rfc1912.zones 파일이 존재한다. 두 개의 파일이 include 되어서 하나의 파일과 같이 동작한다. named 서버 구축의 핵심 파일

도메인에 대한 정보를 저장하는 zone파일의 경우 /chroot/var/named/ 경로 아래에 도메인명 .named.zone(ex : kjmsj.co.kr.named.zone)형식으로 해당 도메인별로 zone파일을 만든다.

 

2. Root 네임 서버 정보 갱신

#yum -y install wget

#wget ftp://rs.internic.net/domain/named.root // 최신 named.root 파일을 다운로드 (현재 디렉토리 다운)

#mv named.root /var/named/ ; cd /var/named // 파일 옮기기, named 디렉토리로 이동

#cp -p named.root named.ca // 파일을 덮어 씌우기 #cat named.ca

// 12번째 줄 : 최근 업데이트 날짜, 루트서버에 대한 정보 확인 가능 </var/named/named.ca>

// 루트 네임서버는 현재 13개가 운영되고 있으며 더 이상 늘릴 수 없다. (DNS 프로토콜 상의 512byte제약 때문)

// 일반적으로 DNS질의는 UDP를 사용하는데 데이터의 크기가 512byte를 넘게 되면 TCP를 사용 > TCP를 사용하면 느려질 수 있다. (3way-handshark)

3. 도메인 설정

 

</var/named/chroot/etc/named.conf> // 주 설정 파일☆

 

listen-on port 53 { 127.0.0.1; };

   > 네임서버의 포트변화와 접근할 수 있는 IP를 설정

   > 기본적으로 127.0.0.1, 자신만이 54번 포트에 접속을 허용

   > 외부에서 네임서버로의 접근을 허용해야 한다면 IP부분에 any를 입력

listen-on-v6 port 53 {;;1;}; > IPv6의 네임서버 운영을 설정

   > 현재 사용x

directory "/var/named"

   > DNS의 zone파일의 위치를 지정

   > zone 파일의 기본 설정파일들은 /var/named 디렉토리에 모두 위치

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

   > 캐시 덤프 파일이 생성되는 파일의 절대 경로 위치를 지정

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

   > 메모리 관련 통계파일이 생성되는 절대경로와 파일이름을 지정

allow-query {localhost;};

   > 네임서버 쿼리를 허용할 IP또는 IP대역을 설정

   > 외부와의 쿼리를 허용할려면 any입력

logging {

     chkannel default_debug {

          file "data/named.run";

          serverity dynamic;

     };

};

   > 디버깅시 참고 할 수 있는 로그파일 생성 위치를 지정

   > 네임서버 에러 발생 시 이 파일 참고하여 디버깅

recursion yes;

   > 외부에서 현재의 네임서버를 지정하여 사용할 것인지의 여부

   > 네임서버 쿼리시에도 설정에 따라 쿼리결과를 얻을 수 없도록 설정 할 수 있다.

   > 기본은 yes

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

   > 네임서버 데몬 실행 시 외부의 설정파일을 포함하고자 한다면 include를 이용하여 포함할 파일의 위치와 파일이름의 절대경로를 입력

   > /etc/named.rfc1912.zones 설정파일을 포함한다는 의미

zone "." IN { type hint; file "named.ca"; };

   > 존파일에 정의되어 있는 (.)의 의미는 루트도메인이라는 뜻

   > 루트 도메인의 내용이 named.ca파일에 정의되어 있다.

   > type설정에서 hint설정을 하면 루트도메인을 지정한다는 의미

   > master라고 입력하면 1차 네임서버를 의미, slave라고 입력하면 2차 네임서버를 지정

4. 도메인 추가

vim /var/named/chroot/etc/named.rfc1912.zones

 : 도메인 추가를 위해 사용되는 기본 파일

 : /etc/named.conf의 지시어 include를 통해 사용된다.

 : /etc/named.confdp 도메인 추가를 직접 설정해도 동일한 결과가 나옴.

tpye master;

 : tpye종류

 : master 해당 존에 대한 정보를 제공하기 위해 지정

 : slave 해당 존에 정보를 마스터 서버로 부터 받아 제공하는 슬레이브 네임서버로 지정

5. 정방향 데이터 베이스 파일 생성

#cd /var/named/chroot/var/named/

#cp named.empty hyeon.zone named.empty : 도메인 데이터베이스 파일 양식

#vim hyeon.zone : 파일 수정

6. 역방향 데이터 베이스 파일 생성

#cp named.empty hyeon.rev.zone

7. 설정한 데이터베이스 파일 확인