Skip to content

yandexru45/netshift

 
 

Repository files navigation

NetShift

Clash

Sing-box client for Openwrt


Telegram Channel Telegram Chat


NetShift - маршрутизатор трафика для OpenWrt. Направляйте нужные ресурсы в туннель, а остальное - напрямую. Открытое ПО на базе sing-box.

Это форк itdoginfo/podkop, значительно расширяющий функциональность.

Warning

Проект находится в стадии бета-версии. Возможны ошибки, нестабильная работа и существенные изменения функциональности.


Функции

  • Маршрутизация по доменам и подсетям - нужное в туннель, остальное напрямую
    VLESS · Shadowsocks · Trojan · Hysteria2 · готовые community-списки
  • Subscription URL - ссылки подписки от провайдера с автообновлением и автовыбором лучшего сервера
    любая подписка remnawave · 3x-ui · marzban · github
  • Переключаемое ядро sing-box - стабильное ↔ sing-box-extended прямо из веб-интерфейса
    клиентский транспорт xhttp · установка и откат в один клик
  • Веб-интерфейс LuCI - дашборд, диагностика и настройки без ручной правки конфигов
    статус серверов · проверка соединения · логи
  • Автоматическая миграция - обновление со старого podkop переносит конфиг без перенастройки

NetShift в LuCI

Вещи, которые необходимо знать перед установкой

Системные требования
  • OpenWrt 24.10 или выше.
  • Минимум 25 МБ свободного места. Устройства с флеш-памятью 16 МБ не поддерживаются.
Обновления и конфигурация
  • При обновлении обязательно очищайте кэш LuCI.
  • После обновления проверяйте конфигурацию - она может меняться между версиями.
  • При старте NetShift модифицирует конфигурацию Dnsmasq.
  • NetShift изменяет конфигурацию sing-box. Если используете собственную - заранее сохраните её.
Ограничения и особенности
  • Если установлен Getdomains, его необходимо удалить.
  • Dashboard работает только по HTTP (особенность Clash API). По HTTPS или через домен может быть недоступен.
Поддержка и диагностика
Миграция с podkop (0.8.0) и смена формата конфига (0.7.0)

0.8.0 - переименование в NetShift. Пакет теперь netshift (бинарь /usr/bin/netshift), конфиг - /etc/config/netshift, LuCI-приложение - luci-app-netshift. При обновлении старый конфиг /etc/config/podkop автоматически мигрируется в /etc/config/netshift, резервная копия сохраняется в /etc/config/podkop.bak.pre-netshift. туннель продолжит работать без перенастройки.

0.7.0 - несовместимый формат конфига. Старые значения несовместимы - нужно настроить заново. Скрипт установки обнаружит старую версию и предложит сделать это автоматически. Вручную:

mv /etc/config/netshift /etc/config/netshift-070
wget -O /etc/config/netshift https://raw.githubusercontent.com/yandexru45/netshift/refs/heads/main/netshift/files/etc/config/netshift
# затем настроить заново через LuCI или UCI

Установка NetShift

Полная инструкция - в документации.

Для установки и обновления достаточно одного скрипта:

sh <(wget -O - https://raw.githubusercontent.com/yandexru45/netshift/refs/heads/main/install.sh)

Интерфейс появится в LuCI: Services → NetShift.

Настройка подписки (Subscription URL) через UCI

При скачивании подписки отправляются заголовки:

Заголовок Значение
User-Agent singbox/<версия>
X-HWID уникальный идентификатор роутера
X-Device-OS OpenWrt Linux
X-Device-Model модель роутера
X-Ver-OS версия ядра
uci set netshift.my_sub=section
uci set netshift.my_sub.connection_type='proxy'
uci set netshift.my_sub.proxy_config_type='subscription'
uci set netshift.my_sub.subscription_url='https://your-provider.com/api/sub'
uci set netshift.my_sub.subscription_update_interval='1h'
uci add_list netshift.my_sub.community_lists='russia_inside'
uci commit netshift

Ручное обновление подписки:

/usr/bin/netshift subscription_update
Ядро sing-box-extended (xhttp)

Переключение ядра между стабильным sing-box и сборкой sing-box-extended прямо из вкладки Diagnostics в LuCI:

  • Install extended - установить расширенное ядро sing-box-extended.
  • Install stable - вернуться на стабильное ядро.

После установки расширенного ядра становится доступен клиентский транспорт xhttp (только клиентский режим, не серверный). По умолчанию ставится стабильное ядро - extended включается по желанию.

Project Structure

.
├── netshift/                       # Бэкенд-пакет (POSIX ash + jq)
│   ├── Makefile                    # Описание OpenWrt-пакета
│   └── files/
│       ├── etc/config/netshift     # UCI-конфиг по умолчанию
│       ├── etc/init.d/netshift     # procd init-скрипт
│       └── usr/
│           ├── bin/netshift        # Точка входа CLI (диспетчер команд)
│           └── lib/                # constants, helpers, nft, rulesets,
│                                   #   sing_box_config_*, updater, logging
│
├── luci-app-netshift/              # LuCI веб-интерфейс
│   ├── Makefile
│   ├── htdocs/.../view/netshift/   # main.js (автоген) + hand-written views
│   ├── po/                         # Переводы (генерируются из fe-app)
│   └── root/                       # menu.d · acl.d · uci-defaults
│
├── fe-app-netshift/                # TypeScript-исходник для main.js (tsup)
│   ├── src/netshift/               # fetchers · methods · services · tabs
│   ├── src/{validators,helpers,icons,partials}
│   └── locales/                    # Исходные переводы (netshift.pot / .po)
│
├── sdk/                            # Базовые образы OpenWrt SDK
├── Dockerfile-ipk · Dockerfile-apk # Сборка пакетов
└── install.sh                      # Установщик + миграция с podkop

Build Artifacts

Пакеты собираются в Docker-образе OpenWrt SDK (24.10) и публикуются как релиз при push git-тега (.github/workflows/build.yml).

Пакет Формат Назначение
netshift .ipk / .apk Бэкенд: CLI, init-скрипт, библиотеки, UCI-конфиг
luci-app-netshift .ipk / .apk Веб-интерфейс LuCI
luci-i18n-netshift-ru .ipk / .apk Русская локализация интерфейса

Локальная сборка:

# ipk (большинство устройств OpenWrt 24.10)
docker build -f Dockerfile-ipk --build-arg NETSHIFT_VERSION=0.8.0 -t netshift:ipk .

# apk (новые сборки OpenWrt на apk)
docker build -f Dockerfile-apk --build-arg NETSHIFT_VERSION=0.8.0 -t netshift:apk .

Требуется sing-box >= 1.12.0 и jq >= 1.7.1 на целевом устройстве.

Star History

Star History Chart

Credits

  • itdoginfo/podkop - исходный проект, форком которого является NetShift.
  • sing-box - движок маршрутизации.

Лицензия: GPL-2.0-or-later - см. LICENSE.

Important

Pull Request принимаются только после согласования с авторами в Telegram-чате.

About

Podkop's fork with advanced features, HWID and Subscription URL support

Resources

License

Stars

Watchers

Forks

Packages

 
 
 

Contributors

Languages

  • Shell 60.3%
  • JavaScript 22.2%
  • TypeScript 17.0%
  • Other 0.5%