Я настраиваю сервер имен 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
Эта настройка работает так, как и ожидалось, но с небольшим неудобством. Список основных серверов должен быть повторен для всех зон "forward". У нас их довольно много, все с адресами 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;
};
и затем в вашем named.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";
}