Serverless-dns — если нужно взять и поднять собственный DNS-сервер

9 августа 2022
Технологии
Serverless-dns — если нужно взять и поднять собственный DNS-сервер
Рассказываем о новом open source проекте, который может стать альтернативой другим распространенным DNS-резолверам. Возможности и потенциальные подводные камни — в нашей статье.

Почему мы об этом говорим

Прежде чем перейти к serverless-dns, поговорим о том, зачем кому-то может понадобиться собственный DNS-сервер? Во-первых, чтобы повысить конфиденциальность в интернете. Сторонние DNS-серверы видят исходящие запросы и домены, которые посещает пользователь.

Во-вторых, чтобы сделать инфраструктуру более надежной. Кибератака на общий резолвер затрагивает сразу всех клиентов. Подобные случаи уже известны — например, в 2016 году хакеры провели DDoS-атаку на инфраструктуру американского DNS-провайдера Dyn. Она нарушила работу социальных сетей, облачных провайдеров, стриминговых сервисов и производителей электроники.

В то же время собственный DNS-сервер позволяет работать с уникальными типами записей, которые поддерживаются не всеми сетевыми устройствами.

Что может serverless-dns

Это — открытый DNS-резолвер, поддерживающий DNS-over-HTTPS (DoH) и DNS-over-TLS (DoT). Он не требует дополнительной настройки и автоматически подстраивается под нагрузку, если развернут на бессерверной платформе в одном из трех нишевых провайдеров — бесплатного тарифа достаточно для уверенной работы пары десятков устройств. Соответствующие инструкции есть тут, тут и тут. Для желающих поэкспериментировать с кодом на собственной инфраструктуре — исходники доступны в репозитории на GitHub.

Как утверждают разработчики, обработка запроса на стороне сервера занимает до двух миллисекунд. При этом среднее время задержки между конечными пунктами (end-to-end latency) всего 10–30 мс. Также serverless-dns поддерживает работу с черными списками, в которые входит порядка 5 млн хостов. Они хранятся в формате сжатого префиксного дерева — это сделано для ускорения поиска. Списки обновляются раз в неделю и размещаются в отдельном объектном хранилище.

Проект относительно молодой, но вокруг него уже начало формироваться сообщество, а на GitHub он набрал почти тысячу звезд. Однако в тематическом треде на Hacker News, пользователи обратили внимание на потенциальные подводные камни.

проект serverless-dns

В частности, DoH и DoT не обладают надежными инструментами для клиентской авторизации. При работе с serverless-dns этому вопросу необходимо уделить особое внимание, иначе к сервису смогут подключиться сторонние клиенты. Например, в случае с DoH можно встроить API-токены в URL, а в случае DoT — закодировать аналогичную информацию в заголовок Host, содержащий имя домена, для которого предназначен запрос (хотя это и не самый надежный вариант).

Другой пользователь отметил, что система пока не поддерживает технологию обнаружения установленных резолверов (DDR). Она позволяет искать зашифрованные DNS-серверы по специальным записям. Возможно, разработчики реализуют её со временем.

Если нужно больше альтернатив

Кроме serverless-dns, существуют другие открытые проекты, позволяющие развернуть собственный DNS-сервер. Достаточно мощное и популярное решение представляет собой целый набор программ для разрешения зон системы доменных имен. Его также можно использовать в качестве кэширующего DNS-сервера. Есть и минималистичные проекты. Например, эта система-посредник принимает запросы по HTTPS и перенаправляет их на локальный DNS-сервер с помощью утилиты nsupdate. Он не требует указывать имя хоста или IP, которые нужно обновить. Для этих целей разработки приспособили простой секретный ключ. На GitHub есть инструкция по настройке клиентской и серверной частей.

Мы используем файлы cookies для оптимизации функциональности сайта и улучшения качества услуг. Нажимая «Принять», вы даете согласие на работу с этими файлами. Чтобы узнать больше, пожалуйста, прочтите нашу Политику конфиденциальности.