# Podkop Plus
[](https://github.com/ushan0v/podkop-plus/stargazers)
[](https://github.com/ushan0v/podkop-plus/releases)
[](https://t.me/podkop_plus_chat)
[](https://github.com/itdoginfo/podkop)
[](https://github.com/remittor/zapret-openwrt/releases)
[](https://github.com/DPITrickster/ByeDPI-OpenWrt/releases)
[](https://github.com/shtorm-7/sing-box-extended/releases)
|
|
> **НЕ ПИШИТЕ** с проблемами Podkop Plus в официальный [Telegram-чат](https://t.me/itdogchat). Это независимый форк. Разработчики и участники оригинального чата не имеют отношения к этому проекту.
> * Нашли баг или есть проблема? Создайте [Issue](https://github.com/ushan0v/podkop-plus/issues) в этом репозитории.
> * Не хотите или не умеете создавать Issue? Напишите в специальный топик чата [Podkop Plus](https://t.me/podkop_plus_chat).
### Установка
```sh
sh <(wget -O - https://raw.githubusercontent.com/ushan0v/podkop-plus/main/install.sh)
```
### Что нового в этом форке
- Добавлена поддержка подписок.
- Интеграция Zapret, Zapret2 и ByeDPI как отдельных действий секции.
- Поддержка sing-box extended и транспорта XHTTP.
- Обновленный LuCI-интерфейс и расширенное управление секциями.
- Новые условия маршрутизации.
- Режим сервера с возможностю поднять собственный VPN/Proxy для подключения внешних устройств.
- Менеджер обновлений и установки компонентов.
- Встроенный мониторинг соединений.
### Подписки
- Реализована поддержка основных форматов: sing-box json, uri/base64 списки, clash/mihomo
- Добавлено чтение метаданных подписки.
- Подписки поддерживают HWID авторизацию.
- Возможность исключать серверы из URLTest по стране, названию и регулярному выражению.
- Для указания кастомного заголовка `User-Agent` при скачивании подписки добавьте его в формате `URL | User-Agent`).
- Для расшифровки подписок в формате `happ://crypt` используйте сервис [leeeet.dev/happ-decryptor](https://leeeet.dev/happ-decryptor).
### Секции
Podkop Plus расширяет набор условий, которые можно использовать в правилах:
- Домены (`domain_suffix`)
- IP-адреса (`ip_cidr`)
- Точный полный домен (`domain`)
- Ключевое слово домена (`domain_keyword`)
- Регулярное выражение домена (`domain_regex`)
- Исходные IP-адреса (`source_cidr`)
- Порт (`port` / `port_range`)
- Полностью маршрутизированные IP-адреса
- Встроенные наборы правил
- Наборы правил (домены)
- Наборы правил (домены и подсети)
- Списки доменов и IPs
Для `Исходные IP-адреса` и `Полностью маршрутизированные IP-адреса` можно не только вручную вводить IP-адреса, но и выбирать устройство в локальной сети из удобного списка с именами.
**Особенности работы некоторых условий:**
- **Исходные IP-адреса:** работает как логическое **И** с остальными правилами. В секцию уйдет только тот трафик устройства, который совпал с другими заданными условиями (например, с указанными доменами или подсетями). Остальной трафик пойдет напрямую.
- **Полностью маршрутизированные IP-адреса:** работает независимо от других условий. Абсолютно весь трафик указанного устройства будет принудительно направлен через действие этой секции.
- **Порт:** работает как логическое **И** с остальными правилами. Если заданы другие условия (например, домены или IP-адреса), через секцию пойдет только их трафик, обращающийся к этому порту. Если указан *только* порт (без других условий), абсолютно весь трафик на этот порт будет направлен через секцию, независимо от адреса назначения.
### Наборы правил
`Наборы правил (домены)` принимают sing-box списки в форматах `.srs` и `.json`. Можно указывать как локальные пути, так и удаленные ссылки. Такие списки добавляются только в конфигурацию sing-box.
`Наборы правил (домены и подсети)` принимают те же форматы, но дополнительно извлекают подсети и добавляют их в nftables. Это полезно для списков, где важны не только домены, но и IP-диапазоны. Извлечение подсетей требует дополнительной нагрузки на роутер, поэтому секции разделены.
### Списки доменов и IPs
Секция `Списки доменов и IPs` объединяет списки доменов и подсетей. Принимает локальные и удаленные `.lst` списки. Добавлена поддержка смешанных списков.
### Серверы
Podkop Plus позволяет поднять собственный VPN/Proxy сервер прямо на роутере для подключения внешних устройств.
**Поддерживаемые протоколы:** VLESS, VMess, Trojan, Shadowsocks, SOCKS, Hysteria2 и Tailscale.
Вы можете выбрать, как роутер будет обрабатывать трафик подключенного к нему клиента:
- `Правила Podkop Plus` — трафик подчиняется правилам маршрутизации, то есть обрабатывается так же, как трафик устройств в локальной сети.
- `Напрямую` — весь трафик клиента идет напрямую в интернет, минуя обходы.
- `Выбранная секция` — весь трафик клиента принудительно заворачивается в выбранную секцию.
> Для подключения к серверу из внешней сети необходим выделенный (белый) IP-адрес от провайдера и открытый порт в Firewall роутера. Если у вас нет выделенного IP-адреса, используйте протокол **Tailscale** - он позволяет подключаться к вашему серверу из любой точки мира даже за NAT.
### Интеграция Zapret
Zapret доступен как действие отдельной секции. Используется [bol-van/zapret](https://github.com/bol-van/zapret) в OpenWrt-пакете `zapret` из релизов [remittor/zapret-openwrt](https://github.com/remittor/zapret-openwrt/releases).
> Вы можете найти адаптированные и проверенные стратегии zapret для Podkop Plus в специальном репозитории: [ushan0v/podkop-plus-zapret-strategies](https://github.com/ushan0v/podkop-plus-zapret-strategies).
Реализация: `sing-box` отбирает трафик секции и отправляет его в `direct` outbound с отдельным `routing_mark` -> `zapret` принимает помеченные пакеты из очереди (`4000-4255`) и применяет выбранную стратегию DPI-обхода.
Для стратегии `zapret` намеренно запрещены:
- шаблоны и hostlist placeholders: **``**, **``**;
- hostname/IP selectors внутри самой стратегии: **`--hostlist*`**, **`--hostlist-auto*`**, **`--ipset*`**;
- ручное управление очередью и fwmark: **`--qnum`**, **`--dpi-desync-fwmark`**;
- режимы, которые ломают lifecycle процесса: **`--daemon`**;
- режимы, которые не должны быть итоговой стратегией запуска: **`--dry-run`**, **`--version`**;
- внешние файлы аргументов вида **`@file`** или **`$file`**, которые обходят встроенную валидацию и управление очередями.
### Интеграция Zapret2
Zapret2 доступен как отдельное действие секции `zapret2`. Используется [bol-van/zapret2](https://github.com/bol-van/zapret2) в OpenWrt-пакете `zapret2` из релизов [remittor/zapret-openwrt](https://github.com/remittor/zapret-openwrt/releases).
Реализация: `sing-box` отбирает трафик секции и отправляет его в `direct` outbound с отдельным `routing_mark` -> `zapret2` принимает помеченные пакеты из очереди (`4300-4555`) и применяет выбранную стратегию DPI-обхода.
`NFQWS2 Strategy` принимает параметры `nfqws2` без `--qnum` и без базовых Lua-инициализаций: Podkop Plus добавляет очередь, `--fwmark` и стандартные `zapret2` Lua-модули самостоятельно. Свои `--blob` и `--lua-init` допустимы для расширенных стратегий.
Для стратегии `zapret2` намеренно запрещены:
- шаблоны и hostlist placeholders: **``**, **``**;
- hostname/IP selectors внутри самой стратегии: **`--hostlist*`**, **`--hostlist-auto*`**, **`--ipset*`**;
- ручное управление очередью и fwmark: **`--qnum`**, **`--fwmark`**, **`--dpi-desync-fwmark`**;
- режимы, несовместимые с управляемой NFQUEUE-архитектурой: **`--fuzz`**, **`--intercept=0`**;
- режимы, которые ломают lifecycle процесса: **`--daemon`**;
- режимы, которые не должны быть итоговой стратегией запуска: **`--dry-run`**, **`--version`**;
- внешние файлы аргументов вида **`@file`** или **`$file`**, которые обходят встроенную валидацию и управление очередями.
### Интеграция ByeDPI
ByeDPI доступен как действие отдельной секции. Используется [DPITrickster/ByeDPI-OpenWrt](https://github.com/DPITrickster/ByeDPI-OpenWrt/releases).
Реализация: `sing-box` отбирает трафик секции и отправляет его в локальный SOCKS5 outbound -> `ciadpi` принимает соединение на `127.0.0.1:1080+` и применяет выбранную стратегию DPI-обхода.
Для стратегии `ByeDPI` намеренно запрещены:
- ручное назначение listen-адреса и порта: **`--ip`**, **`-i`**, **`--port`**, **`-p`**;
- прозрачный режим, несовместимый с SOCKS5-подключением: **`--transparent`**, **`-E`**;
- режимы, которые ломают lifecycle процесса: **`--daemon`**, **`-D`**;
- ручное управление pid-файлами: **`--pidfile`**, **`-w`**;
- режимы, которые выводят справку или версию и сразу завершают работу: **`--help`**, **`-h`**, **`--version`**, **`-v`**;