Назад | Перейти на главную страницу

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

Добрый день, я использую Zentyal, настроенный с двумя интерфейсами, одним внутренним и одним внешним. При вычислении имени хоста и псевдонимов серверов 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 дня; возможно, я ищу не то.

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

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

Вы хотите, чтобы в зависимости от интерфейса / IP-адреса, с которого исходил DNS-запрос, последовательно возвращался другой ответ. В 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 и убедитесь, что только запись A с ip-адресом 192.x остается в общедоступном db.example.com.external. файл зоны.