Edgerouter DNSmasq отправлять обновления в BIND

TL;DR: Как настроить Ubiquiti EdgeRouter, работающий с DNSmasq или DHCPd и NSupdate, для отправки своих DHCP-аренды на центральный сервер BIND?


У меня есть система, состоящая из нескольких Ubiquiti EdgeRouter X, которые выступают в роли серверов DHCP и DNS для локальной подсети. Маршрутизация между подсетями между ERX осуществляется главным маршрутизатором. Я хотел бы настроить шлюзы ERX для обновления главного DNS-сервера, на котором запущен BIND, при каждом обновлении аренды DHCP.

Ссылка на диаграмму ниже: с каждым ERX, обслуживающим DHCP и DNS для своей локальной подсети, клиенты могут разрешать только DNS-имена других клиентов за своими локальными ERX. Однако, если каждый ERX отправил свои записи dns-master всякий раз, когда происходило обновление аренды DHCP, и каждый клиент использовал dns-master в качестве своего DNS-сервера любой клиент может разрешить имя любого другого клиента. Это то, чего я пытаюсь достичь.

        маршрутизатор-ядро 
       /      |     \
      / днс-мастер \
     /                \
 erx-1                erx-2
   |                    |
   |- клиент-1а | - клиент-2а
   | - клиент-1б | - клиент-2б

Что я сделал до сих пор:

  • BIND настроен на прием обновлений через nsupdate и я подтвердил, что это работает с моей локальной рабочей станции
  • Я установил dnsutils на ERX с использованием Apt после активации репозитория Debian
  • Я исследовал dhcp-script опция из файла конфигурации Dnsmasq (лучшее описание этой опции на странице man), но я не могу заставить мой скрипт выполнить
    • Dnsmasq на EdgeRouter, кажется, использует оба /etc/dnsmasq.conf а также /etc/dnsmasq.d/dnsmasq-dhcp-config.conf, но добавив dhcp-script вариант к первому не имел никакого эффекта, и добавление его ко второму генерировало ошибку синтаксиса конфигурации
    • Я попытался как изменить файлы конфигурации Dnsmasq напрямую, так и установить параметры в конфигурации ERX под set service dhcp-server global-parameters и ни один, казалось, не работал (но я также не уверен, правильно ли я их сделал)

[EDIT]: Edgerouter также поддерживает использование Dhcpd в качестве DHCP-сервера, поэтому я бы принял ответ, описывающий, как настроить DHCPd на ER, чтобы сделать это; Я не женат на использовании DNSmasq

1 ответ

Решение

С предложением @Tom я нашел способ сделать это без использования сервера BIND.

Решение состоит в том, чтобы сконфигурировать каждый ERX как уполномоченный DNS-сервер для своей локальной подсети и создать делегирование серверов на главном маршрутизаторе для каждого субдомена, а затем указать всех клиентов на главном маршрутизаторе. Конкретные директивы конфигурации Edgerouter перечислены ниже, заменив sub1.local с надлежащим поддоменом DNS, и 192.168.100.5 с IP-адресом ERX:

На core-router (LAN IP 192.168.100.1):

set service dns forwarding listen-on eth1
set service dns forwarding name-server 8.8.8.8
set service dns forwarding name-server 8.8.4.4
установить параметры пересылки DNS службы "server=/.sub1.local/192.168.100.5"

На каждом ERX (например, WAN IP 192.168.100.5):

set service dns forwarding listen-on eth0
set service dhcp-server shared-network-name [сервер] подсеть [подсеть] имя домена sub1.local
set service dhcp-server shared-network-name [сервер] подсеть [подсеть] dns-сервер 192.168.100.1

Когда клиент отправляет запрос DNS на router-coreЗатем происходит одна из трех вещей:

  • Если router-core может решить, то это
  • Если запрос соответствует субдомену, запрос перенаправляется в ERX, указанный для субдомена
  • Если запрос не совпадает, то он передается вышестоящим DNS-серверам.
Другие вопросы по тегам