# Podkop Plus [![Star](https://img.shields.io/github/stars/ushan0v/podkop-plus?style=social)](https://github.com/ushan0v/podkop-plus/stargazers) [![Releases](https://img.shields.io/github/v/release/ushan0v/podkop-plus?label=releases)](https://github.com/ushan0v/podkop-plus/releases) [![Telegram](https://img.shields.io/badge/Telegram-Podkop%20Plus%20%7C%20Chat-2CA5E0?logo=telegram&logoColor=white)](https://t.me/podkop_plus_chat) [![podkop](https://img.shields.io/badge/podkop-itdoginfo-blue)](https://github.com/itdoginfo/podkop) [![zapret-openwrt](https://img.shields.io/badge/zapret--openwrt-remittor-blue)](https://github.com/remittor/zapret-openwrt/releases) [![ByeDPI-OpenWrt](https://img.shields.io/badge/ByeDPI--OpenWrt-DPITrickster-blue)](https://github.com/DPITrickster/ByeDPI-OpenWrt/releases) [![sing-box-extended](https://img.shields.io/badge/sing--box--extended-shtorm--7-blue)](https://github.com/shtorm-7/sing-box-extended/releases)
preview_sections preview_dashboard
> **НЕ ПИШИТЕ** с проблемами 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`**;