ZeroBlock для OpenWrt: настройка VPN и маршрутизации на Routerich

Практическая инструкция по установке и настройке ZeroBlock на OpenWrt. Разберём подключение VPN, работу с sing-box, DNS, секциями маршрутизации, автозапуск и базовую диагностику.
OpenWrt позволяет перенести работу с VPN с отдельных компьютеров и смартфонов непосредственно на роутер. В результате клиентским устройствам не требуется устанавливать отдельные приложения: маршрутизацией занимается сам маршрутизатор.
В этой статье разберём ZeroBlock, его установку и базовую настройку подключения к собственному VPN-серверу или другой конфигурации защищённого соединения. Основная задача здесь именно сетевая: создать защищённый канал связи и определить, какой трафик домашней сети должен через него проходить.
Материал посвящён настройке защищённого сетевого соединения и маршрутизации в OpenWrt. Использование сетевого оборудования и программного обеспечения должно осуществляться с соблюдением применимого законодательства.
Если вам важна именно правовая сторона вопроса, отдельно рекомендую прочитать материал VPN в России в 2026 году: законно ли пользоваться и где начинаются реальные риски.
Что такое ZeroBlock
ZeroBlock представляет собой сервис для OpenWrt с веб-интерфейсом LuCI, который объединяет настройку сетевых подключений и правила маршрутизации.
В актуальных сборках Routerich ZeroBlock работает совместно с sing-box. В репозитории Routerich на момент написания статьи доступны пакеты zeroblock 0.8.4-r436, luci-app-zeroblock 0.8.4-r436 и сборка sing-box-rr.
На практике схема выглядит примерно так:
Устройство в локальной сети -> роутер OpenWrt -> правила ZeroBlock -> прямое соединение или VPN -> интернет
Это удобно тем, что правила задаются централизованно на роутере.
Например, можно оставить основную часть соединений с обычной маршрутизацией через WAN, а для отдельного устройства, домена или подсети использовать собственный защищённый туннель.
Что понадобится
Для настройки потребуется:
- роутер с совместимой сборкой OpenWrt;
- установленный ZeroBlock;
- веб-интерфейс LuCI;
- параметры собственного VPN-сервера или конфигурация защищённого подключения;
- несколько мегабайт свободной flash-памяти и достаточный объём оперативной памяти для работы
sing-box.
Отдельно обращу внимание на совместимость. ZeroBlock не является штатным пакетом официального репозитория OpenWrt. На прошивках Routerich необходимые пакеты доступны из их репозитория. Для других сборок способ установки и совместимость зависят от архитектуры и используемого репозитория.
Если сам роутер ещё не настроен, сначала можно пройти мою отдельную инструкцию по настройке Routerich AX3000 на OpenWrt.
Например, существующий Z2R Manager в своей актуальной инструкции отдельно указывает архитектуру aarch64_cortex-a53 для установки ZeroBlock на OpenWrt 24 и 25. Поэтому просто брать пакет от другого роутера и устанавливать его через --force-depends я бы не рекомендовал.
Установка ZeroBlock через LuCI
Если ZeroBlock присутствует в репозитории вашей прошивки, проще всего установить его через веб-интерфейс.
Открываем:
Система -> Пакеты
Сначала нажимаем кнопку обновления списка пакетов.
После обновления вводим в фильтре:
zeroblock
Для полноценной работы через LuCI нужны два пакета:
zeroblock
и
luci-app-zeroblock
Сначала устанавливаем основной пакет zeroblock, затем luci-app-zeroblock.
Именно такой порядок установки используется и в инструкции сообщества Routerich.
После установки обновляем страницу LuCI. Если новый пункт меню не появился сразу, можно выполнить жёсткое обновление страницы браузера через Ctrl+F5.
В разделе:
Службы -> ZeroBlock
должна появиться панель управления.
Панель ZeroBlock

На главной странице удобно сразу проверить состояние сервиса и убедиться, что ZeroBlock действительно запущен.
Сам факт установленного пакета ещё не означает, что трафик проходит через какой-либо туннель. ZeroBlock работает с секциями маршрутизации, а без настроенной секции сервис может вообще не запускать механизм обработки трафика.
Например, в журнале в такой ситуации может появиться сообщение:
No sections configured, restoring DNS and skipping start
То есть ZeroBlock сообщает, что секции отсутствуют, возвращает DNS в исходное состояние и пропускает запуск. Такое поведение встречается в актуальных версиях сервиса.
Как устроена конфигурация ZeroBlock
У ZeroBlock есть глобальные настройки движка и отдельные секции.
Секция фактически отвечает на два вопроса:
- Через какое соединение отправлять соответствующий трафик.
- Какой именно трафик относится к этой секции.
Для VPN-подключения источником может быть отдельная ссылка подключения, VPN-интерфейс или подписка с несколькими узлами.
Конфигурация ZeroBlock хранится в:
/etc/config/zeroblock
Это обычный UCI-конфиг OpenWrt.
Например, актуальная реализация ZeroBlock при использовании подписки хранит для секции параметры типа:
config section 'VPN'
option connection_type 'proxy'
option proxy_config_type 'subscription'
list subscription_url 'https://адрес-вашей-подписки'
Здесь:
connection_type 'proxy' сообщает ZeroBlock, что секция использует прокси-движок;
proxy_config_type 'subscription' выбирает конфигурацию через подписку;
subscription_url содержит адрес самой подписки.
Именно такой формат сейчас использует актуальный менеджер настройки ZeroBlock для OpenWrt 24/25.
Саму ссылку подписки, естественно, публиковать нигде не нужно. Она может содержать данные для подключения к вашим серверам.
Добавляем VPN-подключение
Открываем ZeroBlock и переходим к разделу с секциями маршрутизации.
Создаём отдельную секцию для VPN. Название можно выбрать произвольное, например:
VPN
Для подключения через подписку выбираем тип соединения Proxy и вариант конфигурации через подписку, после чего указываем URL вашей подписки.
После сохранения ZeroBlock получает конфигурацию и передаёт её своему сетевому движку.
В актуальной конфигурации ZeroBlock ограничивает число получаемых из одной подписки узлов значением 100, а стандартный интервал обновления подписки составляет 1h.
Если в вашей подписке всего один или несколько серверов, менять эти параметры обычно не требуется.
Проверяем сетевой интерфейс
Один из параметров, который особенно важно не испортить, это интерфейс локальной сети.
В типовой конфигурации OpenWrt используется:
br-lan
В актуальном шаблоне ZeroBlock это выглядит так:
list source_network_interfaces 'br-lan'
Именно из этого интерфейса ZeroBlock принимает трафик локальной сети для дальнейшей обработки.
Если ваша сеть построена стандартно и LAN объединён в br-lan, менять этот параметр не требуется.
Если же вы самостоятельно создавали VLAN, дополнительные bridge-интерфейсы или отдельные сети, сначала посмотрите их реальные названия в:
Сеть -> Интерфейсы
Не стоит вслепую указывать eth0, lan1 или другое физическое устройство. ZeroBlock должен работать с тем интерфейсом, через который действительно приходит нужный клиентский трафик.
DNS в ZeroBlock
DNS здесь имеет большое значение, потому что правила маршрутизации могут зависеть от доменных имён.
В актуальной конфигурации ZeroBlock используются следующие базовые параметры:
option dns_type 'udp'
option dns_server '8.8.8.8'
option dns_rewrite_ttl '60'
option dns_strategy 'ipv4_only'
Также по умолчанию:
option dns_hijack '0'
То есть принудительный перехват всего клиентского DNS в этой конфигурации не включён.
Я бы на первом этапе эти параметры не менял.
Сначала нужно добиться стабильной работы самого соединения и только потом заниматься отдельной настройкой DNS, DoH, локального AdGuard Home или другой схемы разрешения имён.
Чем меньше переменных мы меняем одновременно, тем проще искать проблему.
IPv6
В проверенной мной актуальной конфигурации ZeroBlock используется:
option ipv6_enabled '0'
option dns_strategy 'ipv4_only'
То есть базовая конфигурация ориентирована на IPv4.
Если у вашего провайдера и домашней сети IPv6 фактически не используется, я бы так и оставил.
Включать IPv6 только ради красивой галочки смысла нет. Сначала должна быть полностью понятна схема IPv6-маршрутизации вашего провайдера и VPN-сервера.
Нужно ли направлять через VPN трафик самого роутера
В стандартной конфигурации имеется параметр:
option proxy_router_traffic '0'
Он означает, что собственный исходящий трафик роутера автоматически через прокси-секцию не отправляется.
Для обычной домашней схемы это разумное значение.
Роутеру самому требуется скачивать пакеты, синхронизировать время, обращаться к DNS и выполнять другие системные операции. Без необходимости вмешиваться в его собственную маршрутизацию не стоит.
QUIC
В актуальной конфигурации также используется:
option disable_quic '1'
То есть QUIC для обрабатываемого трафика отключается.
Это связано с тем, что QUIC работает поверх UDP и в некоторых схемах прозрачной маршрутизации способен привести к поведению, отличающемуся от обычных TCP-соединений.
Для первоначальной настройки я рекомендую оставить штатное значение ZeroBlock.
BitTorrent и NTP
Ещё два интересных параметра:
option exclude_bittorrent '1'
option exclude_ntp '1'
То есть штатная конфигурация исключает BitTorrent и NTP из обработки соответствующим прокси-механизмом.
Особенно логично исключение NTP. Синхронизация времени должна оставаться максимально простой и надёжной, поскольку неправильное время на роутере способно приводить к ошибкам TLS и другим неожиданным проблемам.
Маршрутизация только нужного трафика
Теперь самое интересное.
Я не рекомендую начинать настройку ZeroBlock с режима, в котором абсолютно весь домашний трафик сразу отправляется через VPN.
Гораздо удобнее сначала создать одну секцию и добавить в неё только тестовое устройство или собственный тестовый домен.
Это позволяет проверить:
- запускается ли ZeroBlock;
- устанавливается ли VPN-соединение;
- работает ли DNS;
- не пропадает ли обычный доступ в интернет;
- возвращается ли трафик правильным маршрутом.
После этого правила можно расширять.
ZeroBlock поддерживает работу с отдельными секциями маршрутизации. В интерфейсе Routerich они так и называются - Секции маршрутизации. Секции можно редактировать независимо друг от друга.
Проверяем маршрутизацию через защищённый туннель
Для проверки не нужны какие-либо специальные сайты.
Сначала с устройства, которое должно использовать VPN, открываем обычный сервис определения внешнего IP.
Записываем внешний адрес.
Затем временно отключаем соответствующую секцию ZeroBlock и повторяем проверку.
Если IP отличается, маршрутизация действительно работает.
После этого проверяем:
ping 1.1.1.1
и отдельно работу DNS:
nslookup example.com
Если IP-адреса доступны, но доменные имена не разрешаются, проблема практически наверняка относится к DNS, а не к самому туннелю.
На компьютере с Linux также можно использовать:
curl -4 ifconfig.me
Команда покажет внешний IPv4-адрес текущего соединения.
Проверяем ZeroBlock через SSH
Если веб-интерфейс показывает ошибку или сервис ведёт себя непонятно, подключаемся к OpenWrt по SSH.
Проверяем состояние:
/etc/init.d/zeroblock status
Перезапускаем ZeroBlock:
/etc/init.d/zeroblock restart
Посмотреть сообщения сервиса можно через системный журнал:
logread | grep -i zeroblock
Для наблюдения за событиями в реальном времени:
logread -f | grep -i zeroblock
Это намного полезнее, чем несколько раз нажимать кнопку «Применить» и надеяться, что проблема исчезнет сама.
Проверяем sing-box
В современных сборках ZeroBlock использует sing-box, поэтому при проблемах имеет смысл убедиться, что соответствующий процесс запущен:
ps w | grep sing-box
Не стоит пугаться дополнительной строки с самим grep. Нас интересует именно процесс sing-box.
Можно также посмотреть наличие бинарника:
which sing-box
Если ZeroBlock сообщает об ошибке запуска движка, системный журнал обычно даст гораздо больше информации, чем страница LuCI.
Где находится конфигурация
Основной файл:
/etc/config/zeroblock
Посмотреть его можно так:
cat /etc/config/zeroblock
Перед серьёзными экспериментами я рекомендую сделать копию:
cp /etc/config/zeroblock /etc/config/zeroblock.backup
Вернуть её можно командой:
cp /etc/config/zeroblock.backup /etc/config/zeroblock
/etc/init.d/zeroblock restart
Это особенно полезно, если вы начинаете экспериментировать с несколькими секциями и собственными правилами маршрутизации.
Не редактируем конфигурацию без необходимости
Хотя выше я показывал внутренние параметры /etc/config/zeroblock, это не означает, что их нужно сразу менять вручную.
Большая часть настроек доступна через LuCI, а файл конфигурации полезен прежде всего для диагностики и резервного копирования.
Особенно не стоит без понимания менять:
tproxy_mark
direct_mark
ctmark_dns
desync_mark
Это служебные значения, используемые ZeroBlock при маркировке и маршрутизации соединений.
Менять их по принципу «в интернете кто-то поставил другое число» - отличный способ устроить себе вечер с nft list ruleset, ip rule и вопросом, куда исчез интернет.
Если после настройки пропал интернет
Первым делом не нужно сбрасывать весь OpenWrt.
Останавливаем ZeroBlock:
/etc/init.d/zeroblock stop
Проверяем обычный доступ в интернет.
Если соединение восстановилось, проблема действительно находится в конфигурации ZeroBlock или связанного с ним сетевого движка.
После этого смотрим:
logread | grep -i zeroblock
Проверяем /etc/config/zeroblock, наличие секций и правильность интерфейса br-lan.
Если проблема появилась сразу после последнего изменения, проще вернуть резервную копию конфигурации, чем пытаться одновременно исправлять пять параметров.
Автозапуск
Проверить, включён ли ZeroBlock в автозагрузку, можно через:
/etc/init.d/zeroblock enabled && echo "Автозапуск включён"
При необходимости:
/etc/init.d/zeroblock enable
После этого сервис будет запускаться вместе с OpenWrt.
Что в итоге
ZeroBlock позволяет вынести настройку защищённых соединений и правил маршрутизации непосредственно на роутер OpenWrt. Это особенно удобно в домашней сети, где телевизоры, смартфоны, компьютеры и другие устройства используют один общий шлюз.
Особенность такого подхода заключается в централизованном управлении сетевыми подключениями. Не приходится настраивать отдельный клиент на каждом устройстве, а правила сети находятся в одном месте.
При первоначальной настройке я бы придерживался простой схемы:
OpenWrt -> ZeroBlock -> одна VPN-секция -> одно тестовое устройство
Когда эта конфигурация работает стабильно, уже можно постепенно добавлять дополнительные устройства и более сложные правила маршрутизации.
Если нужен отдельный классический VPN-сервер для доступа к собственной домашней сети, можно посмотреть мою инструкцию по WireGuard на одноплатнике. А если хочется собрать сам маршрутизатор на SBC, пригодится материал SBC как роутер: превращаем одноплатник в домашний шлюз.
И обязательно сохраняйте рабочую конфигурацию перед экспериментами. OpenWrt обычно прощает многое, но резервная копия всё равно быстрее философских размышлений перед роутером без интернета.
Понравилась статья?
Поставьте лайк и сохраните полезный материал в закладки.
Посетители, находящиеся в группе Гости, не могут оставлять комментарии к данной публикации.
Routerich AX3000: настройка роутера на OpenWrt, Mesh, TorrServer и сетевое хранилище
VPN только для выбранных сайтов и устройств в OpenWrt: раздельная маршрутизация трафика
Как выбрать LTE/5G-модем для Routerich AX3000: от простого E3372 до T77W968, T99W175 и FM350
Как проверить IP на блокировку в ТСПУ: рабочий Python-скрипт для диагностики
Nginx Proxy Manager: установка и первоначальная настройка reverse proxy с HTTPS в Docker
Как работают ТСПУ Роскомнадзора? Разбираемся вместе