Как стать автором
Обновить

Как и к НСДИ подключиться, и рыбку съесть

Время на прочтение2 мин
Количество просмотров8.1K

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

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

Можно было бы, конечно, порадоваться за такое беспокойство о качестве, но немного смущает, что владелец автономной системы обязан использовать только НСДИ, что напоминает складывание всех яиц в одну корзину, а учитывая качество работы НСДИ - и не в очень-то крепкую корзину. А за неподключение предусмотрены штрафы.

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

Решение простое как блин, в общем-то. НСДИ детектирует подключение к ней по наличию запросов, но совершенно не может определить, что вы делаете с ответами.

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

  1. указываете в списке серверов сервера НСДИ (если кто не в курсе - в ipv4 это 195.208.4.1 и 195.208.5.1), но не вместо, а вместе с теми, которые вы используете без давления на вас со стороны государства (гугловые, клаудфлерные, опенднсные, да мало ли чьи).

  2. кастуете на dnsmasq волшебную опцию --all-servers. Эта опция заставляет dnsmasq отправлять запросы на все серверы параллельно и использовать быстрейший из ответов.

  3. опционально (если почему-то не очень доверяете НСДИ) - закрываете на вашей системе входящие пакеты от адресов НСДИ с портов 53/udp/tcp. Например, дропаете (не реджектите) через iptables.

И все счастливы. Все запросы из вашей сети честно летят в НСДИ, если НСДИ упадет или затупит - вы получите ответы от ваших постоянных серверов, если вы выполнили п.3, то манипуляция ответами со стороны НСДИ не повлияет на ваше использование сети.

Просто, но очень удобно. Надеюсь, кому-нибудь поможет.

Если кто-то знает, как реализовать такое же поведение резолвера на базе bind, unbound, powerdns или других более серьезных серверов - напишите в комментариях. Я сходу решения для них не нашел.

UPD. Для компаний с большой нагрузкой и отдельными любыми собственными резолверами @prometheus_ru предложил красивый метод. Ставим между клиентами и уже имеющимися резолверами балансировщик (например, https://dnsdist.org/) и используем его https://dnsdist.org/advanced/teeaction.html, чтобы сбрасывать запросы на НСДИ:

addAction(AllRule(), TeeAction("195.208.4.1"))
newServer({address="127.0.0.1:9053", name="Backend1"})

Красиво и для оператора связи должно быть очень удобно. Хотя и не позволит использовать НСДИ по прямому назначению, но вряд ли это кого-то сильно обеспокоит.

Только зарегистрированные пользователи могут участвовать в опросе. Войдите, пожалуйста.
Традиционный опрос
62.79% Полезно54
4.65% Бесполезно4
32.56% Я томат28
Проголосовали 86 пользователей. Воздержались 14 пользователей.
Теги:
Хабы:
Если эта публикация вас вдохновила и вы хотите поддержать автора — не стесняйтесь нажать на кнопку
+8
Комментарии14

Публикации