dnsmasq: один домен, наполовину приватный, наполовину публичный?
Наша внутренняя офисная сеть имеет тот же домен верхнего уровня, что и интернет-представительство нашей компании, например ourdomain.com
,
Для внешнего мира любые публичные хосты (например, blog.ourdomain.com
, download.ourdomain.com
, www.ourdomain.com
и т. д.) настраиваются в DNS нашего хостера домена, AWS Route 53.
Для офисной интрасети мы запускаем простую dnsmasq
для DHCP и DNS (и VPN, но это уже другая история); Разрешение имен для внутренних серверов и настольных компьютеров (например, ноутбуков с адресами DHCP) в офисе работает нормально. dnsmasq
Экземпляр не доступен для общественности.
Пока мы говорим dnsmasq
о наших публичных серверах, поддерживая файл /etc/hosts.dnsmasq
что входит в основной /etc/dnsmasq.conf
по линии addn-hosts=/etc/hosts.dnsmasq
, похоже на хорошо известную /etc/hosts
и имеет следующий образец содержимого:
12.34.56.78 blog
12.34.56.79 download
12.34.56.80 www
Мы поддерживаем этот файл вручную, что становится громоздким. Мы хотели бы избавиться от этого и улучшить наш dnsmasq
настроить так, что он делает следующее:
- если
dnsmasq
имеет "собственную" информацию DNS (например, DHCP или статический IP-адрес, связанный с именем хоста) для запроса из внутренней офисной сети, служит - в противном случае запросите общедоступный DNS и перешлите результат обратно запрашивающему в интрасети.
Q: это выполнимо с dnsmasq
? Требуется ли субдомен для офисной сети? (которого мы бы хотели избежать, если это возможно). Если да, то как? У меня есть ощущение, что я должен был пройти через dnsmasq
документы в сто раз; они великолепны, но я мог бы просто искать решение, а не видеть его.
Кроме того: Насколько я понимаю, такая настройка отличается от раздельного DNS, так как мы не используем один сервер имен, возвращающий разные ответы в зависимости от того, откуда поступает запрос, а используем публичный и частный сервер имен для одного и того же домена.
Это обычная установка? Если нет, существует ли канонический способ для организаций настроить свои DNS, когда они используют один и тот же TLD как для публичного, так и для частного присутствия?
2 ответа
Это обычная установка?
Я видел несколько вопросов о ServerFault с просьбой о настройке, подобной той, которую вы хотите, поэтому я предполагаю, что это обычная установка. Но так как это на самом деле невозможно, я бы сказал, что это обычная настройка администраторов, которые не совсем понимают, как работает DNS. (Извините, я не хочу вас обидеть - никого больше на этом форуме).
Я предоставил возможный ответ на вопрос, где здесь размещается как внутренний DNS-сервер, так и внешний DNS-сервер. Однако этот ответ использует BIND в качестве DNS-сервера, а не dnsmasq.
Это выполнимо (с dnsmasq)?
Как указывалось ранее, невозможно быть уполномоченным для данной зоны и переслать запрос на другой сервер имен, если у вас нет ответа самостоятельно. Ответ, который я дал в другом вопросе, является обходным путем.
Есть ли канонический способ для организаций настроить свой DNS, когда они используют один и тот же домен для общего и частного присутствия?
Я бы сказал, что они либо используют поддомен для внутреннего использования, либо используют разделенный DNS. Записи, которые должны находиться как во внутреннем, так и во внешнем представлениях, необходимо будет скопировать в обе зоны. Это можно упростить с помощью автоматизации (например, Ansible).
Я не уверен, было ли это возможно, когда этот вопрос был задан изначально. Тем не менее, это по-прежнему часто задаваемый вопрос, на который, похоже, нигде нет ответа, и dnsmasq прекрасно с этим справляется! В каком-то смысле это даже значение по умолчанию.
Просто взгляните на эту минимальную конфигурацию:
domain=example.com
listen-address=192.168.120.1
interface=eth0
dhcp-range=192.168.120.10,192.168.120.20,12h
Если у вас есть локальный хост в/etc/hosts
, DHCP-клиент с именем и сервером, который не известен dnsmasq, но известен его вышестоящим серверам, тогда все серверы будут разрешаться правильно:hostA
иhostB
разрешить локально, dnsmasq запрашивает восходящий потокhostC
который затем также разрешится.
Это идеально подходит для небольшой настройки разделенного DNS в домашних сетях: просто позвольте dnsmasq управлять вашими хостами только внутри сети и добавляйте хосты, которые также должны разрешаться извне в ваш глобально доступный DNS.
Обратите внимание, что большинство руководств добавляют
local=/example.com/
конфигурация. Именно это на самом деле не позволяет dnsmasq запрашивать у вышестоящих серверов этот домен. Поэтому в этом случае вы не хотите использовать эту опцию .
Вы также можете настроить это в OpenWRT. Просто держиLocal Server
поле пустое.