> **Автор:** Сетевой инженер и специалист по кибербезопасности RiderHub Secure
> **Дата публикации:** Ноябрь 2026 года
> **Совместимость:** KeeneticOS 4.x / 5.x (модели Titan, Hero, Hopper, Speedster, Giga, Viva, Ultra с USB-портом)
> **Уровень сложности:** Экспертный (Embedded Linux & Router Engineering)
---
1. Введение: Почему маршрутизация на роутере — безальтернативное решение в конце 2026 года
В условиях тотального внедрения комплексов ТСПУ 3.x и блокировок протоколов на уровне мобильных и фиксированных операторов настройка обхода ограничений на каждом клиентском устройстве (Smart TV, Apple TV, игровые консоли PlayStation 5 / Xbox Series X, умные колонки, смартфоны гостей) становится нерациональной и трудоемкой задачей. Более того, многие закрытые операционные системы (webOS от LG, Tizen от Samsung, tvOS) не поддерживают сторонние VPN-клиенты с поддержкой современных протоколов маскировки трафика.
Единственным профессиональным решением является вынос криптографического шлюза непосредственно на домашний роутер **Keenetic**.
Преимущества связки Keenetic + Entware + Sing-box:
1. **Прозрачность для клиентов:** Все устройства в домашней локальной сети (LAN/Wi-Fi) получают доступ к YouTube в 4K без буферизации, Discord, Instagram, Twitter/X, ChatGPT и заблокированным профильным IT-ресурсам без установки приложений на сами клиенты.
2. **Селективная маршрутизация на уровне ядра Linux (Smart Split-Tunneling):** Через VLESS Reality направляются **исключительно** запрещенные или замедляемые ресурсы. Российский банковский сектор (Сбер, Т-Банк/Тинькофф, ВТБ, Альфа-Банк), портал Госуслуг, стриминги (Кинопоиск, Иви, Okko) и сервисы Яндекса и VK идут напрямую через шлюз вашего провайдера с минимальным пингом и без блокировок со стороны антифрод-систем.
3. **Энергоэффективность и производительность:** Использование компилированного бинарного файла `sing-box` с аппаратной поддержкой криптографических инструкций ARMv7/ARMv8/MIPS обеспечивает пропускную способность до 300-600 Мбит/с даже на процессорах среднего уровня (MediaTek MT7621 / MT7981).
---
2. Подготовка роутера Keenetic и развертывание Entware (OPKG)
Для развертывания подсистемы Entware необходим роутер Keenetic с разъемом USB 2.0/3.0 и USB-накопитель (флешка или SSD) емкостью от 4 ГБ.
Шаг 1: Подготовка USB-накопителя
1. Подключите USB-накопитель к компьютеру.
2. Отформатируйте накопитель в файловую систему **Ext4** (рекомендуется) или **NTFS**. Использование FAT32 запрещено из-за отсутствия поддержки POSIX-прав доступа и символических ссылок.
3. Присвойте разделу метку тома, например: `ENTWARE`.
4. Вставьте накопитель в USB-разъем роутера Keenetic.
Шаг 2: Установка необходимых компонентов KeeneticOS
1. Перейдите в веб-интерфейс роутера: `http://192.168.1.1`.
2. Авторизуйтесь под учетной записью администратора.
3. Откройте раздел **Управление** -> **Общие настройки** -> в блоке **Обновление и компоненты** нажмите **Изменить набор компонентов**.
4. Убедитесь, что отмечены и установлены следующие модули:
* **Поддержка открытых пакетов (OpenKG / Entware)**
* **Протокол IPv6** (даже если провайдер не предоставляет IPv6, стек необходим для сетевых подсистем)
* **Модули ядра для сетевых фильтров Netfilter (ipset, iptables, xt_TPROXY)**
* **Поддержка файловой системы Ext4**
* **Служба интерфейса командной строки (SSH)**
5. Дождитесь перезагрузки роутера после установки компонентов.
Шаг 3: Активация репозитория Entware
1. Перейдите в веб-интерфейсе в раздел **Управление** -> **OPKG**.
2. В строке **Устройство хранения** выберите подключенный USB-накопитель (`ENTWARE`).
3. Нажмите кнопку **Установить** или сохраните настройки. KeeneticOS автоматически загрузит базовый образ окружения Entware и развернет файловую структуру в каталоге `/opt`.
---
3. Подключение по SSH и установка необходимых пакетов
Для дальнейшей настройки используйте терминал (PowerShell / Command Prompt на Windows или Terminal на macOS/Linux).
# Подключение к SSH серверу роутера Keenetic на порту 222 (стандартный порт Entware)
ssh root@192.168.1.1 -p 222*(Пароль по умолчанию в чистом Entware: `keenetic`, после первого входа система потребует сменить пароль командой `passwd`).*
Обновление списка пакетов и установка утилит:
Выполните последовательно в терминале:
opkg update
opkg upgrade
# Установка базовых утилит ядра, curl, ca-certificates, ipset и iptables
opkg install curl wget ca-certificates ip-full ipset iptables nano jq bind-digУстановка Sing-box в Entware:
В репозитории Entware для большинства архитектур Keenetic доступен оптимизированный пакет Sing-box:
opkg install sing-box*Если в вашем репозитории архитектуры пакет отсутствует, можно скачать актуальный статический бинарник напрямую с официального GitHub SagerNet (выбирайте `linux-armv7hf`, `linux-arm64` или `linux-mipsle-softfloat` в зависимости от процессора вашего Keenetic) и поместить его в `/opt/usr/bin/sing-box` с правами `chmod +x`.*
Проверьте установку:
sing-box version*(Вывод должен показать версию 1.10.x или 1.11.x с поддержкой VLESS, Reality, TPROXY и TUN).*
---
4. Разработка конфигурации `config.json` для архитектуры Router-Gateway
Конфигурация Sing-box на роутере существенно отличается от клиентской версии: здесь трафик перехватывается от всей подсети LAN (`192.168.1.0/24`) через входящий порт TPROXY или виртуальный интерфейс TUN.
Создайте рабочий файл конфигурации:
nano /opt/etc/sing-box/config.jsonВставьте следующую выверенную конфигурацию:
{
"log": {
"level": "warn",
"output": "/opt/var/log/sing-box.log",
"timestamp": true
},
"dns": {
"servers": [
{
"tag": "dns-remote",
"address": "https://1.1.1.1/dns-query",
"address_resolver": "dns-local",
"detour": "proxy-out"
},
{
"tag": "dns-local",
"address": "77.88.8.8",
"detour": "direct-out"
}
],
"rules": [
{
"outbound": "any",
"server": "dns-local"
},
{
"rule_set": ["geosite-ru"],
"server": "dns-local"
},
{
"rule_set": ["blocked-domains"],
"server": "dns-remote"
}
],
"final": "dns-local",
"strategy": "prefer_ipv4"
},
"inbounds": [
{
"type": "tproxy",
"tag": "tproxy-in",
"listen": "::",
"listen_port": 12345,
"sniff": true,
"sniff_override_destination": true
},
{
"type": "direct",
"tag": "dns-in",
"listen": "127.0.0.1",
"listen_port": 1053,
"override_address": "8.8.8.8",
"override_port": 53
}
],
"outbounds": [
{
"type": "vless",
"tag": "proxy-out",
"server": "198.51.100.88",
"server_port": 443,
"uuid": "4a7b2c91-e8d1-42fa-90f3-8b7c6d5e4a3b",
"flow": "xtls-rprx-vision",
"tls": {
"enabled": true,
"server_name": "swdist.apple.com",
"utls": {
"enabled": true,
"fingerprint": "chrome"
},
"reality": {
"enabled": true,
"public_key": "W9vP4tZ8yX2aB5cD7eF9gH1jK3mN5qR7sT9uV1wX3yZ=",
"short_id": "0123456789abcdef"
}
},
"packet_encoding": "xudp"
},
{
"type": "direct",
"tag": "direct-out"
}
],
"route": {
"rules": [
{
"protocol": "dns",
"outbound": "dns-out"
},
{
"ip_is_private": true,
"outbound": "direct-out"
},
{
"rule_set": ["geosite-ru"],
"outbound": "direct-out"
},
{
"rule_set": ["blocked-domains"],
"outbound": "proxy-out"
}
],
"rule_set": [
{
"tag": "geosite-ru",
"type": "remote",
"format": "binary",
"url": "https://raw.githubusercontent.com/SagerNet/sing-geosite/rule-set/geosite-category-ru.srs",
"download_detour": "direct-out"
},
{
"tag": "blocked-domains",
"type": "remote",
"format": "binary",
"url": "https://raw.githubusercontent.com/SagerNet/sing-geosite/rule-set/geosite-youtube.srs",
"download_detour": "direct-out"
}
],
"final": "direct-out",
"auto_detect_interface": true
}
}---
5. Настройка маршрутизации Linux: Netfilter, Ipset и TPROXY
Для направления сетевых пакетов из локальной сети в процесс Sing-box без накладных расходов виртуальных сетевых адаптеров TUN используется механизм **TPROXY (Transparent Proxy)**.
Создадим скрипт конфигурации правил брандмауэра:
nano /opt/etc/sing-box/tproxy_rules.shВставьте следующий shell-скрипт:
#!/bin/sh
# Создание таблицы маршрутизации 100 для локального редиректа
ip -4 rule del fwmark 1 table 100 2>/dev/null
ip -4 rule add fwmark 1 table 100
ip -4 route flush table 100
ip -4 route add local 0.0.0.0/0 dev lo table 100
# Создание ipset таблицы для заблокированных подсетей
ipset create unblock_ips hash:net 2>/dev/null
# Очистка старых цепочек iptables
iptables -t mangle -D PREROUTING -j SINGBOX_TPROXY 2>/dev/null
iptables -t mangle -F SINGBOX_TPROXY 2>/dev/null
iptables -t mangle -X SINGBOX_TPROXY 2>/dev/null
# Создание пользовательской цепочки SINGBOX_TPROXY в таблице mangle
iptables -t mangle -N SINGBOX_TPROXY
# Пропуск локального трафика и широковещательных пакетов
iptables -t mangle -A SINGBOX_TPROXY -d 0.0.0.0/8 -j RETURN
iptables -t mangle -A SINGBOX_TPROXY -d 10.0.0.0/8 -j RETURN
iptables -t mangle -A SINGBOX_TPROXY -d 127.0.0.0/8 -j RETURN
iptables -t mangle -A SINGBOX_TPROXY -d 169.254.0.0/16 -j RETURN
iptables -t mangle -A SINGBOX_TPROXY -d 172.16.0.0/12 -j RETURN
iptables -t mangle -A SINGBOX_TPROXY -d 192.168.0.0/16 -j RETURN
iptables -t mangle -A SINGBOX_TPROXY -d 224.0.0.0/4 -j RETURN
iptables -t mangle -A SINGBOX_TPROXY -d 240.0.0.0/4 -j RETURN
# Перенаправление пакетов, адресованных IP-адресам из списка unblock_ips, на TPROXY порт 12345
iptables -t mangle -A SINGBOX_TPROXY -p tcp -m set --match-set unblock_ips dst -j TPROXY --on-port 12345 --tproxy-mark 1
iptables -t mangle -A SINGBOX_TPROXY -p udp -m set --match-set unblock_ips dst -j TPROXY --on-port 12345 --tproxy-mark 1
# Подключение цепочки к системному PREROUTING
iptables -t mangle -A PREROUTING -j SINGBOX_TPROXY
echo "[RiderHub Secure] TPROXY iptables rules successfully applied."Сделайте файл исполняемым:
chmod +x /opt/etc/sing-box/tproxy_rules.sh---
6. Автоматическая загрузка списков блокировок через Cron
Для поддержания списков заблокированных IP-адресов в актуальном состоянии настроим ежедневную автоматическую синхронизацию со списком `Antifilter Community`:
Создайте скрипт обновления IP-листов:
nano /opt/etc/sing-box/update_antifilter.shВставьте код:
#!/bin/sh
URL="https://community.antifilter.download/list/community.lst"
TMP_FILE="/opt/tmp/antifilter.lst"
mkdir -p /opt/tmp
echo "[INFO] Downloading latest AntiFilter IP list..."
curl -s -L "$URL" -o "$TMP_FILE"
if [ -s "$TMP_FILE" ]; then
echo "[INFO] Processing ipset entries..."
# Создаем временный ipset для бесшовного обновления
ipset create unblock_temp hash:net 2>/dev/null
ipset flush unblock_temp
while read -r line; do
# Пропуск пустых строк и комментариев
[ -z "$line" ] && continue
case "$line" in \#*) continue ;; esac
ipset add unblock_temp "$line" 2>/dev/null
done < "$TMP_FILE"
# Атомарная замена набора
ipset swap unblock_temp unblock_ips
ipset destroy unblock_temp 2>/dev/null
rm -f "$TMP_FILE"
echo "[SUCCESS] IPSet unblock_ips updated: $(ipset list unblock_ips | grep -c '^[0-9]') CIDRs active."
else
echo "[ERROR] Failed to fetch IP list. Retaining current rules."
fiСделайте скрипт исполняемым и добавьте его в планировщик задач `cron`:
chmod +x /opt/etc/sing-box/update_antifilter.sh
# Добавление в crontab выполнение каждую ночь в 04:30
echo "30 4 * * * /opt/etc/sing-box/update_antifilter.sh > /opt/var/log/antifilter_cron.log 2>&1" >> /opt/etc/crontabВыполните первоначальное наполнение списка:
/opt/etc/sing-box/update_antifilter.sh---
7. Создание стартового демона `/opt/etc/init.d/S99sing-box`
Для гарантированного автозапуска Sing-box и правил TPROXY при включении и перезагрузке Keenetic создадим системный сервис Entware:
nano /opt/etc/init.d/S99sing-boxСодержимое файла инициализации:
#!/bin/sh
ENABLED=yes
PROCS=sing-box
ARGS="run -c /opt/etc/sing-box/config.json"
PREARGS=""
DESC="Sing-Box VLESS Reality TPROXY Client"
PATH=/opt/sbin:/opt/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin
. /opt/etc/init.d/rc.func
start_custom() {
echo "Starting $DESC..."
# Применение правил брандмауэра
/opt/etc/sing-box/tproxy_rules.sh
# Запуск демона
sing-box run -c /opt/etc/sing-box/config.json > /dev/null 2>&1 &
echo "Done."
}
stop_custom() {
echo "Stopping $DESC..."
killall -9 sing-box 2>/dev/null
# Очистка mangle правил
iptables -t mangle -D PREROUTING -j SINGBOX_TPROXY 2>/dev/null
iptables -t mangle -F SINGBOX_TPROXY 2>/dev/null
iptables -t mangle -X SINGBOX_TPROXY 2>/dev/null
echo "Done."
}
case "$1" in
start)
start_custom
;;
stop)
stop_custom
;;
restart)
stop_custom
sleep 2
start_custom
;;
*)
echo "Usage: $0 {start|stop|restart}"
exit 1
;;
esacВыдайте права на запуск:
chmod +x /opt/etc/init.d/S99sing-boxЗапустите сервис:
/opt/etc/init.d/S99sing-box start---
8. Проверка работы с клиентских устройств и траблшутинг
Контроль работы шлюза с любого домашнего компьютера:
1. Подключитесь к Wi-Fi сети роутера.
2. Откройте в браузере заблокированные ресурсы: `https://www.youtube.com`, `https://discord.com`, `https://instagram.com`.
3. Откройте ресурсы РФ: `https://gosuslugi.ru`, `https://sberbank.ru`, `https://tbank.ru`. Убедитесь, что авторизация проходит мгновенно, капчи отсутствуют, а личный кабинет определяет вас в домашнем регионе.
Таблица диагностики типовых проблем:
| Симптом | Причина | Метод исправления |
|---|---|---|
| Роутер перезагружается или виснет при высокой нагрузке | Недостаток ОЗУ (Out of Memory) | Создайте файл подкачки swap: `dd if=/dev/zero of=/opt/swap bs=1M count=512 && mkswap /opt/swap && swapon /opt/swap`. Добавьте команду в автозапуск. |
| Ошибка `iptables: No chain/target/match by that name` | Не установлены модули xt_TPROXY в KeeneticOS | Установите компонент ядра «Модули Netfilter» в веб-интерфейсе Keenetic. |
| Голосовая связь Discord не работает | Не перехватывается протокол UDP в iptables | Проверьте наличие строки `iptables -t mangle -A SINGBOX_TPROXY -p udp ... -j TPROXY` в скрипте правил. |
| Российские сервисы определяют заграничный IP | Ошибка в правилах ipset или DNS | Проверьте, что в `unblock_ips` не попали диапазоны Яндекса или Сбера командой `ipset test unblock_ips 77.88.8.8`. |
---
9. Заключение
Интеграция Sing-box с VLESS Reality в роутер Keenetic на базе подсистемы Entware превращает домашнюю сеть в защищенную корпоративную инфраструктуру, полностью невидимую для систем ТСПУ РКН. Благодаря архитектуре TPROXY и гибридным спискам IP/Geosite домашний роутер обеспечивает максимальную скорость до 1 Гбит/с без задержек и потери качества передачи контента.