Назад | Перейти на главную страницу

Как использовать внешние DNS-серверы пересылки, когда зона прямого просмотра не содержит запрошенный поддомен

Используя Windows 2008 R2 DNS:

У нас есть зона прямого просмотра:

somerealdomain.com

us-wil    |    A    |    10.10.0.1
us-chi    |    A    |    10.10.0.2
us-day    |    A    |    10.10.0.3
us-sea    |    A    |    10.10.0.4
us-sf     |    A    |    10.10.0.5
us-ny     |    A    |    10.10.0.6
give      |    A    |    10.10.0.7
me        |    A    |    10.10.0.8
test      |    A    |    10.10.0.9

Если я сделаю NSLookup для любого из них они, очевидно, правильно указывают на внутренний IP-адрес.

Теперь, если я хочу, чтобы какой-либо несуществующий поддомен разрешался с использованием внешнего DNS, как это предусмотрено нашими пересылками 8.8.8.8, 8.8.4.4 и т. Д., Как я могу это сделать? Скажем, я хочу разрешить get.somerealdomain.com, который не включен в зону прямого просмотра, но разрешается на общедоступных DNS-серверах?

Мне это нужно, поэтому, если кто-то ищет поддомен, который мы не включили в нашу зону прямого просмотра, он выйдет на общедоступный DNS-сервер и разрешится. Я предполагал, что это произойдет по умолчанию, как и с любым другим доменом, для которого мы не записали записи, но поскольку у нас есть somrealdomain.com в качестве зоны прямого просмотра, любой поддомен, для которого нет записанной записи, просто умирает вместо запроса внешнего DNS. Зачем? Как я могу это решить?

  1. Удалить зону somerealdomain.com
  2. Создайте зону us-wil.somerealdomain.com
  3. Добавьте запись в зону us-wil.somerealdomain.com и оставьте поле имени хоста пустым (используйте внутренний IP-адрес).
  4. Повторите шаги 2 и 3 для всех внутренних имен хостов.

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

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

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

Наконец, вы можете использовать кеш DNS, такой как dnsmasq (тот же принцип, что и DNS-прокси с фильтрацией) - см. Это ответ для подробностей.

Обычно субдомены указываются из более высокого домена. Ваш DNS-сервер считает, что он является органом власти для somerealdomain.com. Когда получен запрос на subdomain.somerealdomain.com, он проверяет свои собственные записи и говорит: «Этого не существует. Я должен знать, что я отец».

Вам нужна запись, указывающая на DNS-сервер вашего поддомена. Обычно это включает делегирование поддомена (или подзоны) другому DNS-серверу. Я считаю, что вы щелкните правой кнопкой мыши домен в консоли DNS и выберите «New Delegation». Это также можно сделать с помощью команды dnscmd.