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

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" из результатов? Как будет выглядеть моя конфигурация привязки?

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.

Связанный контент