본문 바로가기

공부/리눅스

dns 설정파일 문법

반응형
*. 아래는 dns 설정파일의 기본적인 문법

/etc/named.conf

// comment
/*
comment
*/

기본형식 :
keword {
설정내용 ;

};

ex)
options {
directory path_name;
기타 부가적인 설정...;
}

zone 구문

zone "." IN {
type hint;
file 파일명;
};

zone "domain name" IN {
type master ; => slave dns 일경우 type 은 slave 가 되어야 한다.
file file명;
}

zone "10.168.192.in-addr.arpa" IN {
type master;
file file명;
};

*. 세부설정 파일 문법
1. forward 설정파일

$TTL value
@ IN SOA dns도메인명. 이메일주소. (
serial_number ; serial => 여기서 ';' 은 주석을 의미한다. dns 가 설정이 처음 하는 사람에게
refresh_number; refresh 쉽지않은 부분은 이런 주석까지도 named.conf 에서 사용하는
retry_number; retry 것과 이파일에서 사용하는것이 같지 않은점. 그리고 '.' 을
expire_number; expire 하나 누락해도 동작을 제대로 하지 않는점 이런것들
minmum_number; minimun 때문일것이다.
);

IN NS dns도메인명(호스트명 포함(FQDN)).
hostname IN ip-address
hostname IN ip-address
...
*. hostname 대신에 (FQDN을 사용해도 된다. ex) www.abc.co.kr.
주의할점은 FQDN(host명을포함한 도메인)을 적을때는 맨끝에 '.' 을
반드시 붙여야 한다. 그렇지 않으면 host명으로 간주한다.

$TTL value ; 다른 dns 가 root dns 를 통해서 여기에 있는 정보를 참조했을때
이 정보를 캐시에 담아두는 기간.
ex) $TTL 86400(= $TTL 24h) => 다른 dns 가 여기 있는 정보를 참조하면
여기있는 정보를 24시간동안 캐시에 담아두겠다는 의미.
단위가 없으면 초를 의미하고 h 는 시간 d는 day m은 분, w는 주 이렇게 여거가지
단위를 붙여 표현할수 있다. $TTL 24h = $TTL 1d 와 같은 의미.

serial_number : slave dns 가 primary dns zone 설정을 업데이트 하기 위한
값으로 사용된다. slave dns 는 자신이 가지고 있는 zone 파일과 이파일을 비교하여
primary dns 에 있는 serial number 가 더 높은 경우에만 업데이트한다.
serial_number 는 기간을 의미 하지 않는다. 보통 날짜 형태의 표기를 한다.
ex) 2009100700

refresh number ; slave dns 가 primary dns 의 설정파일을 업데이트 하는 주기
retry number ; slave dns 가 refresh time 에 도달하여 update 를 하려고 했으나
primary dns 로 부터 응답이 없는경우 재시도 하는시간.
expire number ; slave dns 가 primary dns 와 어떤 문제로 통신이 되지 않게되면
slave dns 가 가지고 있는 정보는 신뢰성이 떨어지게 된다.
그걸경우 데이터를 파기하는 시간이다.
minimum number ; $TTL 과 다소 차이가 있지만 같은 의미로 봐도 된다.
그리고 해당되는 각 설정값은 관리자가 임의로 설정할 수 있다.
$TTL value <= 맨 첫번째 줄에 이부분이 와야 한다.
이거 없어도 동작하지만 경고메시지가 출력될것이다.
@ IN SOA dns도메인명. 이메일주소. ( <= 두번째 줄은 이부분이 반드시 와야 한다. 문법이 그렇다.

@ => 그 도메인 자체를 의미 ex) abc.co.kr.

IN ; class 이름인데 특별한 의미는 없으며 모든 레코드 앞에 붙인다.

SOA (Start Of Authority) - 권한의 시작을 의미하는 레코드타입
(그냥 반드시 적어야 할 문법으로 생각하면 됨)

dns도메인명 : name server 도메인명을 호스트 이름을 포함하여 적는다.
이메일주소: 설정하는 도메인에 대해서 책임있는 관리자의 이메일 주소를 적는다.
이때 이메일 주소에는 '@' 문자를 포함하면 안된다.
만약 이메일주소가 root@abc.co.kr 이라면 root.abc.co.kr. 이렇게 표기해야 한다.

IN NS dns도메인명(호스트명 포함(FQDN)). ; NS 는 dns를 의미하는 레코드타입.
- 주의 : IN 앞에 반드시 탭키 또는 스페이스 문자가 있어야 한다. 그렇지 않으면 IN 을 호스트명으로
간주하게 된다.

hostname IN A ip-address

- 주의 : hostname 앞에 스페이스 문자가 있으면 안된다. hostname 은 첫칸부터
시작해야 한다.
A (Address 의 약자)는 도메인 -> ip 로 변환하기 위한 레코드 타입.

2. reverse 설정파일

forward 설정파일과 형식이 거의 같은데 다른 부분은 IN NS 부분 다음줄부터이다.

hostname IN ip-address
hostname IN ip-address

==> forward 설정파일의 이부분만 다르다.
ip-address 의 맨 마지막 자리 IN PTR 도메인명.
ex)
1 IN PTR (Pointer 의 약자) www.abc.co.kr.
2 IN PTR 192.168.10.2 ftp.abc.co.kr.

그리고 named.ca 파일은 root dns 를 찾기 위한 파일이며 이파일은 수정하는것이
아니다. 이 파일이 손상 또는 없는 경우라면 국제인터넷 기구 Internic 에서 다운로드
받아야 한다.

다운로드 주소 : ftp.rs.inetetnic.net 익명계정으로 접속하여 다운 받으면 된다.
이름이 named.root 로 올라와 있을수도 있는데 그런경우에는 다운로드 받은후
이름을 named.ca 로 바꾸면 된다.

여기까지는 아주 기본적인 dns 문법이다.
여기까지의 문법과 기본개념을 잘 이해하면 나머지 좀 더 세부적인 부분을 이해하는데는
별로 어렵지 않다.

*. 참고 : CentOS5 인경우의 BIND 설정파일

반응형