База знаний

Типы ограничений доступа: DNS, IP, SNI и DPI

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

Обновлено

Типы ограничений доступа: DNS, IP, SNI и DPI
Типы ограничений доступа: DNS, IP, SNI и DPI — схема
Упрощённая схема: реальные реализации отличаются деталями, но не принципом

Четыре уровня в одной таблице

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

Уровень имени в рукопожатии (SNI): работает на первом пакете TLS, ресурс средний, сопутствующий ущерб низкий, распознаётся разрывом сразу после отправки ClientHello. Глубокая инспекция (DPI): работает на разборе прикладного протокола и статистики, ресурс высокий, сопутствующий ущерб зависит от точности правил, распознаётся избирательным поведением при внешне одинаковых соединениях.

Важно, что уровни не исключают друг друга. На одной сети одновременно могут действовать все четыре, и разные ресурсы попадают под разные механизмы. Отсюда картина, где половина списка сайтов открывается, а половина нет, причём симптомы у неоткрывающихся отличаются.

Четыре уровня в одной таблице

Уровень имён: подмена ответа резолвера

Клиент отправляет запрос на порт 53, резолвер оператора возвращает не настоящий адрес, а адрес страницы-заглушки или ответ NXDOMAIN. Соединение с реальным сервером не начинается вовсе, потому что клиент не знает его адреса.

Сопутствующий ущерб минимален: затрагивается ровно одно имя, соседние домены на том же адресе не задеты. Метод дёшев, не требует разбора трафика и реализуется на любом рекурсивном сервере.

Распознаётся элементарно. Команда nslookup example.com 8.8.8.8 и та же команда без указания сервера дадут разные адреса. Если внешний резолвер возвращает адрес, а резолвер оператора — что-то другое, вмешательство происходит на этом этапе. Механизмы DoH и DoT закрывают такую возможность, унося запрос внутрь зашифрованного соединения.

Уровень адресов: отбрасывание маршрута

Маршрут к целевой сети удаляется из таблицы или направляется в null-интерфейс. Пакеты исчезают молча: ни ответа, ни сообщения ICMP, только таймаут через 20–75 секунд в зависимости от настроек стека.

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

Распознаётся по несоответствию: имя разрешается корректно, адрес получен, но ping и tracert обрываются на определённом узле внутри сети оператора. Если обращение к тому же адресу из другой сети проходит, узкое место локализовано.

Уровень имени в рукопожатии

TCP-соединение устанавливается нормально: три пакета рукопожатия проходят, порт 443 отвечает. Клиент отправляет ClientHello с полем server_name, устройство читает имя и, при совпадении с правилом, отправляет сегмент с флагом RST. Соединение рвётся через 10–60 миллисекунд после отправки первого пакета TLS.

Точность высокая: правило относится к конкретному имени, а не к адресу. Соседние домены на том же IP работают. Именно этим метод ценен для операторов — он решает проблему коллатерального ущерба, характерную для уровня адресов.

Распознаётся по характерной последовательности в захвате трафика: SYN, SYN-ACK, ACK, ClientHello, затем RST. Дополнительный признак — значение TTL в пакете сброса отличается от TTL нормальных ответов того же сервера, что указывает на источник ближе конечной точки.

Уровень имени в рукопожатии

Глубокая инспекция: разбор поведения

Когда явных признаков в открытых полях нет, решение принимается по совокупности: отпечаток TLS-стека, распределение размеров пакетов, регулярность интервалов, соотношение направлений трафика, поведение при активном зондировании.

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

Распознаётся сложнее остальных. Типичная картина — соединение работает первые секунды или первые мегабайты, а затем прерывается или резко замедляется. Второй признак — зависимость результата от версии клиентской программы при неизменных адресе и имени: разные библиотеки дают разные отпечатки рукопожатия.

Почему в одной сети один сайт открывается, а другой нет

Первая причина — разные записи в правилах. Один ресурс попал в перечень как доменное имя и обрабатывается на уровне резолвера, второй как подсеть и обрабатывается на маршрутизации, третий не попал вовсе.

Вторая причина — разная инфраструктура сервисов. Ресурс с локальным узлом CDN внутри сети оператора идёт по короткому внутреннему маршруту и вообще не проходит через точки разбора. Ресурс без такого узла идёт через магистральный стык со всеми промежуточными устройствами.

Третья причина — кеширование и рассинхронизация. Резолвер хранит ответ до истечения TTL записи, обычно от 60 секунд до суток; правила на оборудовании обновляются со своей периодичностью; браузер держит собственный кеш DNS. В результате два устройства в одной квартире могут получить разный результат в течение получаса после изменения правил.

Вопросы

Частые вопросы

Как быстро определить, на каком уровне возникла проблема?
Три команды по очереди: nslookup с внешним резолвером покажет вмешательство в имена, ping и tracert — обрыв маршрута, а попытка подключиться к порту 443 с наблюдением за ответом — сброс на этапе рукопожатия. Разные симптомы указывают на разные уровни.
Почему при полном отсутствии ответа не приходит сообщение об ошибке?
Отбрасывание пакета в null-интерфейсе по умолчанию не сопровождается уведомлением ICMP. Клиенту остаётся только ждать истечения таймаута, поэтому браузер долго показывает пустую страницу, а затем сообщает о превышении времени ожидания.
Что даёт шифрование DNS?
DoH и DoT прячут запрос имени от наблюдения и подмены по пути. Но на этом их эффект заканчивается: адрес назначения в IP-заголовке и поле SNI в рукопожатии остаются видимыми, поэтому механизмы уровня адресов и уровня имени в TLS продолжают работать.
Может ли один сайт попадать под несколько механизмов сразу?
Да, и это распространённый случай. Одно и то же имя может обрабатываться и резолвером, и устройством разбора рукопожатия. Тогда симптомы меняются в зависимости от того, какой резолвер использует клиент.
Почему на телефоне и на компьютере в одной сети результат разный?
Устройства могут использовать разные резолверы: мобильные операционные системы часто включают шифрование DNS по умолчанию. Различаются и TLS-стеки приложений, а значит их отпечатки рукопожатия.
Влияет ли протокол HTTP/3 на наблюдаемую картину?
Да. QUIC работает поверх UDP и шифрует больше служебных полей, поэтому часть привычных признаков в нём не видна. Оборудование нередко реагирует на это понижением приоритета UDP-трафика, и браузер незаметно откатывается на TCP.
От теории к практике

Проверьте, что из этого касается вашей сети

Подписка оформляется в Telegram-боте за пару минут: трафик без лимита, три устройства, 14 локаций на выбор.

Подписка оформляется в Telegram-канале сервиса · Безлимитный трафик · Поддержка круглосуточно