1.6. BIND DNS 서버 간 영역 전송 구성
영역 전송을 통해 영역 사본이 있는 모든 DNS 서버가 최신 데이터를 사용하도록 합니다.
사전 요구 사항
- 향후 기본 서버에서 영역 전송을 설정할 영역이 이미 구성되어 있습니다.
- 향후 보조 서버에서 BIND가 이미 구성되어 있습니다(예: 캐싱 이름 서버).
-
두 서버 모두에서
named
또는named-chroot
서비스가 실행 중입니다.
절차
기존 기본 서버에서 다음을 수행합니다.
공유 키를 생성하고
/etc/named.conf
파일에 추가합니다.# tsig-keygen example-transfer-key | tee -a /etc/named.conf key "example-transfer-key" { algorithm hmac-sha256; secret "q7ANbnyliDMuvWgnKOxMLi313JGcTZB5ydMW5CyUGXQ="; };
이 명령은
tsig-keygen
명령의 출력을 표시하고/etc/named.conf
에 자동으로 추가합니다.나중에 보조 서버에서도 명령의 출력이 필요합니다.
/etc/named.conf
파일에서 영역 정의를 편집합니다.allow-transfer
문에서 서버에서 영역을 전송하기 위해example-transfer-key
문에 지정된 키를 제공해야 함을 정의합니다.zone "example.com" { ... allow-transfer { key example-transfer-key; }; };
또는
allow-transfer
문에서 BIND ACL(액세스 제어 목록) nicknames를 사용합니다.기본적으로 영역을 업데이트한 후 BIND는 이 영역에 이름 서버(
NS
) 레코드가 있는 모든 이름 서버에 알립니다. 보조 서버의NS
레코드를 영역에 추가할 계획이 없는 경우 BIND에서 이 서버에 알리는 것을 구성할 수 있습니다. 이를 위해 이 보조 서버의 IP 주소에also-notify
문을 영역에 추가합니다.zone "example.com" { ... also-notify { 192.0.2.2; 2001:db8:1::2; }; };
/etc/named.conf
파일의 구문을 확인합니다.# named-checkconf
명령이 출력을 표시하지 않으면 구문이 올바른지.
BIND를 다시 로드합니다.
# systemctl reload named
변경 루트 환경에서 BIND를 실행하는 경우
systemctl reload named-chroot
명령을 사용하여 서비스를 다시 로드합니다.
향후 보조 서버에서 다음을 수행합니다.
/etc/named.conf
파일을 다음과 같이 편집합니다.기본 서버에서와 동일한 키 정의를 추가합니다.
key "example-transfer-key" { algorithm hmac-sha256; secret "q7ANbnyliDMuvWgnKOxMLi313JGcTZB5ydMW5CyUGXQ="; };
/etc/named.conf
파일에 영역 정의를 추가합니다.zone "example.com" { type slave; file "slaves/example.com.zone"; allow-query { any; }; allow-transfer { none; }; masters { 192.0.2.1 key example-transfer-key; 2001:db8:1::1 key example-transfer-key; }; };
이러한 설정 상태:
-
이 서버는
example.com
영역의 보조 서버(slave
)입니다. -
/var/named/slaves/example.com.zone
파일은 영역 파일입니다. 이 예에서와 같이 상대 경로를 설정하면 이 경로는options
문의 디렉터리에 설정한디렉터리를
기준으로 합니다. 이 서버가 기본 서버와 보조인 영역 파일을 분리하려면 예를 들어/var/named/slaves/
디렉터리에 저장할 수 있습니다. - 모든 호스트는 이 영역을 쿼리할 수 있습니다. 또는 IP 범위 또는 ACL 닉네임을 지정하여 액세스를 제한합니다.
- 호스트는 이 서버에서 영역을 전송할 수 없습니다.
-
이 영역의 기본 서버 IP 주소는
192.0.2.1
및2001:db8:1::2
입니다. 또는 ACL 닉네임을 지정할 수 있습니다. 이 보조 서버는example-transfer-key
라는 키를 사용하여 주 서버에 인증합니다.
-
이 서버는
/etc/named.conf
파일의 구문을 확인합니다.# named-checkconf
BIND를 다시 로드합니다.
# systemctl reload named
변경 루트 환경에서 BIND를 실행하는 경우
systemctl reload named-chroot
명령을 사용하여 서비스를 다시 로드합니다.
-
선택 사항: 기본 서버에서 영역 파일을 수정하고 새 보조 서버의
NS
레코드를 추가합니다.
검증
보조 서버에서 다음을 수행합니다.
named
서비스의systemd
저널 항목을 표시합니다.# journalctl -u named ... Jul 06 15:08:51 ns2.example.com named[2024]: zone example.com/IN: Transfer started. Jul 06 15:08:51 ns2.example.com named[2024]: transfer of 'example.com/IN' from 192.0.2.1#53: connected using 192.0.2.2#45803 Jul 06 15:08:51 ns2.example.com named[2024]: zone example.com/IN: transferred serial 2022070101 Jul 06 15:08:51 ns2.example.com named[2024]: transfer of 'example.com/IN' from 192.0.2.1#53: Transfer status: success Jul 06 15:08:51 ns2.example.com named[2024]: transfer of 'example.com/IN' from 192.0.2.1#53: Transfer completed: 1 messages, 29 records, 2002 bytes, 0.003 secs (667333 bytes/sec)
변경 루트 환경에서 BIND를 실행하는 경우
journalctl -u named-chroot
명령을 사용하여 저널 항목을 표시합니다.BIND에서 영역 파일을 생성했는지 확인합니다.
# ls -l /var/named/slaves/ total 4 -rw-r--r--. 1 named named 2736 Jul 6 15:08 example.com.zone
기본적으로 보조 서버는 영역 파일을 바이너리 원시 형식으로 저장합니다.
보조 서버에서 전송된 영역의 레코드를 쿼리합니다.
# dig +short @192.0.2.2 AAAA www.example.com 2001:db8:1::30
이 예제에서는 이 프로세스에서 설정한 보조 서버가 IP 주소
192.0.2.2
에서 수신 대기한다고 가정합니다.