Настройте bind9 для использования Dnsmasq для локальных имен LAN.

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

У меня есть сервер dnsmasq (10.0.0.1), знающий о именах хостов и IP-адресах для нескольких локальных сетей, например, гостевых беспроводных и проводных сетей.

У меня также есть DNS bind9, работающий на отдельном сервере (192.168.1.1), который является авторитетным DNS для локальной сети (LAN).

Я хотел бы перенаправлять запросы, отправленные на сервер bind9, чтобы они разрешались сервером dnsmasq. Было бы приемлемо, если бы все запросы должны были использовать общий домен верхнего уровня, например, myhostname.lan или myhostname.arpa и т.д.

Что я пробовал:

Я настроил зону “lan” с “masters”, установленным на сервер dnsmasq, аналогично настройке, описанной в этой статье

zone "lan" 
  type slave;   
  masters { 10.0.0.225; };
};

Тем не менее, это не работает аналогично тому, что описано в этом вопросе на форуме


==> /var/log/named/general.log <==                                                                       12-Mar-2025 21:26:06.894 zone lan/IN: refresh: unexpected rcode (REFUSED) from primary 10.0.0.1#53 (sou
rce 0.0.0.0#0)                                                                                                                                               
==> /var/log/named/xfer-in.log <==                                                                       12-Mar-2025 21:26:06.894 zone lan/IN: Transfer started.
12-Mar-2025 21:26:06.898 transfer of 'lan/IN' from 10.0.0.1#53: failed to connect: connection refused  12-Mar-2025 21:26:06.898 transfer of 'lan/IN' from 10.0.0.1#53: Transfer status: connection refused
12-Mar-2025 21:26:06.898 transfer of 'lan/IN' from 10.0.0.1#53: Transfer completed: 0 messages, 0 records, 0 bytes, 0.003 secs (0 bytes/sec) (serial 0) 
                           

Я также пытался просто настроить 10.0.0.1 как пересылочный сервер в конфигурации bind9:

...
forwarders {
      10.0.0.1;
};
...

Но я получаю ошибки bind9 следующего вида:

12-Mar-2025 21:13:45.884 zone lan/IN: refresh: unexpected rcode (REFUSED) from primary 10.0.0.1#53 (source 0.0.0.0#0)     

Я также пробовал просто добавить 10.0.0.1 как резолвер в /etc/resolv.conf, но все еще вижу эти неожиданные ошибки rcode.

Как я могу настроить bind9 на использование моего сервера dnsmasq на 10.0.0.1 для разрешения DNS-запросов?

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

Настройка интеграции между Bind9 и Dnsmasq для разрешения локальных имён на вашем LAN является нетривиальной задачей, которая требует чёткого понимания обеих систем. Распространённая проблема заключается в том, что Dnsmasq, по сути, не предназначен для работы в режиме мастера по обновлению зон, что приводит к ошибке REFUSED при попытке настройки его как мастер-зоны в Bind9. Давайте подробно разберёмся в проблеме и возможных её решениях.

Теория

Bind9 является высокомощным и конфигурируемым сервером DNS, который поддерживает полноценную работу с зонами и может выполнять функции авторитетного сервера. Dnsmasq, в свою очередь, это облегчённый сервер DHCP и кэширующий сервер DNS, который идеально подходит для небольших сетей, предоставляя простое управление локальными именами и IP-адресами.

Основная задача, которую вы пытаетесь решить, заключается в том, чтобы Bind9 перенаправлял запросы на определённые доменные имена к Dnsmasq, который хранит информацию о локальных устройствах. Учитывая ограничения Dnsmasq как DNS-сервера, наиболее подходящим решением будет использование механизма делегирования запросов к dnsmasq через настройку зоны перенаправления (forward zone) в Bind9.

Пример

Следует настроить зону перенаправления в Bind9, которая будет отправлять все запросы определённого домена (например, .lan) вашему серверу Dnsmasq. Эта настройка включает следующие шаги:

  1. Настройка файла конфигурации Bind9 (named.conf.local):

    zone "lan" {
       type forward;
       forwarders { 10.0.0.1; };
    };

    Здесь мы создаём зону перенаправления с именем "lan" и указываем, что все запросы для этого домена должны перенаправляться на IP-адрес 10.0.0.1, где работает Dnsmasq.

  2. Проверка имен на Dnsmasq:

    Убедитесь, что Dnsmasq правильно настроен для обработки запросов от Bind9. Проверьте, открыт ли порт 53 и доступны ли имена хостов.

Применение

После настройки вам нужно перезапустить службу Bind9, чтобы изменения вступили в силу. Это можно сделать так:

sudo systemctl restart bind9

Теперь, когда Bind9 получает запросы на домены с зоной .lan, он будет перенаправлять эти запросы на Dnsmasq, который, в свою очередь, предоставит соответствующую информацию об IP-адресах.

Кроме того, крайне важно убедиться в том, что настройки Dnsmasq позволяют принимать запросы от вашего Bind9-сервера. Например, в конфигурации Dnsmasq (/etc/dnsmasq.conf) можно настроить:

listen-address=10.0.0.1

Это гарантирует, что Dnsmasq будет слушать на IP-адресе 10.0.0.1 для входящих DNS-запросов.

Чтобы удостовериться, что всё функционирует корректно, выполните команду nslookup или dig для проверки разрешения имен:

dig @192.168.1.1 example.lan

Это команда попросит ваш Bind9 выполнить поиск example.lan, и если всё настроено корректно, запросы перенаправятся на Dnsmasq и вернут правильный IP-адрес.

Вывод

Надеемся, что данный подход решения проблемы будет наиболее подходящим и эффективным в вашем случае. Основная идея заключается в том, чтобы максимально задействовать возможности как Bind9, так и Dnsmasq, в эффективном разрешении имен внутри вашей локальной сети. Следуя предложенным советам, вы сможете построить надёжную и устойчивую систему разрешения имен.

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

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