bind9: перенаправить каждый NXDOMAIN на другой сервер имен, даже если зона известна локально.

Вопрос или проблема

В настоящее время я использую файл “hosts” для этого, но его становится всё сложнее поддерживать на нескольких рабочих станциях…

Я хочу настроить сервер имён в нашей локальной сети, который может переопределять или добавлять узлы к существующим доменам.

Например, sql.ourdomain.tld определён в “мастер DNS” SOA dns.ourdomain.tld с IN A 80.90.100.200, и я хочу переопределить его с помощью IN A 192.168.15.5 в нашем локальном сервере имён.

Так что локальный ответ сначала, затем перенаправление каждого NXDOMAIN на другой резольвер.

Думаю, должно быть такое решение, так как “pihole” делает что-то подобное.

Вам нужна Зона Политики Ответов (RPZ). Она содержит серию из одной или более записей, которые должны переопределять любой другой ответ. Если запись найдена здесь, она возвращается. В противном случае используется существующее поведение вашего сервера имён для определения ответа (возможно, включая NXDOMAIN).

Вы можете иметь несколько RPZ, содержащих различные подмножества записей, включая одну, которая возвращает NXDOMAIN для всех своих записей. Различие заключается в ключевом слове policy для определения зоны, которое по умолчанию имеет значение policy given, если оно опущено.

Добавьте это в раздел options (или под соответствующий view, если вы их используете):

response-policy {
    zone "rpz.local";
    // zone "rpz.nxdomain" policy nxdomain;
};

Затем создайте свой файл зоны rpz.local, как обычно. (И, по желанию, файл зоны rpz.nxdomain тоже.) Заполните его полными доменными именами для узлов, которые вы хотите переопределить. Например,

$TTL    600
@       IN      SOA     localhost. root@localhost. (
                                2024032002      ; Serial (гггг-мм-дд-нн)
                                7200            ; Refresh (2ч)
                                3600            ; Retry (1ч)
                                604800          ; Expire (1н)
                                300             ; Negative Cache TTL (5м)
                )
;

@                               NS      localhost.


;#######################################################################
; Переопределения записей домена
;
unwanted.example.com            A       127.0.0.99
sql.ourdomain.tld               A       192.168.15.5

Обратите внимание, что левая часть не использует завершающую точку (.), так как все имена должны быть относительными к корню, а не к любым из ваших управляемых доменов. Не забывайте про rndc reload после каждого изменения.

Ответ или решение

Вопрос о перенаправлении всех запросов с ответами NXDOMAIN к другому DNS-серверу, даже если зона уже определена локально, действительно является актуальной проблемой для многих сетевых администраторов. В тексте предоставленной задачи указано, что с помощью файла "hosts" поддерживать такие переопределения на нескольких рабочих станциях становится трудоемко. Для решения данной проблемы можно использовать возможности сервера DNS с поддержкой Response Policy Zone (RPZ).

Теория (Theory):

RPZ представляет собой механизм, который позволяет серверу имен (например, BIND9) изменять ответы DNS-запросов на основе специально определенного набора правил. RPZ позволяет переопределять существующие записи и предоставлять свои собственные ответы. Это может быть полезно для редиректов, фильтрации DNS-запросов или смены IP-адресов для определенных доменов. В вашем случае RPZ используется для перенаправления всех запросов, на которые исходный сервер отвечает NXDOMAIN, на отдельный резолвер.

Пример (Example):

Вы можете настроить RPZ в конфигурации BIND9, добавив раздел response-policy в ваш файл конфигурации. В примере ниже показано, как создать зону rpz.local, в которой определены переопределенные записи:

options {
    // другие ваши настройки...
    response-policy {
        zone "rpz.local";
    };
};

// определение зоны rpz.local
zone "rpz.local" {
    type master;
    file "/etc/bind/db.rpz.local";
};

Далее создайте файл зоны db.rpz.local со следующими записями:

$TTL    600
@       IN      SOA     localhost. root@localhost. (
                                2024032002      ; Серийный номер (yyyy-mm-dd-nn)
                                7200            ; Интервал обновления (2h)
                                3600            ; Период повторения (1h)
                                604800          ; Период актуальности (1w)
                                300             ; Время кэширования негативного ответа (5m)
                )
;

@                               NS      localhost.

; Переопределение записей домена
unwanted.example.com            A       127.0.0.99
sql.ourdomain.tld               A       192.168.15.5

Применение (Application):

После настройки и создания зон reload BIND9 при помощи команды rndc reload, чтобы применить изменения. С этого момента, DNS-сервер будет сначала проверять записи в RPZ и, если запрошенный домен найден, возвращать переопределенные значения. Если запись отсутствует, сервер будет следовать стандартной процедуре резолвинга, потенциально включая перенаправление на другой резолвер при получении ответа NXDOMAIN.

Такой подход не только упрощает управление записями по мере увеличения сети, но и дает гибкость в настройке зон доменов согласно вашим требованиям, обеспечивая централизованное решение для всех рабочих станций в сети.

Оцените материал
Добавить комментарий

Капча загружается...