BIND 9 Hidden Master 구성시 주의사항

* 이 포스팅은 기본 BIND 설정 후 존 파일이 라이브로 반영이 되어 있는 상황을 가정

DNS Hidden Master-Slave 구성은 Master 서버를 외부에 노출시키지 않을 때 사용한다.

BIND9를 이용해 Hidden Master 구성시 크게 실수할 수 있는 부분은 다음과 같다.


1. SOA 레코드 - MNAME

SOA 레코드는 다음 양식을 사용한다.

1
2
3
4
5
6
@           IN      SOA     ns1.example.com. admin.example.com. (
                            2020041501 ; serial, Zone File의 버전
                            1H         ; refresh, Zone의 갱신 주기
                            30M        ; retry, 갱신 실패시 재시도 주기
                            2W         ; expire, 갱신 실패시 응답 중지 시점
                            1D )       ; minimum, Negative Caching(RFC 2308)
cs

괄호를 열고 닫기 전에 MNAME(Primary Name Server), RNAME(Admin E-mail) 가 있는데,

이때 MNAME Field 값이 실제 내부 Hidden Master의 호스트명이 아닌, 겉으로 드러나있는 네임서버 중 하나의 호스트명으로 기재해야 한다.
(WHOIS상 Primary Name Server인 호스트명)


Hidden Master 구성의 핵심은 Master를 드러내지 않는 것이므로,
Master 관련 모든 정보는 WHOIS 조회, SOA 레코드 등에서 모두 없어야 한다.



2. DNS NOTIFY

/etc/named.rfc1912.zones에는 각 zone에 대한 설정이 있는데,
이때 notify 옵션은 다음을 의미한다.

notify yes;
Zone의 NS 레코드에 있는 주소 + also-notify에 기재한 주소로 NOTIFY 메시지를 발송
단, SOA 레코드의 MNAME Field에 있는 주소로는 NOTIFY를 발송하지 않음

notify no;
NOTIFY 메시지를 발송하지 않음

notify master-only;
본인이 Master인 Zone File만 NOTIFY 메시지를 발송한다.

notify explicit;
사용자가 also-notify로 지정한 리스트에게만 NOTIFY 메시지가 발송


일반적으로 notify yes; 옵션을 선택한다.
문제는 해당 옵션 선택시 MNAME Field에 있는 주소로 NOTIFY 메시지를 발송하지 않는다.

일반적인 DNS Master-Slave 구성이라면 MNAME Field가 Master(자기 자신)이므로 NOTIFY를 보내지 않는데,
Hidden Master-Slave 구성이라면 MNAME Field에 있는 주소가 실제로는 Slave 이다.
> 모든 Slave는 NOTIFY 메시지를 받아 Zone 파일을 업데이트 하는데, MNAME Field에 있는 Slave 서버만 NOTIFY 메시지를 못받아 Zone File 을 갱신하지 못하는 문제가 발생한다.


해결책은 다음과 같다.
1) notify yes; 선택 후 also-notify{ MNAME Field 주소; }; 를 추가로 기재한다.
> 누락된 주소를 기재하여 해당 이슈 해결

2) notify explicit; 선택 후 also-notify { 주소 목록1; 주소목록2; ...}에 NOTIFY 메시지를 받을 모든 Slave DNS 네임서버들의 주소를 기재한다.
> 일괄적으로 NOTIFY 메시지를 받을 주소를 전부 수동으로 기재



3. 기타사항

Hidden Master가 정상적인 작동을 하지 않는다면 기본적인 체크리스트를 확인해본다.

- Slave DNS에서 Hidden Master에게 질의를 하면, 정상적인 Response를 하는가?
> TCP, UDP 53번 포트가 모두 허용이 되어 있는가?
> BIND9 데몬이 정상적으로 작동중인가?
> 해당 Zone에 대해 정상적인 Response를 하는가?
> 해당 Zone에 대해 정상적인 Zone-Transfer, NOTIFY가 이루어지는가?

> /etc/named.conf에서, allow-query, allow-transfer, notify 옵션이 정상인가?
> /etc/named.rfc1912.zones에서, allow-transfer, notify 옵션이 정상인가?
(allow-transfer와 notify 옵션은 named.rfc1912.zones가 named.conf보다 우선순위가 높음)

댓글