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
и ни один, казалось, не работал (но я также не уверен, правильно ли я их сделал)
- Dnsmasq на EdgeRouter, кажется, использует оба
[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-серверам.