bind9, исключить адрес внешнего интерфейса из результатов

Добрый день, я использую Zentyal, настроенный с 2 ​​интерфейсами, один внутренний и один внешний. При решении имени хоста сервера и псевдонимов, bind случайным образом возвращает внешний адрес в результатах. Проблема, конечно, заключается в том, что локальная сеть не может общаться с внешней сетью и случайным образом прерывает работу служб. Пример:

dig proxy.private.example.com

;; ANSWER SECTION:
proxy.private.example.com. 259200 IN   CNAME   zentyal.private.example.com.
zentyal.private.example.com. 900 IN    A       192.168.122.73
zentyal.private.example.com. 900 IN    A       10.10.20.40

10.10.20.40 находится во внутренней сети и адрес, который мы должны всегда разрешать.

Как исключить интерфейс "192.168.122.73" из результатов? Как будет выглядеть моя конфигурация bind?

PS: я искал в течение 3 дней; Возможно, я ищу неправильные вещи.

Ваша помощь очень ценится.

1 ответ

Решение

Теперь вы настроили несколько Aзаписи для одного и того же ресурса. Bind обработает это как циклический перебор и поочередно вернет 192.168.122.73 или 10.10.20.40 для запроса DNS для zentyal.private.example.com.

Вы хотите, чтобы в зависимости от интерфейса / IP-адреса, с которого исходит DNS-запрос, последовательный способ возвращает другой ответ. В Bind это называется представлением.

Для этого необходимо настроить два разных файла зоны: для внешних клиентов и секунду для внутренних клиентов и настроить Bind, когда использовать какой файл зоны. Соответствующий раздел конфигурации в вашей конфигурации может выглядеть примерно так:

view "internal" {
        match-clients { localnets; };
        recursion yes;          /* this is the default */

        zone "private.example.com" {
                type master;
                file "db.private.example.com.internal";
                allow-transfer { any; };
    };
};

view "external" {
    match-clients { any; };
    recursion no;

    zone "example.com" {
        type master;
        file "db.example.com.external";
            allow-transfer { none; };
    };
};

Затем добавьте запись A с IP-адресом 10.x в db.private.example.com.internal и убедитесь, что в общедоступном db.example.com.external остается только запись A с IP-адресом 192.x файл зоны.

Другие вопросы по тегам