От записи в реестре до правила на оборудовании: технический конвейер целиком
Семь шагов между юридической записью и пакетом в сети — почему это занимает часы
Когда новости пишут «домен X добавлен в реестр», в голове у читателя складывается простая картина: где-то в чёрной коробке щёлкнул выключатель, и через минуту все провайдеры страны перестали отдавать сайт. Реальность совершенно другая. Реестр — это распределённая система, оператор — это инженерная организация со своими процессами, а сетевое правило живёт на десятках узлов и обновляется по своему расписанию.
В этой статье — детальная карта того, что происходит между двумя событиями: «запись внесена» и «пользователь видит результат». Семь шагов, каждый со своими сроками, своими ошибками и своими причинами коллатеральных эффектов.
Технический конвейер от записи до правила
┌────────────────┐
│ 1. Регулятор │ запись внесена в реестр
└────────┬───────┘
▼
┌────────────────┐
│ 2. Выгрузка │ подписанный JSON/CSV для операторов
└────────┬───────┘
▼
┌────────────────┐
│ 3. Валидация │ проверка подписи, timestamp, формат
└────────┬───────┘
▼
┌────────────────┐
│ 4. Нормализация│ IDN→Punycode, CIDR, lowercase
└────────┬───────┘
▼
┌────────────────┐
│ 5. Генерация │ ACL для DNS, IP, SNI, URL
└────────┬───────┘
▼
┌────────────────┐
│ 6. Распростр. │ ansible/git push на узлы сети
└────────┬───────┘
▼
┌────────────────┐
│ 7. Применение │ reload nginx/dnsmasq/iptables/DPI
└────────────────┘
Полный цикл: 15 минут — 24 часа.Семь шагов конвейера
Пройдём по каждому шагу подробно — это инженерная истина, а не теория.
- Регулятор формирует запись. Сюда входит юридическое решение, оформление, ввод в учётную систему. На этом этапе записи ещё нет в выгрузке.
- Выгрузка оператору. С регулярным интервалом (часто 1–3 раза в сутки) формируется снапшот реестра в виде подписанного файла. Это может быть JSON, CSV, XML или специализированный формат. Подпись — RSA или ГОСТ.
- Валидация на стороне оператора. Скрипт скачивает файл, проверяет подпись регулятора, сверяет timestamp, валидирует формат. Если что-то не сходится — алерт инженерам.
- Нормализация. Доменные имена приводятся к нижнему регистру, IDN-имена конвертируются в Punycode, CIDR-нотация раскручивается в диапазоны IP, URL разбиваются на компоненты. Это нужно, потому что разные узлы сети ожидают разный формат.
- Генерация конфигурации. Из нормализованных записей собираются конфиги: zone-файлы для DNS, ACL для маршрутизаторов, signature lists для DPI, URL-паттерны для прокси. Один и тот же домен превращается в несколько разных артефактов.
- Распространение. Конфиги разносятся по узлам — обычно через систему управления конфигурацией (Ansible, Salt) или собственный CI/CD. У крупного оператора это сотни узлов в десятках регионов.
- Применение. На каждом узле сервис перечитывает конфиг:
nginx -s reload,systemctl reload dnsmasq, IP-таблицы обновляются атомарно. На DPI применение требует пересборки сигнатурных таблиц.
Какие типы признаков и чем они различаются
| Признак | Уровень | Сложность | Точность |
|---|---|---|---|
| IP / CIDR | Сетевой | Низкая (ACL на маршрутизаторе) | Низкая (общие IP CDN) |
| Домен (DNS) | Прикладной | Средняя (DNS-зона) | Средняя (обходится сменой DNS) |
| SNI | TLS handshake | Высокая (нужен DPI) | Высокая (пока нет ECH) |
| URL | HTTP-уровень | Очень высокая (только HTTP без TLS) | Точечная |
| Поведенческий шаблон | Статистика | Очень высокая (ML) | Вероятностная |
Современные системы редко используют один признак — обычно комбинируют. Подробнее устройство самого реестра как системы есть в статье про единый реестр.
Откуда берутся задержки в часах
Полный цикл от записи до применения может занимать от 15 минут до 24 часов. Источники задержки:
- Окно выгрузки регулятора. Если выгрузка делается раз в 6 часов, среднее ожидание — 3 часа.
- CI/CD оператора. Запуск скриптов, сборка конфигов, валидация на staging.
- Распространение на сотни узлов. Не все одновременно, обычно волнами.
- Кэши. Даже когда узел применил правило, у клиентов могут лежать кэши DNS с большим TTL. На стороне рекурсивных резолверов 3-х сторон (8.8.8.8, 1.1.1.1) запись для не-русских пользователей не появится никогда.
- CDN-фронтэнды. Если CDN использует anycast и кэширует HTTP-ответ, разные регионы могут видеть разное состояние.
Коллатеральный ущерб: почему задевает «не то»
Главная инженерная проблема грубой фильтрации — точность признака. Несколько типичных историй:
- IP-уровень и CDN. На одном anycast-IP Cloudflare живут десятки тысяч сайтов. Заблокировать один IP = задеть всех. Поэтому современные операторы избегают чисто IP-уровня для известных CDN.
- CNAME и subdomains. Доменное правило может неожиданно зацепить субдомены через CNAME-цепочки.
- SNI и виртуальный хостинг. Если на одном IP несколько сайтов, точный SNI-фильтр работает корректно — но если SNI-фильтр сделан с неточным regex, можно зацепить лишнее.
- Old Cache, New Reality. После исключения записи из реестра кэши DNS у пользователей продолжают отдавать старый ответ ещё час-сутки.
На каких уровнях сети применяется правило
Одна и та же запись может быть реализована на разных слоях с разным эффектом:
- DNS-уровень. Резолвер провайдера возвращает NXDOMAIN или специальный «заглушечный» IP. Легко диагностируется через
dig @1.1.1.1. - IP-маршрутизация. ACL на edge-маршрутизаторе дропает пакеты к определённому IP. Симптом — TCP-таймаут.
- TLS handshake. DPI разбирает SNI и шлёт TCP RST или дропает. Симптом — соединение устанавливается, но handshake обрывается.
- HTTP-перехват. На нешифрованном трафике (всё реже) подменяется ответ на страницу-заглушку.
Как диагностировать снаружи
Если хочется понять, на каком уровне применяется правило, четыре шага:
- Сравнить ответы DNS с трёх резолверов:
dig @8.8.8.8 site,dig @1.1.1.1 site,dig @resolver_провайдера site. Если расхождение — это DNS-уровень. - Если DNS отдаёт нормальный IP, проверить TCP:
nc -vz site_ip 443. Если таймаут — IP-фильтрация. - Если TCP-handshake проходит, попробовать TLS:
openssl s_client -connect site_ip:443 -servername site. Если соединение рвётся в handshake — SNI-фильтр. - Если TLS-handshake завершается, но
curl -vвозвращает что-то странное — посмотрите, не приходит ли страница-заглушка от прокси.
Итого
Запись в реестре — это начало технического процесса, а не его финал. Между «домен внесён» и «пакет в сети ведёт себя по-новому» проходит цепочка из семи шагов длиной от 15 минут до суток, и каждый шаг приносит свою задержку, свой риск ошибки и свою специфику. Понимание этой цепочки объясняет 95% «странных» эффектов: разные региональные операторы видят разное, кэши живут своей жизнью, а коллатеральный ущерб связан с архитектурой современного веба, а не с чьим-то злым умыслом.
Нужен стабильный защищённый доступ к интернету?
TooTimes — зашифрованный туннель до серверов в 9 странах, без логов.
Посмотреть тарифы