todo/Zapret2/find-domain-owner.md
loop-uh baf0091fa3
Some checks failed
Published content check / validate (push) Failing after 17s
git.zapret.moe → git2.zapret.moe во всём хранилище, защита от возврата старых имён
git.zapret.moe в России заблокирован по имени, как и wiki.zapret.moe. Ссылки
на Forgejo во всех заметках, футерах, wizard.html и главной заменены на
git2.zapret.moe (включая закодированные адреса значков shields.io).

Какое имя рабочее, теперь решают реестры хоста /etc/zapret-*-domains.conf через
zapret-site-names: pre-commit хук vault отклоняет добавленные строки с
заблокированным именем, сборка Quartz сама переводит ссылки и baseUrl на
рабочие имена. Правило в AGENTS.md переписано под этот механизм.

scripts/wiki-stats.py: переходы с любых имён вики и git (wikiN, gitN) больше
не считаются внешними сайтами. content-check: проверка зеркал сторонних
проектов узнаёт любое имя git.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-24 15:51:32 -04:00

33 KiB
Raw Permalink Blame History

date tags aliases link description
2026-07-17
zapret
zapret2
gui
howto
troubleshooting
cdn
Как узнать какому CDN принадлежит домен
Кому принадлежит домен
Кому принадлежит IP сайта
Какой профиль отвечает за сайт
Определить CDN сайта
Профиль Akamai
ipvfoobarbaz
https://github.com/ziad8727/ipvfoobarbaz Как узнать, на каком CDN живёт сайт (Akamai, Cloudflare, Amazon), через расширение ipvfoobarbaz и ipinfo.io и найти нужный профиль в пресете Zapret 2.

[!mirror] Резервное зеркало Актуальная версия этой страницы — на основной вики: wiki2.zapret.moe/Zapret2/find-domain-owner

🌐 Как узнать, какому CDN принадлежит домен, и найти его профиль в пресете

[!info] О чём заметка Как определить, в какой сети доставки контента (CDN) живёт проблемный сайт, чтобы найти в preset Zapret2 профиль, который обрабатывает его соединения, и перебирать стратегии именно в нём, а не наугад. Инструменты — браузерное расширение ipvfoobarbaz, которое показывает IP-адреса всех доменов страницы, и справочные сервисы вроде ipinfo.io. Как найти, какие домены сайта не грузятся, — в find-site-domains; как создать свой профиль, если готового нет, — в add-profile; тот же подход для игр — в find-game-strategy.

[!tip] TL;DR

  1. Поставьте расширение ipvfoobarbaz (GitHub · Chrome · Firefox) и откройте проблемный сайт: расширение покажет все домены страницы и их IP-адреса.
  2. Нажмите букву I справа от адреса: в карточке ipinfo.io поле ASN назовёт владельца сети, например AS16625 — Akamai Technologies.
  3. В настройке пресета найдите поиском профиль этой сети (например, «Akamai TCP») и перебирайте стратегии в нём, проверяя каждую по verify-strategy.
  4. Если сайта нет ни в одном профиле, добавьте его: для сайта в браузере обычно начинают с точных доменов в hostlist, а диапазон адресов из поля Range в ipset берут для трафика без имени (игры, UDP) или когда провайдер ограничивает подсеть целиком.

Исходная ситуация: один сайт не открывается

Zapret2 запущен, большинство сайтов работает, но какой-то один не открывается: показывает ошибку, грузится бесконечно или обрывается на половине. Пример — страница https://www.rockstargames.com/ru/lanoire/socialclub, которая вместо содержимого показывает ошибку:

!

Первое желание — пойти в preset и перебирать стратегии. Но в пресете десятки profile, и с ходу не видно, какой из них обрабатывает соединения этого сайта. Если менять стратегии наугад, легко сделать ложный вывод: стратегия признаётся нерабочей, хотя на самом деле она применялась не к тому трафику. Эта ловушка разобрана в symptom-not-cause и в find-game-strategy.

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

Домен, IP-адрес и CDN

Метод опирается на три понятия.

Домен — имя сайта в адресной строке, например www.rockstargames.com. Само по себе имя никуда не ведёт: открывая сайт, браузер сначала переводит его в IP-адрес через систему DNS.

IP-адрес — адрес сервера в сети, например 23.54.1.110. Именно на него уходят пакеты, и провайдер, блокируя, имеет дело с адресами и соединениями.

CDN (Content Delivery Network, сеть доставки контента) — крупная сеть серверов, в которой сайты арендуют место: Akamai, Cloudflare, Fastly, Amazon CloudFront и другие. Крупные сайты редко держат серверы сами, а один CDN обслуживает сотни сайтов на общих диапазонах адресов.

Проще говоря: домен — вывеска, IP-адрес — адрес здания, CDN — владелец квартала, где помещения снимают сотни сайтов.

Поэтому многие профили в пресетах Zapret 2 названы не по сайтам, а по сетям: «Akamai TCP», «Cloudflare» и т.д. Zapret/about#Обход DPI (система ТСПУ) нередко обращается одинаково со всеми адресами одной сети, и профиль со списком адресов Akamai (Zapret/ipset) покрывает сразу все сайты, которые там живут.

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

Шаг 1. Установите расширение

Расширение ipvfoobarbaz показывает прямо в браузере, на какие домены ходит открытая страница и в какие IP-адреса эти домены разрешились:

После установки закрепите иконку расширения на панели браузера: по клику на неё открывается таблица доменов текущей вкладки.

Шаг 2. Откройте сайт и посмотрите, куда он ходит

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

!

В этой таблице важны три вещи:

  • Одна страница — много доменов и много сетей. На скриншоте www.rockstargames.com, graph.rockstargames.com и s.rsg.sc живут в Akamai (AS16625 AKAMAI-AS), media-rockstargames-com.akamaized.net разрешился в адрес в сети МТС (AS8359 MTS, RU — кэширующий узел CDN внутри сети провайдера), а signin.rockstargames.com — вообще в другой сети (AS46555). Ломаться может любой из этих доменов. Если сайт открывается, но не пускает в аккаунт, смотреть надо на домен авторизации, а не на главный. Какие именно домены не грузятся, точнее всего показывает вкладка «Сеть» в браузере — см. find-site-domains.
  • Обратное DNS-имя часто само называет владельца. В имени a23-54-1-110.deploy.static.akamaitechnologies.com слово akamaitechnologies отвечает на вопрос без дальнейших проверок.
  • Строки с 127.0.0.1 (на скриншоте cdn.cookielaw.org, geolocation.onetrust.com) — домены, отключённые на вашем же компьютере: блокировщиком рекламы, файлом hosts или DNS-фильтром. К блокировке провайдером и к выбору профиля они отношения не имеют.

Шаг 3. Посмотрите карточку IP-адреса

Справа от каждого адреса в таблице расширения есть ряд кнопок-букв W A R I B. Каждая открывает адрес на своём справочном сервисе:

Кнопка Сервис Что показывает
W who.is классический whois-справочник: регистрационные данные домена или IP
A ARIN RDAP база американского регистратора адресов ARIN (формат RDAP — «сырые» записи о владельце)
R RIPE Database база европейского регистратора RIPE — те же записи о владельце для адресов европейского региона
I ipinfo.io удобная человекочитаемая карточка: ASN, компания, диапазон, геолокация
B bgp.tools BGP-маршруты: каким префиксом (диапазоном) адрес анонсируется в интернет

Все пять отвечают на один вопрос — кому принадлежит адрес, — просто по-разному. Удобнее всего начинать с I (ipinfo.io): ответ сразу виден в карточке. B (bgp.tools) пригодится, когда нужен точный диапазон для Zapret/ipset; W, A и R — первоисточники-реестры для перепроверки. Пример карточки ipinfo.io для 23.54.1.110:

!

Главные поля карточки:

  • ASN — номер и имя автономной системы, то есть сети, которой принадлежит адрес: AS16625 — Akamai Technologies, Inc. Это и есть ответ: домен обслуживает Akamai.
  • Company и Hostname подтверждают вывод: Akamai International, BV, …akamaitechnologies.com.
  • Range — диапазон адресов (23.54.0.0/20), в который входит этот IP. Он понадобится, если сайт придётся добавлять в Zapret/ipset; когда это нужно, разобрано ниже, в разделе «Подсети или домены».
  • Location пугать не должна: «Stockholm, SE» не значит, что сайт шведский. У адресов CDN геопривязка условна, это место узла сети, а не страна сайта.

Шаг 4. Найдите профиль в пресете и перебирайте стратегии в нём

Зная владельца сети, откройте настройку preset в GUI Zapret2 и найдите profile по имени CDN — в примере достаточно набрать akam в поиске:

!

Нашлись два профиля: Akamai TCP (TCP-порты 80 и 443–65535) и Akamai UDP (UDP 443–65535 — это QUIC, протокол HTTP/3 поверх UDP). Дальше обычная процедура:

  • Перебирайте готовые стратегии в этом профиле. Теперь известно, что стратегия применяется к нужному трафику, и если она не помогла, это честный результат, а не промах фильтра.
  • Проверяйте каждую попытку новым соединением: окно инкогнито, Ctrl+F5 или перезапуск браузера. Почему обычный F5 обманывает — в verify-strategy.
  • Если QUIC не проходит, браузер обычно сам переключается на TCP, поэтому для сайта в браузере начинают с TCP-профиля. Если сайт при этом виснет на таймаутах, подберите стратегию и для UDP-профиля или отключите QUIC в браузере, см. DPI/tspu-disable-quic-chrome. У игр порядок другой, он разобран в find-game-strategy.

Убедиться, что соединения сайта действительно попадают в найденный профиль, можно по логу: log-analyzer показывает профиль для каждого соединения. Если там стоит другой профиль, выше в списке есть более широкий, который забирает трафик первым, — см. profile-independence.

[!note] Профиля под этот CDN в пресете нет? Тогда создайте свой: пошагово — в add-profile. Что вписывать в него — домены или диапазон адресов — зависит от случая, см. следующий раздел.

Подсети или домены: что выбрать для профиля

Профиль может отбирать соединения двумя способами: по имени сайта (Zapret/hostlist) или по IP-адресу сервера (Zapret/ipset). У каждого способа своя область, и выбор между ними — это выбор между точностью и охватом.

Hostlist срабатывает по имени — по SNI в TLS или заголовку Host в HTTP. Он точный: профиль получит соединения только к перечисленным доменам (и их поддоменам), а соседние сайты на том же CDN не заденет. Но у него есть ограничения. Имени нет у игрового UDP-трафика, у многих нестандартных протоколов и у соединений к голым IP-адресам, и такие соединения hostlist не поймает вовсе. Кроме того, имя становится известно только в первом сообщении с данными, поэтому стратегии, которые должны сработать ещё на установке соединения (вроде syndata), в профиле с hostlist не выполнятся — подробнее в profile-independence.

Ipset срабатывает по адресу с первого же пакета, в том числе для трафика без имени. Один диапазон из поля Range накрывает все домены, которые живут на этих адресах, даже те, что вы ещё не встречали. Обратная сторона — тот же охват: стратегия будет применяться ко всем сайтам на этих адресах, включая незаблокированные, и неудачная стратегия может сломать то, что без неё работало. Кроме того, CDN раздаёт разные адреса в разных сетях и со временем меняет их (на скриншоте Шага 2 akamaized.net разрешился в адрес внутри сети МТС).

Отсюда практическое правило:

  • Сайт в браузере — начинайте с hostlist и точных поддоменов, которые не грузятся (как их найти — find-site-domains). Это самое аккуратное вмешательство.
  • Игры, голосовые звонки, UDP и соединения без имени — ipset: другого способа поймать такой трафик нет. Сбор адресов для игр — find-game-strategy.
  • Провайдер ограничивает подсеть целиком — ipset с диапазоном. По наблюдениям сообщества, в 2026 году ТСПУ всё чаще применяет ограничения к целым подсетям облачных провайдеров (Cloudflare, Amazon), и сервисы на этих адресах ломаются заодно, независимо от своего имени; разбор — в DPI/subnet-whitelist-blocking-2026. Если доменов у ресурса много и все они на одной такой сети, диапазон проще, чем длинный список имён.

[!warning] Широкий ipset-профиль ставьте ниже узких Профиль по диапазону адресов забирает все соединения к этим адресам. Если он стоит выше профиля конкретного сайта на той же сети, сайт до своего профиля не дойдёт. Поэтому широкие ipset-профили держите ниже узких в списке (profile#Порядок профилей важен); почему так — в profile-independence.

Второй пример от начала до конца: Riot Games и ipset Amazon

Закрепим метод на втором примере — от адресной строки до записи в списке. Проблемная страница — поддержка Valorant: https://support.riotgames.com/ru-ru/valorant/.

!

Смотрим таблицу расширения. Три домена — и три разные сети:

!

  • support.riotgames.com → 2a05:d014:58f:6200::1f5, сеть AS16509 AMAZON-02: сайт поддержки живёт в Amazon (AWS).
  • bacon.secure.dyn.riotcdn.net → AS13335 CLOUDFLARENET: этот домен Riot обслуживает Cloudflare.
  • cdn.playersupport.riotgames.com → 3.164.206.37, обратное имя …cloudfront.net, тоже AS16509: CloudFront, CDN самого Amazon.

Первые два адреса здесь — IPv6 (начинаются с 2a05: и 2a06:). Метод от этого не меняется: у IPv6-адресов так же есть владелец, диапазон и карточка, а списки Zapret/ipset принимают IPv6-диапазоны наравне с IPv4.

Открываем карточку адреса 2a05:d014:58f:6200::1f5:

!

ASN — AS16509 — Amazon.com, Inc., диапазон (Range) — 2a05:d014:400::/38. Location «Frankfurt, DE» и Company «Amazon Data Services Ireland» описывают инфраструктуру AWS, а не «национальность» сайта — та же условность, что со Стокгольмом в первом примере.

Добавляем диапазон в список профиля Amazon. В стоковых пресетах у Amazon есть свой профиль со списком lists/ipset-amazon.txt (в папке Zapret, например C:\Zapret\Dev\lists\ipset-amazon.txt). На скриншоте диапазон из карточки дописан в этот файл новой строкой в текстовом редакторе:

!

Надёжнее вносить его не в сам файл пресета, а через GUI: откройте профиль Amazon → «Редактор» → «IPset» → поле «Ваши записи» и сохраните список (как в add-profile#Шаг 3. Добавьте домены в профиль, только для IP). Базовые списки пресета — общие, и при обновлении пресета правки в них могут потеряться, а «Ваши записи» хранятся отдельно.

Формат — один IP-адрес или диапазон в нотации CIDR на строку, IPv4 и IPv6 вперемешку (подробно — в Zapret/ipset). Изменённые списки движок перечитывает сам, без перезапуска (так описано в официальной документации zapret2); если после правки ничего не изменилось, перезапустите Zapret 2 для верности. Дальше как обычно: перебираем стратегии профиля Amazon и проверяем новым соединением по verify-strategy.

[!note] А домен на Cloudflare? Если не грузится часть сайта на riotcdn.net (Cloudflare), для неё всё то же самое, но в профиле Cloudflare. Один сайт вполне может требовать двух профилей — по одному на каждую сеть: профиль выбирается для каждого соединения отдельно, см. profile-independence.

Собрали адреса? Отправьте их, чтобы они попали в категории по умолчанию

Если вы собрали рабочий набор IP-диапазонов и доменов для игры или сайта, им можно поделиться. Разработчики Zapret2 принимают такие списки через форму на git2.zapret.moe и добавляют их в стандартные категории, чтобы следующим пользователям не пришлось собирать их заново:

👉 Форма отправки hostlist/ipset

Такие запросы приходят постоянно. В Telegram-группе помощи Zapret есть топик «Запрос ресурсов»: за январь–февраль 2026 там просили, среди прочего, autodesk.com, ubisoft.com, support-valorant.riotgames.com, bandlab.com, anitype.app и наборы доменов твич-смайлов (7tv.app, betterttv.net, frankerfacez.com). Каждый такой запрос проверяется методом из этой заметки: домены страницы → IP-адреса → владелец сети → диапазоны в списке нужной категории.

Как оформить, чтобы список приняли (полные правила — в Zapret/Создание своей категории):

  • Всё одним сообщением: IP-адреса и домены в txt-файлах в формате, который принимает Zapret (один адрес, CIDR-диапазон или домен на строку; поддомены тоже указывайте, если они есть).
  • Для игр обязательно приложите UDP-порты и адреса для них, а для TCP — сайт, все домены и отдельно IP-адреса.
  • Форма только для ресурсов, которые блокирует провайдер, а не для сервисов с GEO-ограничениями.

[!danger] Не путайте блокировку провайдера с GEO-ограничением Если сервис сам закрылся от пользователей из России или СНГ (ChatGPT, Notion, часть игровых магазинов), это не блокировка Роскомнадзора, и добавлять его в пресеты Zapret бесполезно: обходить тут нечего, сервис просто отказывает вам по региону. Такие сервисы открывают иначе — через файл hosts или подменный DNS, пошагово в Zapret/hosts. Отличить просто: GEO-ограничение обычно отдаёт понятную страницу отказа от самого сервиса («not available in your region»), а блокировка провайдера — бесконечную загрузку, сброс соединения или таймаут.

Тот же поиск без расширения

Расширение — только удобство. Владельца адреса можно узнать и вручную:

  1. Узнайте IP домена: в терминале nslookup signin.rockstargames.com (Windows, Linux, macOS).
  2. Вставьте адрес в любой сервис информации об IP: ipinfo.io/<адрес>, bgp.he.net и подобные.
  3. Посмотрите поле ASN или Organization — это владелец сети.

Минус ручного способа: домены проверяются по одному, и легко пропустить, что страница загружает ресурсы ещё с пяти доменов в других сетях. Без установки расширений ту же картину целиком даёт встроенная панель браузера: F12 → вкладка «Сеть» показывает все запросы страницы, их статусы и IP-адреса (колонка «Удалённый адрес»), а заодно — какие запросы не проходят. Разбор — в find-site-domains.

Ловушки и оговорки

  • Ломаться может не главный домен. Если сайт открылся, но не работают вход, картинки или видео, смотрите домены, которые страница запрашивает при этом действии: у них может быть другой владелец, как у signin.rockstargames.com в первом примере.
  • Адреса и CDN со временем меняются. Сайты переезжают между сетями, а сами CDN отдают разные адреса в разных сетях и в разное время. Если профиль перестал попадать в трафик, проверьте адреса заново.
  • Одна сеть — не всегда одна блокировка. ТСПУ может обращаться с разными диапазонами одного CDN по-разному, поэтому стратегия, пробившая один сайт на Akamai, не обязана пробить другой. Такому сайту может понадобиться свой профиль, см. profile-independence.

📚 См. также


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