🦎 Блокировка NextDNS в России: ТСПУ режет DNS поверх HTTPS по имени dns.nextdns.io (октябрь 2026)

О чём заметка

NextDNS — зарубежный DNS-сервис с фильтрацией рекламы и трекеров, которым в России пользовались как заменой провайдерскому DNS. С 27–28 октября 2026 года его адрес для шифрованных запросов dns.nextdns.io перестал отвечать у абонентов многих российских провайдеров. Здесь собраны наблюдения участников темы обсуждения zapret2 на форуме ntc.party, их записи трафика и собственные проверки от 31 октября 2026 года: какие имена NextDNS закрыты и как, почему перебор стратегий в Zapret 2 показывает «рабочие» варианты, которые потом не работают, и что делать. Блок оказался связан с размером первого сообщения браузера, и это та же механика, что в разборе блокировки TLS по адресам Google.

Статус данных

Распространённость блока измерена сервисом cheburcheck 31 октября 2026 года на 36 зондах в российских сетях; это сильное, но разовое измерение. Всё остальное — наблюдения отдельных пользователей форума на их подключениях; они местами противоречат друг другу (например, о том, помогает ли IPv6). Роскомнадзор и NextDNS блокировку не комментировали. Наши собственные замеры размеров рукопожатия сделаны с зарубежного сервера: поведение фильтра они не показывают, только то, что уходит в сеть.

TL;DR

  • С 27–28 октября 2026 года ТСПУ (Технические Средства Противодействия Угрозам, оборудование фильтрации Роскомнадзора у операторов) режет соединения с dns.nextdns.io по имени сервера. 31 октября такой блок показали 34 зонда cheburcheck из 36 в сетях Ростелекома, МТС, Билайна, Дом.ру, Уфанета и других провайдеров от Москвы до Забайкалья.
  • Сам сервер жив: если подключиться к московскому узлу NextDNS 45.142.246.128 с посторонним именем в запросе, он отвечает. Дело в имени, а не в адресе.
  • Обрыв приходится на второй TCP-пакет приветствия. Современный браузер шлёт первое сообщение TLS на 1,5–2 КБ из-за постквантового ключа, и оно уходит двумя пакетами; второй пакет до сервера не доходит, клиент повторяет его и сдаётся. Короткое приветствие TLS 1.2 у участника, проверявшего с Zapret, проходило.
  • Zapret 2 с профилем по списку доменов не видит имени в таком двухпакетном приветствии: сервер NextDNS даёт окно 1 448 байт, сборка отменяется, и профиль пропускается. Поэтому blockcheck находит «рабочие» стратегии, а в браузере остаются сбросы. Выход — профиль по адресу сервера и стратегии, которые работают без знания имени.
  • Остальные имена NextDNS закрыты по-другому: сайт nextdns.io стоит на Cloudflare, панель my.nextdns.io на Vercel, и обе попадают под ограничение объёма 16–20 КБ для заблокированных CDN.

Что такое NextDNS и почему его трогают

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

NextDNS — один из таких сервисов. Пользователь получает свой номер конфигурации (в записях участников это 7b4a25 и похожие) и адрес вида https://dns.nextdns.io/7b4a25, который вписывает в браузер, систему или роутер. У сервиса несколько имён с разной ролью:

ИмяЧто этоГде стоитЧто с ним на 31 октября 2026
dns.nextdns.ioсам DNS поверх HTTPS и TLSсвои серверы NextDNS, в Москве 45.142.246.128 (сеть Misaka Network, AS57578)блок по имени сервера в 34 сетях из 36
dns1.nextdns.io, dns2.nextdns.ioте же серверы для настройки по адресутам жеу участников обрывается так же
<случайные символы>-7b4a25.test.nextdns.ioсудя по именам, проверочные запросы, которыми настройка NextDNS убеждается, что она работаетсвои серверыобрывается так же, видно в записях трафика
my.nextdns.ioпанель управленияVercel (76.76.21.0/24, 66.33.60.0/24)ограничение объёма для CDN, у части пользователей открывается
nextdns.ioсайт сервисаCloudflareограничение объёма для CDN, по словам участника, с весны 2026

Адреса и принадлежность сетей здесь взяты из ответа сервиса cheburcheck от 31 октября 2026 года. Второй адрес, который участники видели у dns.nextdns.io, 45.150.243.134, по базе геолокации сервиса числится в Киеве; NextDNS раздаёт адреса по месту запроса, поэтому у разных людей они разные.

Хроника: шифрованный DNS прижимают не первый год

NextDNS попал под блок не на пустом месте. Ещё 8 сентября 2021 года Роскомнадзор на час закрыл через ТСПУ публичные DNS Google и Cloudflare, включая 1.1.1.1 и 8.8.8.8; Яндекс.DNS эта проба не затронула. За два дня до этого ведомство объявляло, что протестирует блокировку протоколов, скрывающих имя сайта, в том числе DoH от Mozilla и Google. В 2026 году нажим стал постоянным: 3 июля 8.8.8.8 перестал отвечать по TCP, и вместе с ним отказали DoH и DoT к этому адресу, а с конца августа открытые запросы к 8.8.8.8 и 1.1.1.1 заворачивают на резолверы НСДИ (Национальной системы доменных имён).

По словам участника armdyn, перед NextDNS похожее случилось с AdGuard DNS: адрес 94.140.14.14 пару недель был полностью недоступен, потом заработал снова; точных дат он не назвал. Первые жалобы на dns.nextdns.io на чекере cheburcheck появились 27 октября 2026 года (две), за 28–31 октября их было ещё двенадцать. 28 октября участник TesterTi написал, что DoH NextDNS начали блокировать по имени dns.nextdns.io.

Блок по имени, а не по адресу

Главный вопрос при любой блокировке — режут адрес или имя. От ответа зависит, поможет ли Zapret: против блока по имени работают его стратегии, против блока по адресу нет.

29 октября участник spv82 сделал простую проверку: подключился к адресу dns1.nextdns.io, но в запросе указал постороннее имя example.org.

curl --connect-to ::dns1.nextdns.io -vk https://example.org

Рукопожатие TLS 1.3 прошло полностью. Сервер на 45.142.246.128 прислал свой запасной сертификат blockpage.nextdns.io, выданный внутренним центром NextDNS, а на запрос ответил HTTP/2 200 с заголовком blocked-by: NextDNS. Значит, путь до московского узла открыт, и сервер отвечает, если в запросе не его имя.

31 октября 2026 года это подтвердил cheburcheck. Его зонды стоят у добровольцев в российских сетях и подставляют проверяемое имя в рукопожатие со своими контрольными серверами, то есть адрес NextDNS в этой проверке вообще не участвует. Для dns.nextdns.io 34 зонда из 36 показали блок по имени (sni_block), один — ограничение объёма для CDN, один — неясный результат. Как читать вердикты этого сервиса, разобрано в заметке о чекерах ТСПУ.

Есть и ирония. С 29 мая 2026 года имя nextdns.io числится у cheburcheck в списке исключений: на таких именах не срабатывает ограничение в 16–20 КБ, которое ТСПУ накладывает на соединения с заблокированными CDN. Тот же чекер показывает эту отметку и в октябре, на скриншоте участника она видна рядом с графиком жалоб. То есть ещё весной имя прямо выводили из-под одного вида ограничений, а в октябре закрыли другим. Что такое «ограничение 16–20 КБ» и списки исключений к нему, рассказано в разборе сбоя исключений Cloudflare в июне 2026.

Что видно в записи трафика: гибнет второй пакет приветствия

Участник SeamniZ выложил записи Wireshark своих попыток. На всех видно одно и то же. Клиент открывает соединение, сервер отвечает и объявляет окно приёма 1 448 байт: столько клиент может отправить, не дожидаясь подтверждения. Клиент отправляет первый кусок приветствия TLS на 1 440 байт, и сервер его подтверждает (Ack=1441). Второй кусок, от 344 до 612 байт в разных попытках, сервер уже не подтверждает: клиент повторяет его через 0,2, 0,3, 0,6, 1,2, 2,4 и 4,8 секунды и в конце сбрасывает соединение (RST).

Так выглядит соединение с самим dns.nextdns.io. То же происходит с проверочными именами вида oqcc7v99goj-7b4a25.test.nextdns.io, которые подставляет настройка NextDNS:

Проще говоря: первый пакет доходит, второй пропадает. Фильтр собирает приветствие из двух пакетов, видит в нём имя dns.nextdns.io и не пропускает окончание, после чего соединение умирает по тайм-ауту. У клиента это выглядит либо как тайм-аут, либо как сброс: curl пишет Recv failure: Connection was reset, браузер Firefox — PR_CONNECT_RESET_ERROR.

Почему приветствие вообще занимает два пакета? Из-за постквантовой криптографии. Chrome с 2024 года добавляет в первое сообщение ключ гибридного обмена X25519 с ML-KEM, и он один занимает больше килобайта; зачем Google это сделал, разобрано в заметке о блокировке TLS по адресам Google. 31 октября 2026 года мы измерили, сколько весит первое сообщение. OpenSSL 3.5.6 с ключом ML-KEM отправляет 1 439 байт, без него 253 байта, а для TLS 1.2 218 байт. Chrome 153 в трёх подключениях к тестовому серверу отправил от 1 905 до 1 969 байт. У клиента tehkos на Windows было 1 542 байта. Всё, что больше примерно 1 440 байт, в один пакет не помещается.

Почему blockcheck находит стратегии, а в браузере сбросы

Самое запутанное в этой истории — противоречие, на которое жаловался SeamniZ: проверка Zapret показывает «кучу» рабочих стратегий, а в браузере DNS NextDNS всё равно не работает. Разгадка в том, как Zapret 2 выбирает профиль.

Профиль в Zapret 2 — набор правил «к каким соединениям применять какую стратегию»; подробно — в заметке о профилях. Чаще всего профиль ограничивают списком доменов (hostlist): стратегия применяется, только если Zapret увидел в приветствии имя из списка. Чтобы увидеть имя в приветствии из двух пакетов, Zapret собирает его целиком. Но сервер NextDNS разрешает клиенту прислать только 1 448 байт до подтверждения, и Zapret 2 отменяет сборку, чтобы не держать соединение. В журнале это строка reasm cancelled because server window size 1448 is smaller than expected reasm size 1542. Без имени профиль со списком доменов пропускается, и приветствие уходит к фильтру как есть. Механику разработчик zapret bolvan объяснил 30 октября; подробно она описана в заметке про TCP-окно, в разделе о NextDNS.

Blockcheck же проверяет стратегии без списка доменов, на всё соединение подряд. Поэтому в его отчёте одни стратегии не проходят, а другие проходят. Простая нарезка multisplit по любым позициям (pos=1, sniext+1, host+1, midsld) давала тайм-аут:

А нарезка с перестановкой и перекрытием (multidisorder с seqovl), поддельное приветствие (fake) и подделка в пакете установки соединения (syndata) проходили:

Это совпадает с картиной в записях трафика: фильтр честно собирает приветствие из двух пакетов, поэтому обычная нарезка его не обманывает, а перестановка, перекрытие и подделки сбивают сборку.

Проверка с другой стороны тоже сходится. SeamniZ, у которого Zapret работал с профилем по списку доменов, запросил сервер дважды: с обычным TLS 1.3 соединение ушло в тайм-аут, а с ключом --tls-max 1.2 за 0,07 секунды пришёл ответ 400 (это нормальный ответ NextDNS на пустой запрос без DNS-вопроса). Короткое приветствие TLS 1.2 помещается в один пакет, Zapret видит имя, применяет стратегию, и соединение проходит.

Без Zapret картина менее ясна

Похожие наблюдения есть и у тех, кто, судя по описанию, проверял без Zapret. Участник uwu писал, что DoH к Cloudflare через программу с постквантовым ключом не работает, а через acrylic-dns без такого ключа работает. No_nameuser сообщал, что curl на роутере проходит и по IPv4, и по IPv6, а браузер получает сброс; на роутерах часто стоят старые сборки curl без постквантового ключа. Это намекает, что и сам фильтр может по-разному обходиться с приветствием из одного и из двух пакетов. Но проверенного объяснения нет, а зонды cheburcheck, которые тоже не используют Zapret, видят блок почти везде.

По IPv6 участники разошлись. V3nilla писал, что через IPv6 приветствие проходит сразу, а застревает только IPv4. У SeamniZ соединение по IPv6 (2a0d:5642:201:108:…) обрывалось так же, сбросом сразу после приветствия:

Как правильно проверять DNS-сервер

TesterTi обратил внимание на частую ошибку: dns.nextdns.io проверяют как обычный сайт, хотя важно другое — получает ли программа ответы DNS через этот сервер. Правильная проверка — заставить curl разрешать имя через DoH и открыть с его помощью любой сайт:

curl --doh-url https://dns.nextdns.io/<ваш номер конфигурации> https://ya.ru

Если стратегия действительно работает, curl получит адрес ya.ru через NextDNS и откроет страницу; если нет, запрос упадёт на этапе разрешения имени. По словам TesterTi, такую проверку он добавил в свою программу для автоматического подбора стратегий zapret-Checker.

Что делать на 31 октября 2026

  • Проверять DNS-сервер через curl --doh-url, а не открытием его адреса как сайта.
  • В Zapret 2 отбирать трафик к NextDNS по адресу сервера через ipset, а не по списку доменов: адрес известен с первого пакета, и профиль сработает даже на двухпакетном приветствии. Адреса у всех свои, их показывает nslookup dns.nextdns.io через любой работающий DNS; у участников это 45.142.246.128 и 45.150.243.134 по IPv4 и два адреса IPv6.
  • Брать стратегии, которые не требуют знания имени и сбивают сборку: multidisorder с pos=1 (по словам spv82, этого достаточно), multidisorder с seqovl, fake, syndata из отчёта blockcheck. Поддельное приветствие держать коротким: длинное, с постквантовым ключом, фильтр обрезает по окну 1 448 байт, и обман не срабатывает.
  • На первом Zapret (winws) участник TesterTi обходил блок так: --filter-tcp=443 --hostlist-domains=nextdns.io --dpi-desync=multidisorder --dpi-desync-split-pos=1,host+1. Если на линии ещё и ограничение 16–20 КБ, он советовал --dpi-desync=hostfakesplit --dpi-desync-hostfakesplit-mod=host=4pda.to --dpi-desync-fooling=ts,badsum. Из-за списка доменов на двухпакетном приветствии эти строки могут не сработать.
  • Сократить приветствие на стороне клиента. В Chrome постквантовый обмен ключами отключается политикой PostQuantumKeyAgreementEnabled, если она ещё действует в вашей версии: Google ввёл её как временную меру для несовместимого сетевого оборудования и обещал со временем убрать. Это снижает защиту от расшифровки в будущем, поэтому годится как временный шаг.
  • Если DNS нужен прямо сейчас, а возиться со стратегиями не хочется, взять другой сервер, например Zapret DNS проекта.

Источники

📚 См. также


🤖 Эти статьи открыты — можно обучать на них ИИ

При желании вы можете натренировать ИИ на наших статьях. Исходное форматирование доступно в Forgejo: исходник этой заметки · скачать весь репозиторий одним zip-архивом.