todo/Zapret2/steam.md
loop-uh 4e01257265
Some checks failed
Published content check / validate (push) Failing after 10s
Steam и Zapret 2: домены, порты и профиль по разбору трафика
Новая заметка Zapret2/steam.md по записи трафика клиента Steam (вход, магазин, сообщество): серверы входа steamserver.net на TCP 27020/27021/27024 и 443 в сети Valve, статика на Akamai и Fastly, разные ClientHello клиента и встроенного браузера, сверка с официальным списком портов Valve и готовый профиль Zapret 2. Диаграмма объёма трафика по сетям, ссылки из Zapret2.md, add-profile и find-game-strategy.
2026-09-27 21:39:16 +03:00

28 KiB
Raw Permalink Blame History

date tags aliases description
2026-09-27
zapret
zapret2
steam
games
hostlist
profile
howto
Steam Zapret
Стим не работает с Zapret
Какие домены у Steam
Домены Steam для hostlist
Порты Steam 27015-27050
Профиль для Steam в Zapret 2
Стим не заходит в сеть
steamserver.net что это
Какие домены, порты и CDN использует Steam при входе и в магазине, по разбору дампа трафика, и как собрать под Steam профиль Zapret 2.

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

🎮 Steam и Zapret 2: какие домены и порты нужны и как настроить профиль

[!info] О чём заметка Что делает клиент Steam (Стим) в сети при запуске и при просмотре магазина: к каким серверам и на какие порты он подключается, в каких сетях они живут и чем это важно для profile Zapret2. Разбор основан на записи трафика, а в конце собран готовый список доменов и портов для своего профиля. Как создать профиль в интерфейсе, по шагам расписано в add-profile, подбор стратегии для самих игр — в find-game-strategy.

[!tip] TL;DR

  1. Клиент Steam входит в сеть через собственные серверы Valve *.steamserver.net, и не только по порту 443, но и по TCP 27020, 27021 и 27024. Профиль с портами 80,443 эти соединения не увидит.
  2. Магазин, сообщество, картинки и видео приходят с чужих сетей доставки: Akamai (steampowered.com, steamcommunity.com, steamusercontent.com) и Fastly (*.fastly.steamstatic.com). Через них прошёл почти весь трафик Steam в записи.
  3. Для профиля берите hostlist, а не список IP: адреса CDN меняются, а часть контента в записи пришла по IPv6.
  4. Минимальный профиль: TCP-порты 80,443-65535 и hostlist из steampowered.com, steamcommunity.com, steamstatic.com, steamusercontent.com, steamcontent.com, steamserver.net.
  5. Трафик самих игр (UDP 27000–27250 и P2P) этим профилем не покрывается, для него нужен отдельный профиль по find-game-strategy.

Откуда данные и чего в них нет

Разбор сделан по записи трафика компьютера с Windows 27 сентября 2026 года. Запись длится 47 секунд: за это время клиент Steam подключился к сети, открылся магазин, страница игры с трейлером и раздел сообщества. Запись разобрана по заголовкам пакетов и по открытой части TLS-рукопожатия, где клиент называет имя сервера (об этом ниже). Содержимое соединений зашифровано и не расшифровывалось.

[!warning] Это карта подключений, а не проверка обхода Во время записи Zapret не вмешивался в соединения Steam (в записи нет поддельных пакетов, которые он отправляет), и провайдер ничего не заблокировал: все соединения к Steam установились, трейлеры и картинки скачались целиком. Поэтому запись показывает, куда Steam ходит, но не говорит, какие из этих соединений режет Zapret/about#Обход DPI (система ТСПУ) (технические средства противодействия угрозам — оборудование DPI у провайдера) и какая стратегия их пробивает. В записи также нет скачивания игры, запуска игры с сетевой игрой, голосового чата, мастерской и оплаты: для этих частей Steam сверяйтесь с официальным списком Valve, разобранным ниже.

Многие соединения к Fastly в записи закончились пакетом RST (сброс соединения). Для встроенного браузера на Chromium это обычный способ закрыть лишние соединения, и признаком блокировки он здесь не был: до сброса в каждом таком соединении завершилось TLS-рукопожатие и сервер успел ответить. Если вы разбираете свою запись, RST в конце соединения сам по себе не признак блокировки; подозрительно, когда сброс приходит сразу после первого пакета клиента и ответа от сервера нет.

Как Steam входит в сеть: серверы подключения Valve

Первое, что делает клиент после запуска, — проверяет, есть ли интернет. Он отправляет обычный HTTP-запрос без шифрования GET /204 на steamconnecttest.com и ждёт пустой ответ с кодом 204. В записи этот домен разрешился в адрес внутри сети Ростелекома: так выглядит кэширующий узел Akamai, установленный у провайдера. Сразу за ним клиент проверяет IPv6 через ipv6check-http.steamserver.net и ipv6check-udp.steamserver.net.

Дальше начинается главное. Чтобы войти в аккаунт, получать сообщения, список друзей и уведомления, клиент держит постоянное соединение с одним из серверов подключения Valve. В сети Steam их называют CM-серверами (от connection manager, «менеджер соединений»). В записи клиент почти одновременно открыл восемь соединений к таким серверам во Франкфурте (fra1, fra2) и Стокгольме (sto1, sto2):

Сервер Порт TCP
cmp1-fra1.steamserver.net 27020
cmp1-fra2.steamserver.net 27024
cmp2-fra2.steamserver.net 27020, 27024, 443
cmp1-sto1.steamserver.net 27021
cmp1-sto2.steamserver.net 27020
cmp2-sto2.steamserver.net 443

Все восемь соединений оставались открытыми до конца записи, но основная переписка шла по одному, к cmp2-sto2 на порт 443: по нему прошло около 50 КБ, по каждому из остальных — около 7 КБ, то есть рукопожатие и редкий служебный обмен. Похоже, клиент держит запасные соединения к нескольким серверам, а работает через одно. Это вывод по одной записи: как клиент выбирает сервер, Valve не документирует.

Все эти серверы живут в собственной сети Valve, автономной системе AS32590 (адреса 155.133.x.x и 162.254.198.x). Соединения к ним зашифрованы TLS, и в первом пакете клиент открыто называет имя сервера. Это поле называется SNI (Server Name Indication): по нему ТСПУ узнаёт, к какому сайту идёт соединение, и по нему же hostlist Zapret решает, применять ли к соединению профиль.

Проще говоря: вход в Steam — это обычное TLS-соединение с понятным именем *.steamserver.net, только часто на нестандартном порту. Если профиль слушает лишь порты 80 и 443, соединения на 27020, 27021 и 27024 пройдут мимо него, даже когда домен есть в списке. Valve в справке указывает для входа и загрузок диапазон TCP и UDP 27015–27050, и все порты из записи в него попадают.

Магазин и сообщество: встроенный браузер и чужие CDN

Магазин, страницы игр, профиль и сообщество внутри клиента показывает не сам клиент, а встроенный браузер steamwebhelper.exe, собранный на Chromium. Поэтому эта часть Steam ведёт себя в сети как обычный сайт: десятки параллельных соединений к нескольким доменам, картинки и видео со своих серверов доставки.

Эти серверы принадлежат не Valve. Крупные сервисы арендуют место в сетях доставки контента (CDN, Content Delivery Network), которые держат копии файлов по всему миру; подробнее о них и о том, как узнать владельца адреса, — в find-domain-owner. В записи Steam использовал две такие сети:

Домен Что грузит Сеть
store.steampowered.com страницы магазина Akamai
api.steampowered.com программный интерфейс клиента Akamai
steamcommunity.com сообщество, профили Akamai
images.steamusercontent.com скриншоты и картинки пользователей Akamai (IPv6)
video.akamai.steamstatic.com трейлеры Akamai (IPv6)
store.fastly.steamstatic.com, community.fastly.steamstatic.com оформление магазина и сообщества Fastly
shared.fastly.steamstatic.com, shared.steamstatic.com, cdn.fastly.steamstatic.com общие скрипты, стили, обложки игр Fastly
avatars.fastly.steamstatic.com аватары Fastly
video.fastly.steamstatic.com трейлеры Fastly

По объёму соотношение получилось резким: через Fastly прошло около 37 МБ, через Akamai около 20 МБ, а через серверы Valve — около 0,1 МБ.

!

Проще говоря: собственные серверы Valve отвечают за вход и связь с аккаунтом, а всё тяжёлое, что вы видите в магазине, приходит с Akamai и Fastly. Если в Steam удаётся войти, но магазин пустой, без картинок или трейлеров, проблема почти наверняка в доменах CDN, а не в steamserver.net.

Почему в hostlist лучше писать родительский домен

Встроенный браузер экономит соединения. Если несколько доменов обслуживает один и тот же сервер с одним сертификатом, Chromium может отправлять запросы к ним всем по одному уже открытому соединению HTTP/2. В записи одно соединение к Fastly, открытое под именем shared.fastly.steamstatic.com, передало 23,8 МБ, больше половины всего трафика Fastly. Скорее всего, по нему шли и файлы с других поддоменов steamstatic.com: SNI называет только тот домен, ради которого соединение открыли первым, и остальные имена в открытом виде уже не появляются.

Для Zapret это значит, что решение о профиле принимается один раз, по первому имени. Список из точных поддоменов вроде store.fastly.steamstatic.com легко пропустит соседний поддомен, который браузер откроет первым в следующий раз. Поэтому для Steam родительский домен (steamstatic.com) надёжнее точных поддоменов. Общий совет add-profile начинать с точных поддоменов защищает от того, чтобы профиль задел посторонние сайты; здесь такой опасности нет, потому что все поддомены steamstatic.com, steampowered.com и остальных доменов из списка ниже принадлежат самому Steam.

Два разных TLS-почерка

Сам клиент Steam и его встроенный браузер открывают TLS-соединения по-разному, и в записи это видно по первому пакету.

Клиент (соединения к *.steamserver.net, первые запросы к api.steampowered.com, steamcommunity.com и shared.steamstatic.com) отправляет короткое приветствие TLS, сообщение ClientHello, на 517 байт. Оно целиком помещается в один TCP-пакет, и имя сервера во всех 13 таких соединениях стоит на одном и том же месте, со 155-го байта.

Встроенный браузер отправляет ClientHello на 1,7–2,1 КБ. Размер набирает постквантовый ключ X25519MLKEM768, который современный Chromium добавляет в каждое соединение: одна эта часть занимает 1216 байт. Такое сообщение не помещается в один пакет и уходит двумя. Вдобавок Chromium перемешивает порядок полей в ClientHello при каждом подключении, поэтому имя сервера оказывается то в первом пакете, то во втором. В записи оно попало во второй пакет или на стык пакетов в 22 соединениях из 47.

Проще говоря: к серверам входа Steam уходит маленький предсказуемый пакет, а к магазину — большой, разрезанный надвое, с именем сайта в случайном месте. Стратегия, которая пробивает один вид соединений, не обязана пробивать другой, поэтому при подборе проверяйте отдельно вход в сеть и загрузку магазина. Как стратегии режут и подменяют пакеты — в desync.

Сверка с официальным списком Valve

У Valve есть справочная статья «Required Ports for Steam» (версия от февраля 2026 года): https://help.steampowered.com/en/faqs/view/2EA8-4D75-DA21-31EB. Она перечисляет домены, которые прокси должен пропускать для веб-запросов Steam, и порты для разных частей платформы.

Домены из официального списка: steampowered.com, steamcommunity.com, steamgames.com, steamusercontent.com, steamcontent.com, steamstatic.com и akamaihd.net. С записью есть два расхождения. Во-первых, в официальном списке нет steamserver.net, хотя именно на нём в записи были серверы входа и проверки IPv6, и нет steamconnecttest.com. Во-вторых, steamcontent.com (серверы, с которых скачиваются игры и обновления) и akamaihd.net в записи не встретились, потому что за 47 секунд ничего не скачивалось. Домен akamaihd.net — общий домен Akamai, на нём живут тысячи чужих сайтов, поэтому вписывать его в профиль Steam целиком не стоит.

Порты по данным Valve:

Назначение Протокол и порты
Вход в сеть и загрузка контента TCP 80 и 443, TCP и UDP 27015–27050
Трафик игр UDP 27000–27250
Сетевая игра и голосовой чат Steam (P2P) UDP 3478, 4379, 4380, 27014–27030
Remote Play (трансляция игр внутри дома) UDP 27031–27036 и TCP 27036, локальные порты на своём компьютере

Там же Valve пишет, что весь не-веб трафик, в основном UDP, идёт на адреса собственной сети AS32590. Это пригодится для игрового профиля: трафик игр часто идёт без имени сервера, и отбирать его приходится по адресам (ipset), а не по доменам.

В записи порт 27036 тоже появился, но как широковещательная рассылка UDP внутри домашней сети: так клиент ищет другие компьютеры со Steam для Remote Play. Этот трафик не уходит к провайдеру, и обходить его не нужно.

Как настроить профиль под Steam

Сначала проверьте готовые профили пресета

Большая часть Steam живёт на Akamai и Fastly. Если в вашем preset уже есть профиль под одну из этих сетей (например, «Akamai TCP») и он включён, магазин может заработать без отдельного профиля: достаточно подобрать стратегию в готовом профиле. Как найти такой профиль — в find-domain-owner. Собственный профиль Steam всё равно понадобится, если не заходит в сеть сам клиент: серверы steamserver.net живут в сети Valve, и профили под CDN их не касаются.

Свой профиль: порты и домены

Порядок действий в интерфейсе — как в add-profile; ниже только то, что отличается для Steam.

  • TCP-порты: 80,443-65535. Запись захватывает и 443, и порты серверов входа 27015–27050. Для профиля, который отбирает трафик по hostlist, широкий диапазон безопасен: соединения к чужим доменам ему не достанутся. Подробнее о фильтрах — filter.
  • Hostlist («Ваши записи»):
steampowered.com
steamcommunity.com
steamstatic.com
steamusercontent.com
steamcontent.com
steamserver.net
steamgames.com

Каждая строка включает в профиль все поддомены: steamserver.net накрывает серверы входа cmp*-*.steamserver.net, steamstatic.com — все *.fastly.steamstatic.com и *.akamai.steamstatic.com. steamconnecttest.com в список вносить не обязательно: проверка интернета идёт по HTTP без шифрования и заблокирована, судя по записи, не была. Если клиент при запуске упорно пишет, что нет подключения к интернету, допишите и его. Формат списков — в Zapret/hostlist.

  • UDP: для входа и магазина, судя по записи, не нужен. Клиент не отправлял UDP на серверы Valve, и ни одно соединение QUIC (HTTP/3 поверх UDP-порта 443) в записи нельзя отнести к Steam. Если в вашей записи QUIC к доменам Steam появится, добавьте в профиль UDP-порт 443: отключить QUIC во встроенном браузере Steam, как в обычном Chrome, нельзя.
  • Порядок профилей: профиль Steam ставьте выше широких профилей по сетям Akamai и Fastly, иначе соединения магазина заберёт первый подходящий широкий профиль. Почему так — в profile-independence.

Если одна стратегия не пробивает всё

Профиль с одним списком получает одну стратегию на все соединения Steam. Но соединения здесь разные: маленький ClientHello клиента к серверам Valve и большой ClientHello браузера к Akamai и Fastly, в разных сетях, которые ТСПУ может обрабатывать по-разному. Если после подбора стратегии клиент входит в сеть, а магазин не грузится, или наоборот, разделите профиль на два:

  • профиль «Steam вход» с одной строкой steamserver.net;
  • профиль «Steam магазин» с остальными доменами списка.

Каждому подбирайте стратегию отдельно. Если внутри магазина не грузится только одна сеть (например, картинки с Fastly есть, а трейлеры с Akamai нет), таким же образом выносится в свой профиль fastly.steamstatic.com или akamai.steamstatic.com; такой профиль ставится выше общего, потому что соединение достаётся первому подходящему профилю.

Игры — отдельным профилем

Профиль выше покрывает клиент, магазин и сообщество. Сетевые игры ходят по UDP на адреса Valve или на серверы самих издателей, часто без доменного имени, и hostlist их не видит. Для игры нужен свой профиль с ipset и UDP-портами из таблицы Valve выше; сбор адресов через TCPView и перебор стратегий расписаны в find-game-strategy.

Как проверить результат

Проверка обхода для Steam строже, чем для сайта: клиент держит соединения открытыми, и перезапуск окна ничего не проверяет.

  1. Полностью закройте Steam: «Steam» → «Выход» или правый клик по значку в трее → «Выход». Убедитесь в диспетчере задач, что не осталось процессов steam.exe и steamwebhelper.exe.
  2. Запустите Steam заново. Если клиент вошёл в сеть и показывает друзей в сети, соединения к steamserver.net проходят.
  3. Откройте магазин и страницу любой игры: должны загрузиться обложки, скриншоты и трейлер. Пустые прямоугольники вместо картинок указывают на домены CDN.
  4. Если что-то не грузится, проверьте по log-analyzer, какой профиль обработал соединения Steam, а общие ловушки проверки — в verify-strategy.

Если стратегия не подошла, переходите к следующей в «Готовых стратегиях» и снова проверяйте с полного перезапуска. Автоматически подобрать стратегию для доменов Steam можно в Zapret/Blockcheck.

📚 См. также


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