Как объединить локальный DNS с нескольких маршрутизаторов и нескольких DHCP-серверов?

Как объединить локальный DNS с нескольких маршрутизаторов и нескольких DHCP-серверов?

У меня есть частная сеть с несколькими маршрутизаторами OpenWrt, соединяющими некоторые локальные подсети. Я использую NAT на нескольких маршрутизаторах, чтобы предоставить доступ к интернету через разных провайдеров.

Я использую локальный рекурсивный кэширующий DNS-резолвер (Unbound), который обслуживает всех моих клиентов во всех локальных подсетях.

Каждый маршрутизатор обрабатывает DHCP для своих локальных подсетей и назначает имена хостов. Но все подсети находятся под my-example.com. (Так что клиент маршрутизатора 1 может быть 'client1.router1.my-example.com')

Я хотел бы, чтобы все мои маршрутизаторы сообщали о своих DHCP-клиентах основному маршрутизатору, предоставляющему DNS, чтобы любой клиент в любой локальной подсети мог связаться с любым другим клиентом по имени. (Маршрутизация уже работает; я могу связаться с любым из любого клиента по IP-адресу.)

Похоже, мне нужно что-то вроде настройки частного динамического DNS на моей основной DNS-машине, но я не могу найти подходящий пакет.

Как сделать все имена моих локальных DHCP-клиентов (из всех подсетей разных маршрутизаторов) доступными для всех остальных клиентов в моей локальной сети?

решение1

Вы можете оставить DNS как есть, но настроить центральный сервер Unbound для пересылки запросов на правильный сервер имен в зависимости от суффикса. Это можно сделать с помощью блоков forward-zoneили stub-zone. (Оба очень похожи по принципу действия, но в вашем случае stub-zoneболее правильно, поскольку вы указываете его напрямую на авторитетный сервер, в то время как forward-zoneожидаете, что будет указан другой рекурсивный резолвер.) Например:

stub-zone:
    name: "router1.my-example.com."
    stub-addr: <IPv4 address of router1>
    stub-addr: <IPv6 address of router1>
    stub-first: yes

(В публичном DNS обычно настраивается поддоменделегации( используя NSзаписи – это сообщит резолверам, что, например, <foo>.router1.my-example.comобрабатывается другим сервером.)

В качестве альтернативы этобыможно настроить динамический DNS, чтобы маршрутизаторы напрямую регистрировали записи на центральном сервере, но это, скорее всего, потребует перехода на совершенно другое программное обеспечение. На стороне центрального сервера вы, вероятно, захотите заменить Unbound на BIND9 или что-то еще, что может размещать зоны и поддерживает протокол RFC 2136 "DNS update", а на маршрутизаторах вам понадобится DHCP-сервер, который знает, как отправлять такие обновления.

Я не уверен, есть ли у OpenWRT дополнительные опции, но подозреваю, что маршрутизаторы в настоящее время работают с Dnsmasq, который может делать динамические имена хостов, потому что все это в одном процессе – одна и та же программа обрабатывает и DNS, и DHCP. Но она не знает, как отправлять обновления DNS в другое место. Вам нужно будет использовать Dnsmasq, --dhcp-scriptчтобы заставить его работать nsupdateс правильными параметрами. (ISC DHCP Server поддерживает DDNS и часто работает в паре с BIND, но больше не поддерживается.)

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