Настройка sing-box на роутере OpenWRT: пошаговое руководство
Обновлено
Настройка sing-box на роутере OpenWRT
Проблема
Поднимать прокси на каждом устройстве отдельно — телефоне, ноутбуке, телевизоре — утомительно, а часть техники (Smart TV, приставки, IoT) вообще не умеет работать с клиентами вроде sing-box. Логичное решение — настроить обход блокировок один раз на роутере с OpenWRT, чтобы весь трафик домашней сети автоматически шёл через зашифрованный туннель. Ниже — рабочая инструкция, как это сделать с помощью sing-box в режиме TUN.
Обзор решения
sing-box — это универсальное прокси-ядро, которое поддерживает современные протоколы (VLESS, VMess, Trojan, Shadowsocks, Hysteria2, TUIC) и маскировку Reality, устойчивую к блокировкам по SNI. На роутере мы установим пакет
sing-box, создадим конфигурацию с TUN-интерфейсом в качестве входа (inbound) и вашим сервером в качестве выхода (outbound), а затем включим автозапуск. TUN-режим с auto_route сам создаёт правила маршрутизации, поэтому весь трафик LAN прозрачно заворачивается в туннель без ручной возни с iptables.Требования: роутер с OpenWRT 23.05+ (или ImmortalWrt), не менее ~128 МБ свободной памяти/флеша, доступ по SSH и уже готовые реквизиты вашего сервера (адрес, UUID, public key и short_id для Reality).
Пошаговая инструкция
- Подключитесь к роутеру по SSH и проверьте версию системы и архитектуру:
ssh [email protected] cat /etc/openwrt_release opkg print-architecture - Обновите списки пакетов и установите sing-box вместе с модулем ядра для TUN:
opkg update opkg install sing-box kmod-tunЕслиopkgпишет, что пакет не найден, ваша сборка OpenWRT слишком старая или без нужного feed — используйте ImmortalWrt либо вариант с LuCI-плагином (см. FAQ). Проверьте установку:sing-box version - Создайте конфигурацию в файле
/etc/sing-box/config.json. Пример ниже рассчитан на sing-box 1.11+ и протокол VLESS + Reality. Подставьте свои значения вместоВАШ_*:{ "log": { "level": "info" }, "dns": { "servers": [ { "tag": "remote", "address": "https://1.1.1.1/dns-query", "detour": "proxy" }, { "tag": "local", "address": "223.5.5.5", "detour": "direct" } ], "rules": [ { "outbound": "any", "server": "local" } ] }, "inbounds": [ { "type": "tun", "tag": "tun-in", "interface_name": "singtun0", "inet4_address": "172.19.0.1/30", "auto_route": true, "strict_route": true, "stack": "system", "sniff": true } ], "outbounds": [ { "type": "vless", "tag": "proxy", "server": "ВАШ_СЕРВЕР", "server_port": 443, "uuid": "ВАШ_UUID", "flow": "xtls-rprx-vision", "tls": { "enabled": true, "server_name": "www.microsoft.com", "utls": { "enabled": true, "fingerprint": "chrome" }, "reality": { "enabled": true, "public_key": "ВАШ_PUBLIC_KEY", "short_id": "ВАШ_SHORT_ID" } } }, { "type": "direct", "tag": "direct" } ], "route": { "rules": [ { "action": "sniff" }, { "protocol": "dns", "action": "hijack-dns" }, { "ip_is_private": true, "outbound": "direct" } ], "auto_detect_interface": true, "final": "proxy" } } - Проверьте синтаксис конфигурации перед запуском — это спасает от молчаливого падения сервиса:
sing-box check -c /etc/sing-box/config.jsonКоманда должна завершиться без вывода ошибок. - Включите автозапуск и запустите сервис через procd:
/etc/init.d/sing-box enable /etc/init.d/sing-box startУбедитесь, что появился TUN-интерфейс и процесс работает:ip addr show singtun0 logread -e sing-box - Разрешите трафик в фаерволе. Режим
auto_route+strict_routeобычно настраивает маршруты сам, но если интернет на клиентах не появился, добавьте интерфейсsingtun0в зонуlanфайрвола (LuCI → Network → Firewall) либо разрешите форвардинг из зоны LAN на этот интерфейс. После изменений:/etc/init.d/firewall restart - Проверьте результат с любого устройства в сети — внешний IP должен смениться на адрес вашего сервера:
curl -s https://api.ipify.org && echo nslookup ifconfig.meЕсли IP изменился и DNS резолвится без утечек — настройка завершена.
FAQ
opkg не находит пакет sing-box — что делать?
Не во всех официальных сборках OpenWRT есть актуальный sing-box. Используйте свежий релиз OpenWRT 23.05+/24.10 или ImmortalWrt, где пакет присутствует, либо установите LuCI-плагин
Не во всех официальных сборках OpenWRT есть актуальный sing-box. Используйте свежий релиз OpenWRT 23.05+/24.10 или ImmortalWrt, где пакет присутствует, либо установите LuCI-плагин
luci-app-homeproxy — он использует sing-box как движок и даёт графическую настройку без правки JSON вручную.TUN-интерфейс не поднимается.
Чаще всего не установлен модуль ядра: выполните
Чаще всего не установлен модуль ядра: выполните
opkg install kmod-tun и перезапустите сервис. Проверьте logread -e sing-box — там будет причина (нет прав, отсутствует /dev/net/tun, ошибка в конфиге).Роутер тормозит под нагрузкой.
Шифрование на слабом MIPS-процессоре упирается в CPU. Выбирайте лёгкие протоколы (VLESS+Reality, Shadowsocks), не включайте лишний sniffing и помните, что для гигабитных скоростей нужен роутер с производительным ARM-чипом.
Шифрование на слабом MIPS-процессоре упирается в CPU. Выбирайте лёгкие протоколы (VLESS+Reality, Shadowsocks), не включайте лишний sniffing и помните, что для гигабитных скоростей нужен роутер с производительным ARM-чипом.
Можно ли заворачивать только часть трафика?
Да. В секции
Да. В секции
route.rules добавьте правила по доменам, GeoIP или GeoSite — например, российский и локальный трафик направляйте в direct, а остальное в proxy. Это снижает нагрузку и сохраняет доступ к локальным сервисам.Похожие руководства
- Настройка VLESS + Reality на сервере с XTLS
- sing-box на Windows: установка и конфигурация клиента
- Прозрачный прокси на OpenWRT через luci-app-homeproxy
- Как выбрать протокол обхода блокировок: VLESS, Hysteria2, Shadowsocks
Канал Univista в Telegram
В канале — свежие рабочие конфиги, статус узлов и разбор частых проблем.
Перейти в каналПоделиться этим руководством
Уже подписались? Помощь — импорт и устранение неполадок.
Готовы к стабильному доступу в интернет?
ТарифыМатериал носит технический характер. Соблюдайте местные законы при использовании сетевых инструментов. Univista не отвечает за ваш сценарий использования.