Готовый конфиг Shadowrocket для России: по умолчанию трафик идёт через VPN, а российские, локальные и явно разрешённые сервисы идут напрямую.
Проект адаптирует DEFAULT-профиль roscomvpn-routing под формат Shadowrocket. Домены и IP берутся из roscomvpn-geosite, roscomvpn-geoip, v2fly/domain-list-community и дополнительного RU-whitelist от hxehex.
| Действие | Что идёт |
|---|---|
| REJECT | Windows телеметрия |
| PROXY | Google Play, YouTube, Telegram, GitHub, ChatGPT/OpenAI, Instagram/Facebook, TikTok, Microsoft Store и весь остальной трафик, который не попал в DIRECT/REJECT |
| DIRECT | локальные адреса, Tailscale, РФ/BY домены и IP, белые списки российских сервисов, Steam, Epic, Riot, EFT, Twitch, основная часть Microsoft, Apple, Pinterest, Faceit, torrent-домены и ручные DIRECT-исключения |
Если домен не попал в доменные списки, Shadowrocket сначала проверит GEOIP,RU и GEOIP,BY. Российские и белорусские IP пойдут напрямую, всё остальное уйдёт через VPN по FINAL,PROXY.
Конфиг явно пропускает Tailscale напрямую, чтобы Shadowrocket не перехватывал tailnet при одновременной работе с Tailscale на macOS.
Профиль сейчас IPv4-first: в [General] выставлено ipv6 = false. В начале [Rule] есть DIRECT-правила для Tailscale IPv4-сети 100.64.0.0/10, Quad100 100.100.100.100/32 и доменов ts.net/tailscale.com.
Tailscale peer-сеть 100.64.0.0/10 не добавляется в skip-proxy или tun-excluded-routes: на macOS Shadowrocket может превратить такие bypass-записи в маршруты через обычный LAN gateway и перекрыть маршрут Tailscale. Полноценная поддержка Tailscale IPv6 отложена до отдельного тестирования с включённым IPv6.
Личные IP серверов не добавляются в общий конфиг: доступ к VPS внутри tailnet должен идти через Tailscale-адреса 100.x.y.z или MagicDNS.
В конфиге есть несколько небольших дополнительных слоёв.
force-proxy.list - важные зарубежные сервисы, которые должны идти через VPN явно: ChatGPT/OpenAI, Instagram/Facebook и TikTok. Telegram, YouTube, Google Play и GitHub тоже идут через VPN отдельными списками.
microsoft-store.list - Microsoft Store через VPN: сайт apps.microsoft.com, каталог, лицензирование и домены скачивания пакетов.
manual-direct.list - сайты, которые должны идти напрямую: avto.ru, autowp.ru, appstorrent.ru, lava.ru, zr.ru, Happ/GitBook-домены и aliexpress.ru.
avto.ru добавлен отдельно из-за Журнала Auto.ru: сам сайт открывается на auto.ru, но стили и скрипты страницы auto.ru/mag/ грузятся с похожего, но другого домена st.avto.ru. Без этого страница может открываться как голый текст с огромными картинками.
lava.ru и zr.ru добавлены вручную, потому что их нет в текущих upstream DIRECT-списках. Без ручного доменного правила они зависят от GEOIP,RU,DIRECT, а такой запасной маршрут может ошибаться из-за CDN, устаревшей GeoLite2-базы или особенностей DNS.
Домены Happ happ.su, happ.info и GitBook-ресурсы добавлены в ручные DIRECT-исключения, потому что сайт Happ может плохо открываться при текущем роутинге.
aliexpress.ru добавлен в ручные DIRECT-исключения, потому что российская версия AliExpress может сбоить при маршрутизации через VPN. Глобальная aliexpress.com-версия этим правилом не затрагивается.
Google Play идёт через VPN не потому, что весь магазин полностью заблокирован. Бесплатные приложения обычно доступны, но платные приложения, платежи и часть обновлений для российских аккаунтов ограничены. Через VPN поведение Google Play обычно предсказуемее.
Microsoft Store вынесен в отдельный VPN-список, потому что одного apps.microsoft.com мало. Сам сайт может открываться, но каталог, кнопки установки и скачивание пакетов используют отдельные адреса Microsoft, например displaycatalog.mp.microsoft.com, storeedgefd.dsx.mp.microsoft.com и dl.delivery.mp.microsoft.com.
Torrent-домены из базового roscomvpn-списка идут напрямую через torrent-domains.list.
Важно: это не гарантирует, что весь BitTorrent-обмен с пирами всегда пойдёт мимо VPN. BitTorrent подключается к случайным IP других пользователей, и обычный доменный список не всегда может отличить такой трафик от любого другого соединения. Если твой VPN-провайдер запрещает торренты, самый надёжный вариант - выключать VPN/Shadowrocket на время torrent-клиента или настраивать torrent-клиент/устройство отдельно.
Рекламные правила отключены специально: задача этого конфига - маршрутизация, а не блокировка рекламы. Так меньше риск сломать загрузку картинок, скриптов и вёрстку обычных сайтов.
Добавь готовый конфиг в Shadowrocket:
https://raw.githubusercontent.com/forg-lib-lov/roscomvpn-shadowrocket/main/roscomvpn.conf
В Shadowrocket: Configurations → + → вставь URL → нажми на конфиг → Use Config.
Для GEOIP,RU,DIRECT и GEOIP,BY,DIRECT нужна актуальная GeoLite2 Country база.
В Shadowrocket: Settings → GeoLite2 Database → поле Country → вставь URL → Download:
https://github.com/P3TERX/GeoLite.mmdb/raw/download/GeoLite2-Country.mmdb
Конфиг в репозитории обновляется каждый день в 09:00 MSK через GitHub Actions.
После публикации изменений GitHub Actions пересобирает roscomvpn.conf и все подключённые lists/*.list. Файлы раздаются напрямую через GitHub Raw, без jsDelivr и отдельной очистки CDN-кеша.
Вручную: Configurations → свайп влево по конфигу → Update Config.
Автоматически: Settings → Auto Update → включи обновление конфигов и выставь интервал. Для фонового обновления в iOS должен быть включён Background App Refresh для Shadowrocket.
.list-файлы подключены через GitHub Raw URL и обновляются Shadowrocket при применении или компиляции конфига.
- Сделай fork репозитория. Репозиторий должен быть публичным, если ты хочешь использовать GitHub Raw URL без авторизации.
- В своём репозитории открой
Actions→Update Shadowrocket Config→Run workflow. - Добавь свой конфиг в Shadowrocket:
https://raw.githubusercontent.com/YOUR_GITHUB_USERNAME/roscomvpn-shadowrocket/main/roscomvpn.conf
Если у форка другая ветка, замени /main/ в ссылке на имя своей ветки.
Правила редактируются в scripts/generate.py; это единственный источник правды для списков.
DOMAIN_RULESиIP_RULESзадают порядок и действие generated RULE-SET файлов.FORCE_PROXY_CATEGORIESзадаёт v2fly-категории, которые принудительно идут через VPN.MANUAL_DIRECT_DOMAINSзадаёт небольшие ручные DIRECT-исключения, включая Happ/GitBook иaliexpress.ru.MICROSOFT_STORE_PROXY_DOMAINSзадаёт ручной VPN-список для Microsoft Store.
После изменения правил запусти генератор: python3 scripts/generate.py.
Генератор падает с ошибкой, если источник недоступен или после конвертации категория стала пустой. Это сделано специально, чтобы GitHub Actions не публиковал частично сломанный конфиг.
roscomvpn-geosite ──┐
roscomvpn-geoip ──┤
hxehex/russia-mobile-internet-whitelist ──┤
v2fly/domain-list-community ──┘
► scripts/generate.py ──► lists/*.list + roscomvpn.conf
Shadowrocket ──► update-url ──► свежий roscomvpn.conf
└─► RULE-SET URLs ──► списки правил
По умолчанию опубликованные ссылки строятся через GitHub Raw:
https://raw.githubusercontent.com/{owner}/{repo}/{branch}/...
Для нестандартной публикации можно задать переменные окружения:
| Переменная | Назначение |
|---|---|
GITHUB_REPO |
owner/repo текущего репозитория |
GITHUB_BRANCH |
ветка для публичных URL |
PUBLISH_BASE |
полный базовый URL, если не нужен стандартный GitHub Raw |
roscomvpn-shadowrocket/
├── .github/workflows/update.yml # ежедневное обновление
├── scripts/generate.py # генератор Shadowrocket-правил
├── lists/ # опубликованные RULE-SET списки
└── roscomvpn.conf # готовый конфиг
- Логика профиля: hydraponique/roscomvpn-routing
- Домены: hydraponique/roscomvpn-geosite
- IP-адреса: hydraponique/roscomvpn-geoip
- Дополнительный DIRECT-слой: hxehex/russia-mobile-internet-whitelist
- Важные зарубежные сервисы: v2fly/domain-list-community
- Ручные исключения:
scripts/generate.py