BIND(v9.16) 네임서버를 설정 중입니다.
주요 목적은 내부 호스트에 대한 일반 반복자로 작동하는 것입니다. 하지만 몇 가지 특정 영역(우리가 호스팅하는 영역)의 경우 이를 전달자로 설정해야 합니다. 목표는 루트 및 TLD DNS 서버에 대한 종속성을 방지하고 외부 네트워크 연결을 사용할 수 없는 경우에도 내부 서비스를 계속 사용할 수 있도록 하는 것입니다.
이것은 설정하기 쉬웠습니다. 여기 내 구성의 관련 부분이 있습니다.
options {
allow-recursion {
// Here comes the list of our inside networks
};
};
zone "somedomain.example" IN {
type forward;
forward first;
forwarders {
// Here comes the list of the primary servers for this zone
};
// ... repeated for all forward zones
이 설정은 예상대로 작동하지만 약간의 불편함이 있습니다. 모든 "전달" 영역에 대해 기본 서버 목록을 반복해야 합니다. 그 중 상당수는 모두 IPv4 및 IPv6 주소를 갖고 있으며 ^C/^V 모든 영역에 대한 목록은 내가 본 것 중 가장 우아하지도 않고 DRY 규격도 아닙니다.
나는 이 forwarders
명령문이 전역 섹션에도 포함될 수 있다는 것을 알고 있지만 options
기본 실험을 통해 이 명령문은 정방향 영역에는 적용되지 않고 정방향 전용 네임서버에만 적용된다는 것을 알고 있습니다(문서는 명확하지 않지만 " forwarders
문이 없으면 [...] 문에 있는 전달자의 효과가 취소됩니다 options
."라고 언급합니다.
ACL을 생성하는 것과 거의 같은 방식으로 명명된 전달자 목록을 생성하고 forwarders
관련 영역 내부의 명령문에서 이 기호 이름을 사용하는 방법이 있습니까?
답변1
다른 많은 데몬 및 서비스와 마찬가지로 ISC Bind는include
구성 파일의 지시문.
이를 통해 구성 설정 및 지시문 목록을 다른 파일로 이동할 수 있으며 필요한 경우 해당 포함을 참조할 수 있습니다.
이렇게 하면 전달자 목록을 한 곳에만 유지 관리하므로 관리 부담이 줄어들고 필요한 곳에 참조만 복사하면 됩니다.
// "/var/named/includes/forwarders.conf"
// master list of forwarders
forwarders {
192.0.2.21;
192.0.2.88;
};
그런 다음 names.conf에서:
zone "somedomain.example" IN {
type forward;
forward first;
include "/var/named/includes/forwarders.conf";
}
zone "otherdomain.example" IN {
type forward;
forward first;
include "/var/named/includes/forwarders.conf";
}