В настоящее время у меня возникли проблемы с делегированием поддомена, например lan.example.com на сервер имен в частной сети.
Моя частная сеть разделена на подсети
192.168.0.1/24 <--- 192.168.0.1
Physical LAN 172.20.20.1 ---> 172.20.20.1/24
OpenWRT Router VPN
У меня есть некоторые службы, работающие в физической локальной сети, и клиенты должны обращаться к ним со статическим DNS-именем, независимо от того, подключен ли клиент к физической локальной сети или VPN. Маршрутизатор OpenWRT также действует как преобразователь DNS для всех клиентов в физической LAN и может разрешать локальные имена хостов, например server.lan.example.com
.
Общедоступный сервер имен example.com имеет записи NS.
lan.example.com IN NS lan-router.example.com
lan-router.example.com IN A 192.168.0.1
Теоретически все DNS-запросы к * .lan.example.com должны быть делегированы моему серверу OpenWRT, но клиент, подключенный к VPN, использует сервер имен своей домашней сети. Эти серверы пытаются рекурсивно отвечать на запросы DNS, но, естественно, не могут достичь 192.168.0.1
.
Запрос dig +trace A server.lan.example.com @8.8.8.8
работает нормально, но тот же запрос без +trace
нет.
Вы знаете, как это исправить, не устанавливая 192.168.0.1
в качестве сервера имен для всех клиентов VPN? Это увеличило бы задержку для нормального доступа в Интернет на этих клиентах.
Проблема в том, что вы хотите, чтобы DNS по-разному отвечал в зависимости от того, кто спрашивает. Это называется конфигурацией с разделенным обзором или с разделенным горизонтом. К сожалению, DNSMasq не очень хорошо поддерживает это. Я настоятельно рекомендую вам удалить dnsmasq и установить bind. В bind вы можете настраивать представления и устанавливать списки ACL для того, кто их может видеть. Фактически, вы можете дать 172 ответа сети 172 ... и 192 ответа сети 192.
Более подробную информацию можно найти Вот для настройки разделенных представлений в привязке.