# rudirect

Российские сервисы идут через ваше обычное подключение, остальной трафик — через VPN. Скачайте готовый список или соберите свой из нужных сервисов.

[![Stars](https://img.shields.io/github/stars/kyoresuas/ru-direct?style=flat&color=0f766e)](https://github.com/kyoresuas/ru-direct/stargazers)
[![Списки](https://github.com/kyoresuas/ru-direct/actions/workflows/update.yml/badge.svg)](https://github.com/kyoresuas/ru-direct/actions/workflows/update.yml)
[![CI](https://github.com/kyoresuas/ru-direct/actions/workflows/ci.yml/badge.svg)](https://github.com/kyoresuas/ru-direct/actions/workflows/ci.yml)
[![jsDelivr](https://data.jsdelivr.com/v1/package/gh/kyoresuas/ru-direct/badge?style=rounded)](https://www.jsdelivr.com/package/gh/kyoresuas/ru-direct)
[![License](https://img.shields.io/badge/License-MIT-2ea44f.svg)](LICENSE)

**[Скачать готовый список](https://kyoresuas.github.io/ru-direct/#setup)** · **[Собрать свой список](https://kyoresuas.github.io/ru-direct/#services)**

<p align="center">
  <a href="https://kyoresuas.github.io/ru-direct/#services"><img src="site/assets/preview.png?v=f1cd9c4" width="800" alt="Конструктор rudirect: четыре выбранных сервиса и кнопка скачивания для AmneziaVPN"></a>
</p>

90 сервисов, три готовых уровня и 27 форматов. Конструктор выгружает JSON для AmneziaVPN и текстовые списки IPv4/IPv6. Сохраните набор ссылкой, чтобы позже открыть его со свежими данными или отправить знакомому. Скачанный персональный файл нужно импортировать в клиент вручную.

**Русский** · [English](README_EN.md) · [Проверка совместимости](#проверка-совместимости) · [Как помочь](CONTRIBUTING.md)

## Скачать

**[Страница скачивания](https://kyoresuas.github.io/ru-direct/#setup)**: выберите клиент и уровень. Для персонального набора откройте «Свой список», отметьте сервисы и выберите формат. Проверка адреса сравнивает IPv4 и IPv6 с готовыми IP-списками; она не проверяет ваше VPN-подключение.

Если нужен файл для AmneziaVPN прямо сейчас:

| Уровень | Что внутри | Файл |
| --- | --- | --- |
| **ru-lite** | Банки, Мир и СБП, Госуслуги, ФНС, ведомства, VK, ОК, Mail.ru, MAX, Дзен, Rutube. До 500 подсетей, подходит любому клиенту. **Рекомендуется** | [ru-lite.amnezia.json](https://github.com/kyoresuas/ru-direct/releases/latest/download/ru-lite.amnezia.json) |
| **ru-standard** | Lite плюс Ozon, Wildberries, Яндекс, Авито, 2ГИС, операторы, стриминги, доставка, ритейл, путешествия. До 2000 подсетей | [ru-standard.amnezia.json](https://github.com/kyoresuas/ru-direct/releases/latest/download/ru-standard.amnezia.json) |
| **ru-full** | Standard плюс вся российская зона по данным RIPE. Тысячи подсетей, только для роутеров и десктопов | [ru-full.amnezia.json](https://github.com/kyoresuas/ru-direct/releases/latest/download/ru-full.amnezia.json) |

Все форматы лежат в [последнем релизе](https://github.com/kyoresuas/ru-direct/releases/latest). Имена файлов одинаковые во всех источниках:

```text
https://github.com/kyoresuas/ru-direct/releases/latest/download/<файл>
https://cdn.jsdelivr.net/gh/kyoresuas/ru-direct@release/<файл>
https://raw.githubusercontent.com/kyoresuas/ru-direct/release/<файл>
```

Первая ссылка без кэша, вторая через CDN для подписок в клиентах, третья с задержкой до пяти минут. Контрольные суммы в `SHA256SUMS`, описание всех файлов в `manifest.json`.

### Форматы

| Клиент | Файлы |
| --- | --- |
| AmneziaVPN | `<уровень>.amnezia.json`, `<уровень>.amnezia-domains.json` |
| AmneziaWG, WireGuard | `<уровень>.wireguard.txt`, `<уровень>.wireguard-inverted.txt` |
| sing-box, Hiddify, NekoBox, Karing, Throne, Podkop | `<уровень>.singbox.srs`, `<уровень>.singbox.json` |
| Xray, v2rayN, v2rayNG, Happ, Streisand | `geoip.dat`, `geosite.dat`, `<уровень>.v2rayn.json`, `<уровень>.happ.json` |
| Clash, Mihomo, Clash Verge, FlClash | `<уровень>.mihomo.mrs`, `<уровень>.mihomo.yaml`, `<уровень>.clash.yaml` |
| Shadowrocket, Surge, Loon | `<уровень>.surge.list` |
| Quantumult X | `<уровень>.quantumultx.list` |
| MikroTik | `<уровень>.mikrotik.rsc`, `<уровень>.mikrotik-ipv6.rsc` |
| Keenetic | `<уровень>.keenetic.bat`, `<уровень>.keenetic-cli.txt` |
| OpenWrt | `<уровень>.openwrt.nft`, `<уровень>.dnsmasq.conf` |
| Windows, Linux, macOS | `<уровень>.windows.bat`, `<уровень>.linux.sh`, `<уровень>.macos.sh` |
| Просто списки | `<уровень>.ipv4.txt`, `<уровень>.ipv6.txt`, `<уровень>.domains.txt` |

Уровень это `ru-lite`, `ru-standard` или `ru-full`. В `geoip.dat` и `geosite.dat` все три уровня лежат тегами `geoip:ru-lite`, `geosite:ru-standard` и так далее.

## Проверка совместимости

Проверено 2 ноября 2026 года: 26 вариантов клиента на сайте во всех трёх уровнях, соответствие ссылок собранным файлам, проверка IPv4/IPv6 и персональный экспорт. Проверки выполнены в браузере и на сгенерированных файлах. Версии VPN-клиентов, ОС, нативный импорт и маршрутизация на настоящих устройствах ещё требуют проверки.

| Клиент | Файлы | Сайт и файлы | Импорт в приложение |
| --- | --- | --- | --- |
| AmneziaVPN | `.amnezia.json`, `.amnezia-domains.json` | Проверены | Требует проверки |
| WireGuard, AmneziaWG | `.wireguard-inverted.txt` | Проверены | Требует проверки |
| sing-box, Hiddify, Karing, NekoBox, Throne | `.singbox.srs`, `.singbox.json` | Проверены | Требует проверки |
| Xray, v2rayN, v2rayNG, Streisand | `geoip.dat`, `geosite.dat`, `.v2rayn.json` | Проверены | Требует проверки |
| Happ | `.happ.json` | Проверены | Требует проверки |
| Clash / Mihomo, Clash Verge Rev, FlClash | `.mihomo.mrs`, `.mihomo.yaml`, `.clash.yaml` | Проверены | Требует проверки |
| Shadowrocket, Surge, Loon | `.surge.list` | Проверены | Требует проверки |
| Quantumult X | `.quantumultx.list` | Проверены | Требует проверки |
| MikroTik | `.mikrotik.rsc`, `.mikrotik-ipv6.rsc` | Проверены | Требует проверки |
| Keenetic | `.keenetic.bat`, `.keenetic-cli.txt` | Проверены | Требует проверки |
| OpenWrt | `.openwrt.nft`, `.dnsmasq.conf` | Проверены | Требует проверки |
| Windows, Linux, macOS | `.windows.bat`, `.linux.sh`, `.macos.sh` | Проверены | Требует проверки |
| Текстовые списки | `.ipv4.txt`, `.ipv6.txt`, `.domains.txt` | Проверены | Требует проверки |

Перед расширением в таблице стоит `ru-lite`, `ru-standard` или `ru-full`. Открытые проверки: [AmneziaVPN](https://github.com/kyoresuas/ru-direct/issues/33), [Karing/Hiddify](https://github.com/kyoresuas/ru-direct/issues/34), [Keenetic](https://github.com/kyoresuas/ru-direct/issues/35). Результат импорта можно прислать через [форму проверки клиента](https://github.com/kyoresuas/ru-direct/issues/new?template=client_check.yml): укажите точную версию приложения, ОС и дату.

## Импорт в AmneziaVPN

1. Скачайте файл на устройство.
2. Откройте подключение, затем **Настройки подключения** и **Split Tunneling**.
3. Выберите **Site-based split tunneling** и режим **Адреса из списка не идут через VPN**.
4. Нажмите ⋮, затем **Import** и **Replace site list**, укажите файл.
5. Включите split tunneling и переподключитесь.

Проверка: откройте [yandex.ru/internet](https://yandex.ru/internet), должен показаться адрес вашего провайдера, а не VPN-сервера.

Файл `amnezia-domains.json` содержит ещё и домены с адресами. Десктопный клиент 5.x ре-резолвит их при каждом подключении, поэтому список самовосстанавливается при смене адресов у CDN. На телефоне разницы нет, берите обычный файл.

## Что список закрывает, а что нет

Список решает две задачи: сайт или API видит ваш домашний адрес, а трафик к российским сервисам не уходит в туннель. Это убирает серверную проверку по IP и экономит трафик VPN.

Список не может убрать проверку на самом устройстве. Приложения Ozon, Wildberries, Сбера, 2ГИС и других на Android смотрят на наличие tun-интерфейса и список установленных VPN-клиентов, а результат отправляют на сервер. Отсюда баннер «выключите VPN» даже с идеальным списком. Что помогает:

- VPN на роутере, а не на телефоне: устройство VPN не видит.
- Рабочий профиль Android, где маркетплейсы живут вне VPN.
- App-based split tunneling в AmneziaVPN на Android: исключите приложения из туннеля, список оставьте для браузера.
- На iOS app-based режима нет. Остаются список и отключённый IPv6.

Подробнее про механику: [исследование RKS Global](https://rks.global/ru/research/vpn-detection/).

## Чем отличается от блок-листов

[itdoginfo/allow-domains](https://github.com/itdoginfo/allow-domains) и [runetfreedom/russia-v2ray-rules-dat](https://github.com/runetfreedom/russia-v2ray-rules-dat) в основном ведут списки заблокированных ресурсов: они идут в VPN, остальное напрямую. RU Direct решает обратную задачу: VPN включён для всего трафика, а российские сервисы идут напрямую.

| | RU Direct | Блок-листы |
| --- | --- | --- |
| Что в списке | Российские сервисы и зона страны | Заблокированные в России ресурсы |
| Что идёт через VPN | Всё, чего нет в списке | Только то, что есть в списке |
| Новая блокировка | Ничего делать не нужно, сайт и так в VPN | Нужно дождаться обновления списка |
| Ресурса нет в списке | Российский сервис откроется через VPN, банк может не пустить с иностранного адреса | Заблокированный сайт не откроется |

Нужен точечный обход блокировок без VPN на весь трафик: берите блок-листы. Нужен всегда включённый VPN и российские сервисы без его отключения: берите RU Direct.

## Вопросы

### Какой уровень выбрать?

Lite, если нужны банки, платежи, госуслуги и соцсети. Standard, если пользуетесь маркетплейсами, Яндексом, доставкой и стримингами. Full только для роутеров и десктопов: клиент должен держать тысячи маршрутов.

### AmneziaVPN на Windows долго подключается с большим списком

Известная проблема клиента: маршруты ставятся по одному, на тысячах записей это минуты. Обсуждение в [amnezia-client #2248](https://github.com/amnezia-vpn/amnezia-client/issues/2248), исправление в [PR #2516](https://github.com/amnezia-vpn/amnezia-client/pull/2516) пока не принято. Берите Lite или Standard.

### У меня IPv6, что делать?

AmneziaVPN понимает только IPv4, и IPv6-трафик к российским сайтам уйдёт в туннель. Либо отключите IPv6 на устройстве, либо используйте клиент с IPv6-списками: WireGuard, sing-box, Clash, MikroTik и OpenWrt получают их в тех же файлах.

### Сайт не открывается напрямую. Как добавить?

Введите домен на странице [Проверить адрес](https://kyoresuas.github.io/ru-direct/#check): она покажет, в какие уровни входят его адреса. То же локально из репозитория:

```bash
npm run check -- ozon.ru
npm run check -- 185.73.193.68
```

Если адреса нет в списке, откройте [issue](https://github.com/kyoresuas/ru-direct/issues/new/choose) с доменом и IP или пришлите pull request в `config/services`.

### Почему в списке нет Cloudflare, AWS или Selectel целиком?

Потому что это чужие сети. Guard вычитает Cloudflare, AWS, Fastly, Google и другие anycast-сети из каждого уровня, а хостинги и anti-DDoS запрещены как источники сервисов. Иначе через список мимо VPN пошли бы чужие сайты.

### Как часто обновляются списки?

Каждый день около 06:00 по Москве. Имена файлов не меняются, поэтому ссылку jsDelivr можно подставить в rule-set sing-box или Clash. Что изменилось за сутки, видно в описании [последнего релиза](https://github.com/kyoresuas/ru-direct/releases/latest).

### Можно ли использовать списки в своём проекте?

Да, лицензия MIT. Имена файлов и адреса остаются стабильными.

## Как собирается

- **Полная зона**: подсети, зарегистрированные за Россией по данным [RIPE Stat](https://stat.ripe.net/), с фолбэком на ipdeny.
- **Сервисы**: собственные автономные системы каждого сервиса, подтверждённые через RIPE, плюс домены, снятые из приложений в [RuStore](https://www.rustore.ru/) и с сайтов. Пакеты и версии приложений записаны в конфиге.
- **Точность**: префиксы собственных ASN фильтруются по стране. Адреса доменов вне этих сетей добавляются точными IP или подсетью узла российского CDN.
- **Guard**: Cloudflare, AWS, Fastly, Google и статические anycast-подсети вычитаются из IP-списков всех уровней. Доменные правила и повторный DNS в клиенте могут дать другой результат.
- **Уровни**: Lite не больше 500 подсетей IPv4, Standard не больше 2000, сборка падает при превышении.
- **Форматы**: все файлы собираются из одних данных одним генератором на TypeScript, бинарные `.srs` и `.mrs` компилируются официальными sing-box и mihomo.

Исходные домены и записи `apps` с пакетом, версией и датой разбора APK доступны в [конфигурации сервисов](config/services). Для девяти сервисов, добавленных после разбора APK 1 ноября 2026 года, поле `notes` также содержит SHA-256 разобранного APK. Результаты автоматических проверок — в [CI](https://github.com/kyoresuas/ru-direct/actions/workflows/ci.yml). Опубликованные размеры, SHA-256 и время сборки — в [manifest.json](https://raw.githubusercontent.com/kyoresuas/ru-direct/release/manifest.json), контрольные суммы файлов — в [SHA256SUMS](https://raw.githubusercontent.com/kyoresuas/ru-direct/release/SHA256SUMS).

Бейдж jsDelivr показывает запросы к CDN, включая автоматические обновления. Это не число уникальных пользователей.

Состав каждого уровня в `services.json` рядом со списками. Полное описание архитектуры для разработчиков и агентов в [AGENTS.md](AGENTS.md).

## Добавить сервис

1. Найдите категорию в `config/services`, например `marketplaces.json`.
2. Добавьте сервис: имя, уровень `lite` или `standard`, домены, при наличии собственные ASN с подстрокой holder из RIPE и подсети с обоснованием.
3. Запустите `npm run verify`: проверит схему и holder каждого ASN.
4. Запустите `npm run update` и убедитесь, что уровни не превысили лимит.
5. Откройте pull request. Домены лучше снимать из реального трафика приложения, а не переписывать из чужих списков.

## Разработка

```bash
npm ci
npm run tools      # sing-box и mihomo для бинарных форматов
npm run update     # полная сборка в dist/
npm run generate   # сборка из кэша без сети
npm run verify     # проверка конфигурации и ASN
npm run check -- <ip|домен>
npm run lint
npm test
```

Node.js 22 и новее. CI прогоняет lint, тесты и проверку конфигурации на Node.js 22 и 24. Сборка запускается каждый день, публикует rolling-релиз `latest`, ветку `release` и сайт.

## Поддержать проект

Самое простое: поставьте звезду на GitHub и расскажите знакомым, которые настраивают VPN. Если проект оказался полезен, вы можете поддержать его развитие:

- **TON:** `kyoresuas.ton`
- **Адрес кошелька TON:** `UQATzyMcVoZudjaA5Rc9w5TV_lIqxh9DPk0gSnjkLVvwEVqz`
- **USDT в сети TRON (TRC-20):** `TJSLjDo4yRgHr9JqqEcrkbC51bP9DCiBC7`

Перед переводом криптовалюты убедитесь, что выбрана правильная сеть.

## Связаться

- [GitHub Issues](https://github.com/kyoresuas/ru-direct/issues)
- Telegram: [@stercuss](https://t.me/stercuss)
- Email: [hey@kyoresuas.com](mailto:hey@kyoresuas.com)

## Дисклеймер

Независимый проект. Не связан с Amnezia и другими упомянутыми клиентами, не спонсируется и не рекламирует VPN-сервисы.

## Лицензия

[MIT](LICENSE)
