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. 도메인 서버 시작
서비스가 시작이 되면 /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. 설정한 데이터베이스 파일 확인