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 , чтобы он выполнял следующие действия:

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

Q: Можно ли это сделать с помощью dnsmasq ? Требуется ли поддомен для офисной сети? (чего мы хотели бы избежать, если возможно). Если да, то как? У меня такое чувство, что я, должно быть, просмотрел dnsmasq docs сотни раз; они великолепны, но я мог бы просто смотреть на решение, а не видеть его.

Также: Насколько я понимаю, такая установка отличается от split-brain DNS, поскольку мы не используем один сервер имен, возвращающий разные ответы в зависимости от того, откуда исходит запрос, а используем общедоступный и частный сервер имен для одного и того же домена.

Это обычная установка? Если нет, есть ли у организаций канонический способ настроить свои DNS, когда они используют один и тот же TLD для публичного и частного присутствия?

3
задан 4 October 2018 в 22:27
2 ответа

Это обычная установка?

Я видел несколько вопросов по ServerFault, которые просили установить такую ​​же настройку, какую хотите вы, поэтому я предполагаю, что это обычная установка. Но поскольку это невозможно, я бы сказал, что это обычная настройка администраторов, которые не очень понимают, как работает DNS. (Извините, я не хочу обидеть ни вас, ни кого-либо еще на этом форуме.)

Я дал возможный ответ на вопрос, где размещаются как внутренний DNS-сервер, так и внешний DNS-сервер здесь . Однако в этом ответе в качестве DNS-сервера используется BIND, а не dnsmasq.

Это выполнимо (с dnsmasq)?

Как было сказано ранее, невозможно быть авторитетным для данной зоны и пересылать запросить другой сервер имен, если вы сами не знаете ответа. Ответ, который я дал в другом вопросе, - это обходной путь.

Есть ли у организаций канонический способ настроить свой DNS, когда они используют один и тот же домен как для публичного, так и для частного присутствия?

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

3
ответ дан 3 December 2019 в 06:26

Я не уверен, что это было возможно, когда этот вопрос задавался изначально. Тем не менее, это все еще кажется часто задаваемым вопросом, на него, похоже, нигде нет ответа, и dnsmasq отлично может это сделать! В некотором роде это даже по умолчанию.

Просто взгляните на эту минимальную конфигурацию:

domain=example.com

listen-address=192.168.120.1
interface=eth0
dhcp-range=192.168.120.10,192.168.120.20,12h

Если у вас есть локальный хост hostA в /etc/hosts, DHCP-клиент с именем hostB и сервер hostC, который не известен dnsmasq, но его вышестоящим серверам, то все серверы будут разрешаться правильно: hostA и hostB разрешаются локально, dnsmasq запрашивает у восходящего потока hostC, который затем также разрешается.

Это идеально подходит для небольшой раздельной настройки DNS в домашних сетях: просто позвольте dnsmasq управлять вашими хостами только в сети и добавлять хосты, которые также должны разрешаться извне в ваши глобально доступные DNS.

Обратите внимание, что большинство руководств добавляют конфигурацию local=/example.com/. Это то, что на самом деле не позволяет dnsmasq запрашивать у вышестоящих серверов этот домен. Так что в этом случае вы не хотите использовать эту опцию.

Вы также можете настроить это в OpenWRT. Просто оставьте поле Локальный сервер пустым.

0
ответ дан 20 February 2021 в 18:33

Теги

Похожие вопросы