{"id":35878322,"url":"https://github.com/jinndi/skeen","last_synced_at":"2026-04-27T01:01:18.704Z","repository":{"id":332052713,"uuid":"1129222796","full_name":"jinndi/SKeen","owner":"jinndi","description":"Keenetic/Netcraze TProxy \u0026 Redirect with sing-box","archived":false,"fork":false,"pushed_at":"2026-04-24T11:25:16.000Z","size":1171,"stargazers_count":22,"open_issues_count":1,"forks_count":2,"subscribers_count":1,"default_branch":"main","last_synced_at":"2026-04-24T13:28:29.957Z","etag":null,"topics":["entware","fakeip","keenetic","netcraze","opkgtun","redirect","sing-box","tproxy"],"latest_commit_sha":null,"homepage":"","language":"Shell","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/jinndi.png","metadata":{"files":{"readme":"README-RU.md","changelog":"CHANGELOG.md","contributing":null,"funding":".github/FUNDING.yml","license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null,"notice":null,"maintainers":null,"copyright":null,"agents":null,"dco":null,"cla":null},"funding":{"custom":["https://donatr.ee/jinndi/"]}},"created_at":"2026-01-06T19:31:54.000Z","updated_at":"2026-04-24T11:25:10.000Z","dependencies_parsed_at":null,"dependency_job_id":null,"html_url":"https://github.com/jinndi/SKeen","commit_stats":null,"previous_names":["jinndi/skeen"],"tags_count":100,"template":false,"template_full_name":null,"purl":"pkg:github/jinndi/SKeen","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/jinndi%2FSKeen","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/jinndi%2FSKeen/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/jinndi%2FSKeen/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/jinndi%2FSKeen/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/jinndi","download_url":"https://codeload.github.com/jinndi/SKeen/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/jinndi%2FSKeen/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":32318417,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-04-26T23:26:28.701Z","status":"ssl_error","status_checked_at":"2026-04-26T23:26:25.802Z","response_time":129,"last_error":"SSL_read: unexpected eof while reading","robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":false,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["entware","fakeip","keenetic","netcraze","opkgtun","redirect","sing-box","tproxy"],"created_at":"2026-01-08T17:18:40.275Z","updated_at":"2026-04-27T01:01:18.697Z","avatar_url":"https://github.com/jinndi.png","language":"Shell","funding_links":["https://donatr.ee/jinndi/"],"categories":[],"sub_categories":[],"readme":"\u003cp align=\"center\"\u003e\n\u003cimg alt=\"SKeen\" src=\"/logo_ru.webp\" width=\"360\"\u003e\n\u003c/p\u003e\n\u003ch1 align=\"center\"\u003e\n  SKeen\n\u003c/h1\u003e\n\u003ch3 align=\"center\"\u003e\nTProxy и Redirect для Keenetic/Netcraze на базе sing-box\n\u003c/h3\u003e\n\n\u003cp align=\"center\"\u003e\n\u003ca href=\"https://github.com/jinndi/SKeen/releases/latest\"\u003e\u003cimg alt=\"SKeen\" src=\"https://img.shields.io/github/v/release/jinndi/SKeen\"\u003e\u003c/a\u003e\n\u003ca href=\"https://raw.githubusercontent.com/jinndi/SKeen/refs/heads/main/LICENSE\"\u003e\u003cimg alt=\"License\" src=\"https://img.shields.io/github/license/jinndi/SKeen\"\u003e\u003c/a\u003e\n\u003ca href=\"https://github.com/SagerNet/sing-box\"\u003e\u003cimg alt=\"sing-box\" src=\"https://repology.org/badge/version-for-repo/homebrew/sing-box.svg?header=sing-box-latest-version\"\u003e\u003c/a\u003e\n\u003ca href=\"https://github.com/jinndi/SKeen\"\u003e\u003cimg alt=\"Visitor\" src=\"https://hitscounter.dev/api/hit?url=https%3A%2F%2Fgithub.com%2Fjinndi%2FXSKeen\u0026label=visitor\u0026icon=eye\u0026color=%230d6efd\u0026message=\u0026style=flat\u0026tz=UTC\"\u003e\u003c/a\u003e\n\u003ca href=\"https://github.com/jinndi/SKeen/releases/latest\"\u003e\u003cimg alt=\"Downloads\" src=\"https://img.shields.io/github/downloads/jinndi/SKeen/total?color=%23AAEEEE\"\u003e\u003c/a\u003e\n\u003ca href=\"https://deepwiki.com/jinndi/SKeen\"\u003e\u003cimg src=\"https://deepwiki.com/badge.svg\" alt=\"Ask DeepWiki\"\u003e\u003c/a\u003e\n\u003c/p\u003e\n\n🇷🇺 **Русский** | [🇺🇸 English](README.md)\n\n\u003cdetails\u003e\n  \u003csummary\u003e🤔Почему sing-box ?\u003c/summary\u003e\n\u003cbr\u003e\n\n**sing-box** — это универсальный прокси-движок с открытым исходным кодом, написанный на Go. Он ориентирован на максимальную производительность, низкое потребление ресурсов и поддержку самых современных протоколов\n\n**Сравнение прокси-движков в контексте роутеров и встраиваемых систем (Embedded)**\n\n|Параметр                |sing-box         |Xray              |mihomo          |\n|------------------------|-----------------|------------------|----------------|\n|Ресурсоемкость (RAM/CPU)|✅ Минимальная   |⚠️ Средняя        |❌ Высокая       |\n|Поддержка протоколов    |✅ Передовой     |⚠️ Мало           |✅ Много       |\n|Мультиплексирование     |✅ Отлично        |⚠️ Проблемно      |✅ Хорошо        |\n|DNS-логика              |🥇 Native (+Fake-IP)|🥉 Sniffing (+FakeDNS)|🥈 Fake-IP (+Real)|\n|L7 Сниффинг (протоколы) |✅ Лидер         |⚠️ Базово         |❌ Только домены |\n|Маршрутизация           |✅ Гибко         |⚠️ Базово         |✅ (но тяжелее) |\n|Управление правилами    |✅ Rule-sets (bin)|⚠️ Geo-files (dat)|✅ Rule-providers|\n|Независимый проект      |✅ Да            |❌ (форк V2Ray)   |❌ (форк Clash) |\n|Порог вхождения         |🔴 Высокий       |🟡 Средний        |🟢 Низкий       |\n\nПримечания:\n\n\u003e sing-box выигрывает за счет модульности и написанного с нуля кода: его DNS-стек позволяет создавать конфигурации любой сложности при минимальных затратах RAM. В то же время mihomo (Clash) ориентирован на автоматизацию, что требует значительных ресурсов, а Xray ограничен устаревшим сетевым стеком и тяжелыми .dat файлами.\n\n\u003e Различия в сниффинге: sing-box и Xray используют полноценный DPI (Deep Packet Inspection), позволяющий определять тип протокола (например, BitTorrent) по содержимому пакетов. mihomo ограничен лишь извлечением метаданных (доменов) из TLS/HTTP-заголовков, что делает невозможной маршрутизацию по типу трафика.\n\n\u003e Высокий порог вхождения sing-box обусловлен строгим синтаксисом JSON и отсутствием «магических» настроек по умолчанию, что компенсируется полным контролем над трафиком.\n\u003c/details\u003e\n\n\u003cdetails\u003e\n  \u003csummary\u003e🖥️ Веб-интерфейс ?\u003c/summary\u003e\n\u003cbr\u003e\n\n💡 Для упрощения настройки доступен [плагин синхронизации](https://github.com/jinndi/sync-profile-to-skeen), позволяющий импортировать профили через [GUI.for.SingBox](https://github.com/jinndi/sync-profile-to-skeen)\n\nПроект сознательно не включает отдельную панель управления. Вот почему это выгодно для вашего роутера:\n\n* **Ресурсоэффективность**: Отказ от сторонних WebUI освобождает RAM и снижает нагрузку на процессор для приоритетных задач маршрутизации.\n* **Интеграция**: Управление и мониторинг отлично реализуются через встроенный интерфейс **Zashboard**, что исключает избыточность.\n* **Чистота системы**: Минимум зависимостей и отсутствие лишних открытых портов повышают общую безопасность и стабильность системы.\n* **Полный контроль**: Прямое редактирование конфигов позволяет использовать 100% возможностей Sing-Box без ограничений, накладываемых упрощенными интерфейсами.\n* **Инструмент, а не игрушка**: Пока другие проекты соревнуются в рисовании красивых кнопок и графиков, превращая роутер в тормозящую фоторамку, SKeen фокусируется на передаче пакетов. Я считаю создание тяжелых панелей для сетевого скрипта признаком плохого тона и неумения работать с системой напрямую. Если вам нужна гирлянда с интерфейсом - вы ошиблись адресом; если вам нужна скорость — вы там, где нужно.\n\n\u003c/details\u003e\n\n\u003cdetails\u003e\n  \u003csummary\u003e🧩 Архитектура ?\u003c/summary\u003e\n\u003cbr\u003e\n\n### Redirect — задействован в режимах `redirect` и `hybrid` (TCP)\n\nИспользуется только одна цепочка `nat` — **skeen**:\n\nВход в данную цепочку может осуществляться по `fwmark` политики роутера, по указанным портам или за их исключением. Она содержит следующий порядок правил:\n\n* **RETURN**: Обход локальных, зарезервированных и пользовательских адресов.\n* **REDIRECT**: Переадресация TCP-трафика на `redirect` порт Sing-Box.\n\n\u003e Перехват DNS-запросов в режиме `redirect` средствами NAT для Sing-Box недоступен.\n\n---\n\n### TProxy — задействован в режимах `tproxy` и `hybrid` (UDP)\n\nИспользуются две базовые цепочки в таблице `mangle`:\n\n#### 1. PREROUTING **skeen**\nВход в данную цепочку может осуществляться по `fwmark` политики роутера, по указанным портам или за их исключением. Содержит следующий порядок правил:\n\n* **DNS TPROXY**: TCP/UDP редирект 53 порта на TProxy порт Sing-Box (опционально).\n* **RETURN**: Обход локальных, зарезервированных и пользовательских адресов.\n* **MARK + ACCEPT SOCKET**: Быстрый путь для уже установленных прозрачных сокетов (socket transparent).\n* **TPROXY**: Направление оставшегося TCP/UDP трафика в TProxy порт Sing-Box.\n\n#### 2. OUTPUT **skeen_mask**\nВход в данную цепочку возможен только для процессов, не состоящих в группе `skeen` (для исключения самозацикливания прокси). Содержит следующий порядок правил:\n\n* **RETURN**: Обход локальных, зарезервированных и пользовательских адресов.\n* **MARK**: Установка общей маркировки для TCP/UDP трафика.\n\n\u003c/details\u003e\n\n\u003cdetails\u003e\n  \u003csummary\u003e🕵️‍♂️ FakeIP ?\u003c/summary\u003e\n\u003cbr\u003e\n\nВ список исключений (обход локальных сетей) специально **не включены**:\n\n1.  **Подсеть `198.18.0.0/15`**\n    В скрипте строка с `198.18.0.0/15` закомментирована. Это означает, что трафик к FakeIP адресам Sing-Box будет перехвачен и обработан ядром в обычном режиме. Это преднамеренное дизайнерское решение для корректной работы маршрутизации.\n\n2.  **Подсеть `fc00::/18`**\n    Сегмент IPv6 `fc00::/18` (диапазон Fake-IP для IPv6 в Sing-Box) также не добавлен в список обхода по аналогичной причине.\n\n\u003c/details\u003e\n\n### 🚀 Особенности\n\n  - Режимы TProxy/Redirect/Hybrid ✓\n  - Поддержка IPv4 и IPv6 ✓\n  - Работающий модуль Sing-box DNS ✓\n  - Работающий Sing-box fakeip ✓\n  - Настроенный Zashboard через Clash API ✓\n  - Оптимизация сетевых настроек ✓\n  - Команды работающие через WEB CLI роутера ✓\n\n### 📋 Требования\n\n  - Установленный и настроенный Entware **не во внутренней памяти** устройства\n  - Установленный компонент «Модули ядра подсистемы Netfilter»\n  - Установленный `curl` (`opkg install curl`)\n  - Рекомендуется: минимум 256 МБ ОЗУ и процессор ARM для раскрытия полного потенциала\n\n### 💾 Установка\n\n**Выполните из среды Entware из SSH:**\n\n```bash\ncurl -Ls https://github.com/jinndi/SKeen/releases/latest/download/skeen_ru | sh\n```\n\n**Настройте SKeen**. Его файл конфигурации находится по адресу `/opt/etc/skeen/skeen.json`.\n\n**Настройте JSON-файл(ы) конфигурации sing-box**, расположенные в директории `/opt/etc/skeen/config/`. В этой директории уже подготовлены примеры файлов. Либо используйте собственный одиночный файл конфигурации, включив режим `sing_config.enable`.\n\n**Zashboard панель** по умолчанию настроена через Clash API и доступна по IP-адресу роутера (обычно 192.168.1.1) по адресу `http://192.168.1.1:9999`.\n\nДиректория `/opt/etc/skeen` не удаляется при деинсталляции программы (ее нужно удалить вручную при необходимости) и не перезаписывается при переустановке, если она уже существует.\n\nДля дальнейшего управления используйте команду `skeen`.\n\n\u003cdetails\u003e\n  \u003csummary\u003eСтруктура файлов и папок после успешной установки:\u003c/summary\u003e\n\u003cbr\u003e\n\n```\n/opt/\n├── bin/\n│   ├── skeen              # Скрипт управления SKeen\n│   └── skeen-box          # Бинарный файл sing-box\n├── etc/\n│   ├── init.d/\n│   │   └── S99SKeen       # Скрипт автозапуска\n│   ├── ndm/\n│   │   └── netfilter.d/\n│   │       └── skeen_firewall.sh  # Создается при запуске\n│   └── skeen/\n│       ├── skeen.json     # Конфигурация SKeen\n│       └── config/        # Директория конфигов sing-box\n│           ├── log.json\n│           ├── dns.json\n│           ├── inbounds.json\n│           ├── outbounds.json\n│           ├── route.json\n│           └── experimental.json\n└── tmp/\n    └── (временные файлы загрузки)\n```\n\u003c/details\u003e\n\n### ⚡ Команды\n\nПример использования через SSH: запуск демона `skeen start`\n\nПри использовании Web CLI роутера добавляйте `exec` перед командой. Например: `exec skeen reload`\n\n\u003e Вывод ответа в WEB CLI ограничен 8 строками и определенным временем, но это не влияет на корректное выполнение команд\n\nКоманда `skeen` без параметров запускает меню управления в SSH. Используйте `help` для справки.\n\n| Команда | Описание | WEB CLI |\n| :--- | --- | :---: |\n| `start` | Запустить сервис | ✓ |\n| `stop` | Остановить сервис | ✓ |\n| `restart` | Перезапустить сервис | ✓ |\n| `reload` | Перезапустить без смены правил фаервола | ✓ |\n| `kill` | Принудительно остановить | ✓ |\n| `status` | Показать статус | ✓ |\n| `version` | Показать версию(и) | ✓ |\n| `update` | Проверить и установить обновления | - |\n| `test` | Проверить правила фаервола | ✓ |\n| `deps` | Проверить зависимости | ✓ |\n| `check` | Проверить конфигурацию | ✓ |\n| `format` | Форматировать конфигурацию Sing-box | ✓ |\n| `backup` | Создать архив `/opt/etc/skeen` | ✓ |\n| `backups` | Список созданных архивов в `/opt` | ✓ |\n| `restore`¹ | Восстановить `/opt/etc/skeen` из архива `/opt` | ✓ |\n| `reset` | Сбросить `/opt/etc/skeen` до состояния по умолчанию | - |\n| `clean`² | Очистить кэш файл Sing-box | ✓ |\n| `sync`³ | Синхронизировать конфигурацию Sing-box | ✓ |\n\n1 - в качестве второго параметра можно передать имя архива с расширением `.tar` для немедленного запуска восстановления\n\n2 - очищает файл кэша. Это необходимо при использовании функции `experimental.cache_file` в sing-box, например, для сброса кэша загруженных правил (rule_set) и истории DNS-запросов. Начиная с версии sing-box 1.14, в кэш сохраняются все DNS-ответы (ранее — только отклоненные)\n\n3 - принимает URL JSON-конфигурации Sing-box в качестве второго параметра (HTTP или HTTPS), необязательно указывать, если прописан адрес в `sing_config.sync_url`\n\n\n| Менеджер OpkgTun (KeeneticOS v5+, только через SSH) |\n| :--- |\n| `skeen tun create \u003cipv4\u003e \u003cname\u003e` — Создать интерфейс с IP-адресом и именем |\n| `skeen tun delete \u003cname\u003e` — Удалить интерфейс по имени |\n| `skeen tun list` — Показать все интерфейсы OpkgTun |\n\nЕсли пропал доступ к SSH Entware, выполните в Web CLI:\n\n```\nexec /opt/etc/init.d/S51dropbear start\n```\n\n### ⚙️ Настройки\n\n\u003e [!NOTE]\n\u003e После внесения изменений в файл требуется перезапуск через `skeen restart` или через меню\n\nФайл `/opt/etc/skeen/skeen.json` содержит следующие настройки:\n\n```jsonc\n{\n  \"auto_start\": {\n    \"enable\": 1,       // Автозапуск SKeen при загрузке роутера (0 = выключено)\n    \"delay\": 0         // Задержка автозапуска в секундах (по умолчанию: 0)\n  },\n  \"policy\": {\n    \"enable\": 1,       // Включить маршрутизацию на основе политики (0 = выключено)\n    \"name\": \"SKeen\"    // Имя политики роутера (по умолчанию: \"SKeen\")\n  },\n  \"network\": {\n    \"ipv6\": 1,         // Включить поддержку IPv6 (0 = выключено)\n    \"tuning\": 0,       // Включить оптимизацию сети через sysctl (1 = вкл).\n                       // Если выключено, настройки sysctl сбросятся после перезагрузки.\n    \"check\": [\n      \"1.1.1.1\",\n      \"77.88.8.8\",\n      \"223.5.5.5\"\n    ]                  // Домены или IPv4 для проверки доступности сети (макс. 3)\n  },\n  \"sing_config\": {\n    \"enable\": 0,       // Если 1, будет использоваться один файл конфига Sing-box\n                       // по адресу /opt/etc/skeen/config.json вместо папки /opt/etc/skeen/config/\n    \"path\": \"\",        // Можно указать свой собственный полный путь\n    \"sync_url\": \"\",    // URL-адрес (http:// или https://), откуда будет синхронизироваться\n                       // конфигурация командой `sync` по умолчанию (необязательно)\n  },\n  \"service_proxy\": {\n    \"enable\": 0,       // Если 1, используется локальный прокси (127.0.0.1) для команд update и sync\n    \"port\": \"\",        // Порт локального прокси (SOCKS5 или mixed)\n    \"user\": \"\",        // Имя пользователя для подключения (не обязательно)\n    \"pass\": \"\"         // Пароль пользователя для подключения (обязательно если указан user)\n  },\n  \"firewall\": {\n    \"intercept\": {\n      \"dns\": 1,        // Перехватывать DNS-запросы через режимы TProxy/Hybrid (0 = выкл)\n      \"port\": []       // Порты для перехвата (все, если пусто).\n                       // Пример: [ 80, 443, \"1000:2000\", \"1500:5555\" ]\n    },\n    \"exclude\": {\n      \"port\": [\n        123, 137,\n        138, 139,\n        445            // Порты, исключенные из редиректа\n                       // (игнорируется, если задан `intercept.port`)\n      ],\n      \"ipv4_cidr\": [], // Исключенные подсети IPv4 из редиректа\n                       // Пример: [ \"192.87.1.0/24\", \"192.12.1.1\" ]\n      \"ipv6_cidr\": []  // Исключенные подсети IPv6 из редиректа\n                       // Пример: [ \"2001:db8::/32\", \"2001:db8::1\" ]\n    }\n  }\n}\n```\n\n### 🔗 Полезные ссылки\n\n  - Плагин синхронизации: [https://github.com/jinndi/sync-profile-to-skeen](https://github.com/jinndi/sync-profile-to-skeen)\n  - Схема Sing-box: [https://gist.github.com/artiga033/fea992d95ad44dc8d024b229223b1002](https://gist.github.com/artiga033/fea992d95ad44dc8d024b229223b1002)\n  - Различные примеры настроек: [https://proxy-tutorials.dustinwin.us.kg](https://proxy-tutorials.dustinwin.us.kg)\n  - Генератор outbounds: [https://4n0nymou3.github.io/proxy-to-singbox-converter/](https://4n0nymou3.github.io/proxy-to-singbox-converter/)\n  - Наборы правил Karing: [https://github.com/KaringX/karing-ruleset/tree/sing](https://github.com/KaringX/karing-ruleset/tree/sing)\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fjinndi%2Fskeen","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fjinndi%2Fskeen","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fjinndi%2Fskeen/lists"}