Linux

Можно ли создать собственный корневой DNS-сервер?

Я постоянно читаю о том, как наши провайдеры и посредники в интернете записывают и отслеживают все DNS-запросы, оставляя следы своей деятельности во многих журналах, а также позволяя перехватывать DNS в рекламных целях (например, Cox Communications!).

Независимо от других методов обеспечения конфиденциальности/безопасности, я хотел бы узнать, возможно ли запустить DNS-сервер в собственной локальной сети, который действительно имеет информацию о зоне корневых DNS-серверов (для доменов .com, .net, .org).

Я знаю, что можно настроить DNS, который в основном просто отображает машины в текущем домене, но возможно ли запросить копию/передать информацию корневого DNS для хранения на собственном DNS-сервере, чтобы можно было обойти выход в интернет для получения информации DNS для просмотра веб-страниц?

Надеюсь, я ясно выражаюсь. Я не хочу, чтобы мой DNS-сервер имел информацию только о моей внутренней сети – я хочу, чтобы он имел дублирующую информацию, которую имеют большие интернет DNS-серверы, но я бы хотел, чтобы эта информация была локально на моем DNS-сервере.

Есть ли что-то вроде BGP Zone transfers, но для DNS?

Есть ли какие-либо продукты/OSS-программы, которые могли бы «вытаскавать» эту информацию из внешней DNS-цепочки в локальный кэш в больших количествах, чтобы они были готовы, когда они нужны, а не кэшировать их, когда вы явно запрашиваете записи домена?

Ответ 1

DNS по своей конструкции не позволяет иметь авторитетную копию всех зон, поскольку в ней используется иерархическая система именования. Корневые серверы являются авторитетными для определения сервера, отвечающего за соответствующий домен верхнего уровня (TLD). Например, при разрешении www.example.net сначала будет сделан запрос к корневому серверу, чтобы определить авторитетный сервер имен для .net. Сервер имен .net определит авторитетный сервер имен для example.net, который затем вернет запись для www.example.net.

Вы не можете загрузить копию всех зон, однако можно запустить локальный кэширующий сервер имен. Кэширующий сервер имен предоставит локальную копию всех разрешенных записей, срок действия которых истекает с использованием времени жизни (TTL), указанного при записи. Пожалуйста, имейте в виду, что мое объяснение является упрощенным описанием протокола DNS, который можно подробно изучить, прочитав определения в соответствующей документации.

 Хотя перехвата NXDOMAIN можно избежать, запустив локальный кэш, имейте в виду, что весь трафик разрешения DNS все равно будет передаваться через ваше интернет-соединение в незашифрованном виде. Ваш провайдер потенциально может отслеживать этот трафик и все равно увидит обмен данными. Контракты, которые вы заключили с вашим провайдером, а также местные законы будут окончательно определять, как обращаться с вашими сообщениями. Контракты вашего провайдера включают в себя Условия предоставления услуг, Политику конфиденциальности и любые дополнительные контракты, которые вы можете заключить с вашим провайдером.

Использование зашифрованных протоколов является одним из лучших методов защиты ваших данных от подслушивания во время передачи, однако даже это не гарантирует анонимности. Существуют дополнительные протоколы, такие как Tor и Freenet, которые пытаются привнести анонимность в интернет, поскольку они никогда не были созданы для того, чтобы быть действительно анонимными.

Ответ 2

Несколько моментов:

Если вы настроите свой сервер на использование корневых подсказок вместо форвардеров, то вам не придется беспокоиться о проблемах MITM (по крайней мере, со стороны ISP и DNS hijackers). Для разрешения всех внешних DNS ваш сервер будет запрашивать корневые подсказки, которые направят вас к серверам gTLD для данного домена верхнего уровня (.com и т. д.), которые затем направят вас к DNS-серверам для данного домена.

Если вы действительно хотите создать свой собственный корневой сервер, вы, конечно, можете это сделать, хотя я не вижу в этом ничего хорошего. Вот как это делается на DNS-сервере Windows:

  1. Скачайте файл корневой зоны DNS и сохраните его под именем root.dns в каталоге %systemroot%\system32\dns на DNS-сервере Windows

  2. Используйте мастер создания зоны DNS для создания новой первичной зоны прямого поиска с именем «.». (без кавычек)

  3. Отмените опцию создания интегрированной зоны AD

  4. Введите «.» для имени зоны (без кавычек)

  5. Выберите опцию использования существующего файла, и поле имени файла зоны автоматически заполнится именем root.dns (если это не так, введите его)

  6. Оставьте опцию запрета динамических обновлений как есть

  7. Нажмите кнопку завершения после прохождения всех шагов мастера

  8. Теперь у вас есть корневой сервер с зонами и записями зон для всех серверов gTLD

Обратите внимание, что при этом на сервере будут отключены опции переадресации и подсказки корня (поскольку ваш сервер теперь является корневым сервером), а также обратите внимание, что, если информация gTLD изменится, ваш сервер не сможет получить уведомление об этих изменениях.

Ответ 3

Для тесно связанных серверов существуют передачи зон. Они функционируют подобно объявлениям BGP. По соображениям безопасности они обычно блокируются для других серверов. Если вы запустите кэширующий сервер имен, он скопирует список корневых серверов и очень скоро получит корни для .com, .net и т. д. Существует очень веская причина, по которой DNS является распределенной системой. В противном случае все работали бы с устаревшими данными, размер базы данных был бы довольно большим и большая часть данных не представляла бы для вас интереса.

Существуют варианты снижения риска отравления DNS, а хорошее программное обеспечение решает проблемы по мере их выявления. Существуют организации, которые работают над предоставлением достоверных данных, которые можно использовать в качестве восходящих провайдеров. Рассмотрите возможность использования OpenDNS или google в качестве вышестоящих провайдеров.

Корневые зоны DNS теперь подписаны, и я все чаще вижу, что мой почтовый сервер сообщает, что данные DNS были подписаны. Подписание DNS было заявлено как требование для IPV6. Подписанные DNS делают некорректность кэша очень сложным, но увеличивают сложность управления DNS.

Ответ 4

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

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

Ответ 5

Вы, конечно, можете создать свой собственный сервер и сделать его авторизованным для root, но я не знаю никакого способа, как вы можете предварительно заполнить его зонными файлами корневых серверов. Вы не можете просто запросить zonetransfer, так что, полагаю, вам придется заполнить его, сохранив свои кэши. Измените root.hints на других серверах имен так, чтобы они указывали на ваш частный корневой сервер, и тогда начните тестирование.

Но имейте в виду, что корневые серверы знают только то, какие серверы являются авторизованными для TLD, и ничего больше. По сути, вам придется воссоздать всю иерархию серверов, что кажется невыполнимой задачей.

Схожие статьи

Linux

Каковы точные различия на уровне протокола между SSL и TLS?

Linux

Безопасный стандартный набор правил iptables для базового веб-сервера HTTP(s)

Linux

Выполнение полного восстановления системы linux

Linux

Несколько библиотек glibc на одном хосте