유닉스 계열 컴퓨터에서의 DNS 서버 설정은 거의 비슷합니다.
bind 라는 소프트웨어를 사용하는데..
이 소프트웨어를 설치하면 돌아가는 데몬이 in.named 라는 데몬입니다.
솔라리스에는 전체설치를 하시면 이 소프트웨어는 기본 설치 되어 있습니다.
이 데몬은 시스템 부팅시에 /etc/named.conf 파일의 존재 여부에 따라 시작이 결정됩니다.
일단 DNS 의 구성 파일부터 살펴 봅시다.
dns 구성 파일 종류
/etc/named.conf -> dns 환경 설정 파일
/var/named/zoneinfo -> dns 이름을 iP 로 바꿔주는 데이터 파일
/var/named/revzone -> IP 를 dns로 바꿔주는 데이터 파일
/var/named/localzone -> loopback dns 파일
/var/named/named.root -> root name server 기록 파일
할이야기가 많은데 .. 천천히 가보죠..
먼저.. /etc/named.conf 파일부터 봅시다.
전제조건
====================================================================
= 1. domain name 은 sunsol.net 으로 한다.
= 2. IP 주소 권한 영역은 : 211.108.174.0 ~ 255 으로 한다.
= 3. 주석문은 #, /*, */ 이다 하지만 ';' 는 문장의 끝을 뜻하는 문자이다. 주석과 마찬가지로 해석된다.
= 4. /var/named 를 미리 만들고 이곳은 dns 데이터 파일의 저장 장소로 한다.
= 5. Name Server 는 ultra30 번으로 하고 IP 주소는 211.108.174.30 이다.
= 6. named.root 파일은 ftp://ftp.rs.internic.net/domain/named.root 에서 다운받기로 한다.
===================================================================
1. /etc/named.conf
- dns 환경 설정 파일로 dns 데이터 파일이 저장될 위치와 각 파일이름 등을 정의한다.
-
- 내용..
--------------------------------------------------------------------------------
# vi /etc/named.conf
options {
directory "/var/named"; # dns 파일들이 저장될 위치 정의
pid-file "/etc/named.pid"; # in.named 프로세스의 pid 값을 저장하고 있는 파일 정의
};
zone "sunsol.net" in { # sunsol.net zone 을 정의 한다. : 도메인이름 -> IP로
type master; # 현재 이 서버의 역할 master 로 역할한다.
file "sunsolnet"; # 이 파일이름은 sunsolnet 이다.
};
zone "174.108.211.in-addr-arpa" in { # IP 를 도메인 이름을 바꾸어줄 IP 영역대 정의
type master;
file "invsunsol"; # 파일이름은 invsunsol 이다.
};
zone "0.0.127.in-addr.arpa" in { # loopback 도메인 설정
type master;
file "loopback"; # 파일이름은 loopback 이다.
};
zone "." in {
type hint;
file "named.root";# 내 도메인 안에 있지 않은 도메인네임을 질문할 최상위 도메인 서버정보를 담고 있는 파일 설정
};
--------------------------------------------------------------------------------
- 위에서 정의하는 파일은 모두 /var/named 라는 공간에 저장된다는 사실을 주의 하자.. - 그러면 /var/named 는 여러분이 미리 만들어 주어야 한다.
- 이렇듯 named.conf 파일은 반드시 /etc/ 디렉토리 아래에 위치해 있어야 하며. 각 영역 파일들의 위치를 정의하고 있다.
2. /var/named/sunsolnet 파일
- 다음은 sunsol.net 이라는 도메인이 가지고 있는 host에 대해 외부에 이름을 알려줄 수 있는 IP 어드레스를 지칭한다.
--------------------------------------------------------------------------------
# vi /var/named/sunsolnet
sunsol.net. IN SOA ultra30.sunsol.net. root.ultra30.sunsol.net. (
20011107 ; 시리얼 넘버, 호스트를 추가한다거나 아이피를 수정할 때 마다 이 값은 반드시 증가해야 한다.
10800 ; 재전송 타이머 초 단위 현재 표기되어 있는 시간은 12시간
3600 ; 재시도 타이머 초단위 현재 표기값은 한시간
604800 ; 만기 값 초단위 현재 표기값은 1주
86400 ; 캐시에 저장된 값을 유지할 시간 현재 표기값 하루
)
; Name Servers
sunsol.net. IN NS ultra30.sunsol.net. # ultra30 호스트를 Name Server 로 둔다.
;Host Addresses
; 여기서부터 호스트에 대한 IP 주소 정의 즉, 여기에 정의한 값을 이 DNS 서버에서 관리한다.
localhost.sunsol.net. IN A 127.0.0.1
ultra30.sunsol.net. IN A 211.108.174.30
ultra20.sunsol.net. IN A 211.108.174.20
ultra3.sunsol.net. IN A 211.108.174.13
; Aliases
; 위 호스트 에 대한 별명(CNAME) 즉, ultra20번은 ultra20.sunsol.net 이기도 하며 www.sunsol.net 이기도 하다.
www.sunsol.net. IN CNAME ultra20.sunsol.net.
ftp.sunsol.net. IN CNAME ultra3.sunsol.net.
--------------------------------------------------------------------------------
- 기타 사항
IN : Internet class
A : 뒤에 나오는 데이터 타입을 정의 IP 주소가 오는 것을 볼 수 있다.
- 주의 : 반드시 도메인 명 뒤에는 . 을 찍어 주어야 한다. 그래야 완전한 도메인 명이 성립된다.
3. /var/named/invsunsol 파일
--------------------------------------------------------------------------------
# vi /var/anmed/invsunsol
174.108.211.in-addr.arpa. IN SOA ultra30.sunsol.net. root.ultra30.sunsol.net. (
20011106 ; 앞의 zone 파일과 같습니다.
10800 ;
3600 ;
604800 ;
86400 ;
)
; Name Servers
; 이부분은 Name 서버의 IP 주소를 도메인 네임으로 바꾸는부분입니다.
30.174.108.211.in-addr.arpa. IN NS ultra30.sunsol.net.
;PTR records
; 이부분 은 각 IP 주소를 도메인 네임과 일치시키는 부분입니다.
; 앞의 sunsolnet 파일과 같은 항목이 들어가 있어야 합니다.
30.174.108.211.in-addr.arpa. IN PTR ultra30.sunsol.net.
20.174.108.211.in-addr.arpa. IN PTR ultra20.sunsol.net.
13.174.108.211.in-addr.arpa. IN PTR ultra3.sunsol.net.
--------------------------------------------------------------------------------
- 위의 파일은 IP 로 질의가 들어왔을 때 도메인 네임을 되돌려 주는 부분입니다. 그러므로 나오는 항목은 sunsolnet 존 파일과 동일해야 합니다.
4. /var/named/loopback
--------------------------------------------------------------------------------
# vi /var/named/loopback
0.0.127.in-addr.arpa. IN SOA ultra30.sunsol.net. root.ultra30.sunsol.net.
(
20011107 ;
10800 ;
3600 ;
604800 ;
86400 ;
)
; Nameservers
; 자기자신의 루푸백 도메인을 가리키는 곳입니다.
;여기서는 자기자신의 값만 정의 되어 있으면 됩니다.
1.0.0.127.in-addr.arpa. IN NS ultra30.sunsol.net.
:
1.0.0.127.in-addr.arpa. IN PTR localhost
--------------------------------------------------------------------------------
5. /var/named/named.root
- 원래 DNS 서버는 자기자신이 담당하고 있는 영역 이외의 부분은 자료로서 가지고 있지 않습니다. 위의 영역에 해당하지 않는 도메인은 named.root 파일에 정의된 root 도메인 서버로 질의를 넣어 결과값을 얻고 그 얻은 내용은 cache 파일에 저장합니다. 캐쉬파일에 넣어두는 기간은 앞에 설명드렸던 타이머에 의해 정의 됩니다.
- 이 파일은 수정을 하지 않습니다. 이 파일은 internic 에서 관할하고 있는 nameless root 서버의 위치를 정의하고 있으므로 아래 주소에서 다운 받아 옵니다.
- ftp://ftp.rs.internic.net/domain/name.root
# vi /var/named/named.root
이 항목은 내용이 굉장히 많습니다. 따로 표기 하지 않겠습니다.
위 주소에서 다운 받으시기 바랍니다.
이 파일은 원래 3달에 한번씩 internic 에서 다운 받도록 권장하고 있습니다.
하지만 그럴 필요는 없습니다. root DNS 서버가 바뀌는 일은 거의 없으니까요..
6. DNS 서버 설정
위의 작업이 다 완성 되면 네임 서버를 자기자신으로 맞추어 줍니다.
--------------------------------------------------------------------------------
# vi /etc/resolv.conf
domain sunsol.net
nameserver 211.108.174.30
--------------------------------------------------------------------------------
7. in.named 구동
--------------------------------------------------------------------------------
# /etc/init.d/inetsvc stop
# /etc/init.d/inetsvc start
--------------------------------------------------------------------------------
8. 확인
# nslookup
- 이 명령을 내린후 아무런 에러 없이 작동 되면 완성된 겁니다.
bind9 설치 | unix 2005/05/31 01:11
http://blog.naver.com/ paulken/120013609095
-----------------------------------------------
BIND 9.3 를 이용한 DNS 서버 완벽 구성 가이드
-----------------------------------------------
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
작성일:2004년 10월 21일
버전:0.2
히스토리: 0.1 2004년 10월 20일 작성
0.2 2004년 10월 21일 작성
변경된점:보다 세부적인 설정에 대한 부연 설명과 키공유에 대한 부분을 강화
작성자: 김석 [solaris2u@hotmail.com]
저작권: 저작권은 본인에게 있음
이 문서를 아래에 언급된 사이트 이외에 임의배포 및 복사, 전제를 금합니다.
오직 아래 언급된 사이트들의 회원들에게만 공개되는 것이며 타 사이트와 커뮤니티에
배포시에는 저작권에 위반으로 법적 제재를 받을 수 있습니다.
타 사이트 및 커뮤니티에 배포하시고자 하는 분들은 메일로 연락주시길 바랍니다.
본 문서의 상업적 이용을 금하며 학습용으로는 언제나 환영합니다.
@@@본 문서는 편의상 존칭을 생략한 문서입니다. 양해 바랍니다.@@@
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
본 문서의 최신버전은 다음의 사이트에서 구하실 수 있습니다.
cafe.naver.com/solatech [솔라리스 테크넷]
www.solarisschool.com [솔라리스 스쿨]
www.howtosolaris.co.kr [하우투솔라리스]
www.freechal.com/sunsolve [프리챌 썬솔브 커뮤니티]
***************************************************************************************
작성자의 변:
솔라리스8 이하의 환경에서 BIND 8.x를 이용하여 구성하는 것과 달리
BIND 9.x 는 보안이 강화되었고 미묘한 부분에서 차이를 가지는데 인터넷에
떠도는 문서나 시중의 교재가 BIND 9를 이용하여 설치하는 것을 너무 장황하게
설명하거나, 실습을 따라서 구성해도 정상적으로 서비스되지 않는 문서가 너무
많아서 정리하였다.
본 문서는 BIND 9를 이용한 구성을 지원하지만 allow-query , allow-update 등 여타
보안에 필요한 요소는 구현하지 않았다.
필자는 간단하게 간편하게 구성하기 위해서 이번 문서에는 추가하지 않았으나
위에 언급한 내용이에외도 많은 보안적 요소가 있으니 보안을 위해 꼭 구성해 주기를 권장한다.
보안을 고려한 DNS에 대한 내용이 필요한 사람들은 www.krcert.or.kr 에서 확인하기를 바란다.
--------------------------------------------------------------------------------------
목표: BIND 9를 이용하여 DNS 를 구성하는 방법을 학습한다.
사용 OS : 솔라리스 9 또는 10
리눅스 8 또는 9 ( 리눅스도 솔라리스와 같은 방법으로 구성이 가능하다.)
하위 버전 OS 인 경우는 www.bind.org 에서 소스를 구하여 컴파일 후 사용하거나
www.sunfreeware.com 를 이용하여 소스설치를 진행한다.
이 문서에서는 컴파일을 통한 설치부터 구성까지 실습해 보도록 한다.
--------------------------------------------------------------------------------------
#######시나리오#######
solaris.co.kr 이라는 도메인의 네임 서버를 구성한다.
실습환경이므로 192.168.102.100 이라는 호스트가 www , mail , ns 를 모두 서비스한다고 전제한다.
소스 설치부터 진행하여 정방향 조회와 역방향 조회가 정확하게 구성되는지 테스트 한다.
--------------------------------------------------------------------------------------
#######솔라리스9에서의 BIND 9.3 설치 하기########
1. 파일 다운로드 받고 컴파일 하기
# gzip -dc bind-9.3.0.tar.gz | tar xvf -
# cd bind-9.3.0
# ./configure --prefix=/bind --with-libtool --with-openssl
--with-libtool : 공유라이브러리 빌드를 가능케 하는 옵션
--with-openssl : DNSSEC을 지원가능토록 함 , openssl이 설치되어 있어야 함
openssl이 설치된 경로가 패스가 없을시에는
--with-openssl=패스
형식으로 기재하여 사용.
# make
# make install
# cd /bind/bin
컴파일이 종료되면 /bind/bin 에 check dig dnssec named nsupdate rndc tests win32 과 같은
디렉토리가 생성되어져 있다.
네임서버 데몬은 named 에 존재한다.
******중요*************************************************************************
/etc/named.conf에서의 키 구성과 rndc.key의 이해가 요구되어진다.
일단, rndc는 네임서비스를 관리하는 데몬으로 /etc/rndc.conf로 구성이 가능하며
/etc/rndc.key에 의해 키 교환을 하게 되어 있다.
/etc/named.conf에 아래와 같이 key 설정 구성을 하거나 include "/etc/rndc.key"; 내용을 이용하여
구성이 가능하다.
key 키명{
algoritm "hmac-md5";
secret "xxxxxxxxxxx";
};
자, 여기서 key 설정 부분을 자세히 보자.
다른 내용은 별도의 문서나 책을 참고하고 일단 secret 영역에 xxxxxxx 이런식으로 표현된 부분은
/bind/bin/dnssec 에 가면 dnssec-keygen 이라는 툴이 있다.
이 툴을 이용하여 공유키를 생성할 수 있는데 사용법은 아래와 같다.
---------------------------------------------------
문법: dnssec-keygen -a hmac-md5 -b 128 -n HOST 키
---------------------------------------------------
따라서 내가 사용할 키가 rndckey 라는 키라면
===================================================
#dnssec-keygen -a hmac-md5 -b 128 -n HOST rndckey
===================================================
이런식으로 사용이 가능하다는 것이다.
BIND 9.x 계열에서는 RSA ,DSA , HMAC-MD5 중에 HMAC-MD5만 지원한다. 따라서 -a 옵션으로 hmac-md5 알고리즘
으로 지정하고 -b 옵션을 이용하여 128비트 암호길이를 지정했다.
키를 더 복잡하게 구성하고자 한다면 최대 512비트까지 지정이 가능하다.
-n HOST 뒤에는 네임서버간에서 사용할 공유키를 입력하면 된다.
dnssec-keygen 도구가 정상적으로 실행되면 Krndckey.+157+14077.key 와 Krndckey.+157+14077.private
두개의 파일이 생성되어진다.
Krndckey.+157+14077.key 을 에디터등으로 오픈하면 다음과 같다.
=====================================================
#vi Krndckey.+157+14077.key
rndckey. IN KEY 512 3 157 Y9iC3cahZ7I3+3NrtlG6nQ==
=====================================================
여기서 Y9iC3cahZ7I3+3NrtlG6nQ== 을 복사하여
key 키명{
algoritm "hmac-md5";
secret "xxxxxxxxxxx";
};
이 부분을 아래와 같이 변경한다.
key 키명{
algoritm "hmac-md5";
secret "Y9iC3cahZ7I3+3NrtlG6nQ==;
};
만일 /etc/rndc.conf 를 include 한다면 위에 key 영역 설정은 불필요하다.
2. /etc/named.conf 구성하기
======================================================
#vi /etc/named.conf
// generated by named-bootconf.pl
options {
directory "/var/named";
/*
* If there is a firewall between you and nameservers you want
* to talk to, you might need to uncomment the query-source
* directive below. Previous versions of BIND always asked
* questions using port 53, but BIND 8.1 uses an unprivileged
* port by default.
*/
// query-source address * port 53;
dump-file "/var/named/named.db"; //덤프파일 위치 지정 , 네임정보갱신시 덤프 생성
statistics-file "/var/named/named.stat";//통계처리 목적으로 생성, 메모리 통계 파일 위치지정
/*
* forward (only|first) forwarders 옵션과 함께 사용.
* forwarders {네임서버 IP ; 네임서버2 IP; ...}; --도메인에 대한 질의를 다른서버로 넘길때
* only : 다른 서버에게 질의를 지정했을시 무응답일때 자신도 응답하지 않는것.
* first : 다른 서버에서 응답이 없을 때 자신이 응답하도록 할 때 설정.
* notify (yes|no) --마스터 서버의 존 정보가 변경되었을 때 존의 2차 서버에 메시지 통보
* 기본값은 yes
*/
};
//
// a caching only nameserver config
//
controls {
inet 127.0.0.1 port 953 allow { localhost; } keys { rndckey; };
};
//key rndckey {
// algorithm "hmac-md5";
// secret "Y9iC3cahZ7I3+3NrtlG6nQ==";
//};
zone "." IN {
type hint;
file "named.ca";
};
zone "localhost" IN {
type master;
file "localhost.zone";
allow-update { none; };
};
zone "0.0.127.in-addr.arpa" IN {
type master;
file "named.local";
allow-update { none; };
};
zone "solaris.co.kr" IN {
type master; //type이 slave 인 경우는 masters { 주 네임서버 IP;}; 를 반드시 추가
file "solaris.zone";
allow-update { none; };
};
zone "102.168.192.in-addr.arpa" IN {
type master;
file "solaris.zone.rev";
allow-update { none; };
};
include "/etc/rndc.key";
======================================================
3.rndc 설정 파일 만들기
solaris10[/bind/bin/rndc] # ./rndc-confgen -k rndckey > /etc/rndc.conf
solaris10[/bind/bin/rndc] # ./rndc-confgen -a -k rndckey
solaris10[/bind/bin/rndc] # cat /etc/rndc.conf
# Start of rndc.conf
key "rndckey" {
algorithm hmac-md5;
secret "Y9iC3cahZ7I3+3NrtlG6nQ==";
};
options {
default-key "rndckey";
default-server 127.0.0.1;
default-port 953;
};
# End of rndc.conf
# Use with the following in named.conf, adjusting the allow list as needed:
# key "rndckey" {
# algorithm hmac-md5;
# secret "kMojgiTutuePjyWROKKXKg==";
# };
#
# controls {
# inet 127.0.0.1 port 953
# allow { 127.0.0.1; } keys { "rndckey"; };
# };
# End of named.conf
solaris10[/bind/bin/rndc] # cat /etc/rndc.key
key "rndckey" {
algorithm hmac-md5;
secret "Y9iC3cahZ7I3+3NrtlG6nQ==";
};
---BIND에서 8과 9의 차이는 보안이 강화되었다는 점이 주목할 점이다.
기존의 BIND 8과는 달리 key를 통한 보안 인증체계를 지니고 있다.
rndc 에 의해 네임서비스를 관리하려면 /etc/rndc.conf에 의해 관리되어진다.
두 파일의 키가 일치하는지 확인한다. 두 키가 일치되어야 추후에 rndc가 정상적으로 구동된다.
4.정방향 조회 영역 만들기
주의! 영역 구성시 BIND8과 BIND9의 큰 차이중에 하나가 바로 $TTL 이다. BIND 8.x에서는
상관없으나 BIND9.x 에서는 반드시 맨위에 기술되어야 한다.
그렇지 않으면 네임서비스는 동작하지 않는다.
#vi /var/named/solaris.zone
$TTL 10M
@ 1D IN SOA ns.solaris.co.kr. root.solaris.co.kr. (
42 ; serial (d. adams)
3M ; refresh
1M ; retry
1W ; expiry
1D ) ; minimum
1D IN NS ns.solaris.co.kr.
1D IN MX 10 mail.solaris.co.kr.
1D IN A 192.168.102.100
ns IN A 192.168.102.100
www IN A 192.168.102.100
mail IN A 192.168.102.100
solaris.co.kr. IN A 192.168.102.100
5.역방향 조회 영역 만들기
#vi /var/named/solaris.zone.rev
$TTL 10M
@ IN SOA ns.solaris.co.kr. root.solaris.co.kr. (
2004101801 ; Serial
28800 ; Refresh
14400 ; Retry
3600000 ; Expire
86400 ) ; Minimum
IN NS ns.solaris.co.kr.
50 IN PTR ns.solaris.co.kr.
50 IN PTR www.solaris.co.kr.
50 IN PTR mail.solaris.co.kr.
6./etc/hosts 와 /etc/resolv.conf 구성 내용 확인 및 변경
#cat /etc/hosts
127.0.0.1 localhost localhost.localdomain
192.168.102.100 ns ns.solaris.co.kr
#vi /etc/resolv.conf
domain solaris.co.kr
search solaris.co.kr
nameserver 192.168.102.100
7.네임서비스 구동하기
패키지를 설치하지 않고 소스를 이용하여 설치한 경우는 named가 /bind/bin/named에 존재하므로
/bin/named 로 링크를 걸어주는 것이 사용상 용이하다.
링크거는 과정등은 생략한다.
#named
#ps -ef |grep named
데몬이 떠 있는지 확인한다.
이름서비스를 구동후 nslookup 이나 dig 같은 툴을 이용하여 테스트 한다.
[root@ns root]# nslookup
Note: nslookup is deprecated and may be removed from future releases.
Consider using the `dig' or `host' programs instead. Run nslookup with
the `-sil[ent]' option to prevent this message from appearing.
> solaris.co.kr
Server: 192.168.102.100
Address: 192.168.102.100#53
Name: solaris.co.kr
Address: 192.168.102.100
> www.solaris.co.kr
Server: 192.168.102.100
Address: 192.168.102.100#53
Name: www.solaris.co.kr
Address: 192.168.102.100
> 192.168.102.100
Server: 192.168.102.100
Address: 192.168.102.100#53
100.102.168.192.in-addr.arpa name = mail.solaris.co.kr.
100.102.168.192.in-addr.arpa name = ns.solaris.co.kr.
100.102.168.192.in-addr.arpa name = www.solaris.co.kr.
정상적으로 구동되어짐을 알 수 있다.
8.rndc 구동하기
/bind/bin/rndc/#rndc reload
를 수행하여 rndc를 구동할 수 있다. 이 때 named는 반드시 구동되어 있어야 한다.
9. 장애 처리 하기
#tail -f /var/adm/messages
로그의 내용을 모니터링하면서 장애처리를 수행한다.
rndc.conf 나 key 에러는 키 생성 부분의 문제이므로 확인 후 다시 시도해 본다. 출처 : blog.naver.com/paulken