OpenWrt обход белых списков: настройка Passwall, tun2socks и точечной маршрутизации

Подробное руководство по настройке OpenWrt для обхода белых списков: установка Passwall, сборка прошивки, настройка tun2socks и точечная маршрутизация через BGP и списки.

Что такое белые списки и зачем нужен обход на роутере

Белые списки — это механизм ограничения доступа, при котором разрешены только заранее одобренные ресурсы, а всё остальное блокируется. В отличие от чёрных списков, где запрещены конкретные адреса, белые списки требуют явного разрешения для каждого сайта или сервиса. Такой подход часто используется в корпоративных сетях, государственных системах и некоторых региональных интернет-провайдерах.

Настройка обхода белых списков на роутере с OpenWrt имеет несколько преимуществ перед установкой VPN на отдельные устройства. Во-первых, все устройства в домашней сети — компьютеры, смартфоны, телевизоры, игровые приставки — автоматически получают доступ к нужным ресурсам без индивидуальной настройки. Во-вторых, роутер работает круглосуточно, поэтому обход доступен даже когда компьютер выключен. В-третьих, централизованное управление позволяет гибко настраивать правила маршрутизации и быстро менять их при необходимости.

Важно понимать, что обход белых списков — это техническая задача, которая решается с помощью прокси-серверов, VPN-туннелей и специальных инструментов маршрутизации. В контексте OpenWrt наиболее популярными решениями являются Passwall, tun2socks и BGP-маршрутизация. Эти инструменты позволяют направлять трафик к заблокированным ресурсам через прокси, оставляя остальной трафик в обычном канале.

Подготовка роутера: требования к оборудованию и прошивке

Прежде чем приступать к настройке обхода белых списков, необходимо убедиться, что ваш роутер соответствует минимальным требованиям. Для работы Passwall и tun2socks рекомендуется устройство с объёмом оперативной памяти не менее 128 МБ, а лучше 256 МБ. Постоянная память должна быть больше 16 МБ, так как пакеты Passwall и дополнительные утилиты занимают значительный объём. Если встроенной памяти недостаточно, можно использовать USB-флешку для расширения корневой файловой системы (функция extroot).

В качестве базовой прошивки рекомендуется использовать стабильную версию OpenWrt 23.05.0 или более новую. В более ранних версиях, например 22.03.5, также возможна установка, но репозитории пакетов могут отличаться, и часть инструментов может быть недоступна. Перед началом работ обязательно сохраните текущую конфигурацию роутера и убедитесь, что у вас есть доступ к заводской прошивке на случай восстановления.

Также важно проверить, поддерживает ли ваше устройство установку кастомных прошивок. Список совместимых моделей можно найти в официальной таблице оборудования OpenWrt (Table of Hardware). Неправильная прошивка может превратить роутер в «кирпич», поэтому следуйте инструкциям для вашей конкретной модели.

Установка Passwall: два способа — репозиторий или сборка

Существует два основных способа установки Passwall на OpenWrt: установка из готового репозитория и сборка прошивки с необходимыми пакетами. Первый способ проще, но требует много свободной памяти — более 90 МБ. Если у вас недостаточно места, установка завершится ошибкой, и придётся переходить ко второму способу.

Для установки из репозитория необходимо добавить сторонние репозитории в конфигурацию opkg. Для версии 23.05 и выше используются репозитории lrdrdn/my-opkg-repo, а для 22.03.5 — 1andrevich/andrevichwrt. После добавления репозиториев выполняется команда opkg update, а затем установка пакетов luci-app-passwall, badvpn и kmod-tun. Если установка прошла успешно, можно переходить к настройке.

Сборка прошивки — более трудоёмкий, но надёжный способ, который позволяет включить все необходимые пакеты в образ и избежать проблем с памятью. Для сборки потребуется виртуальная машина или отдельный компьютер с Linux (например, Debian 11), не менее 10 ГБ свободного места и 4 ГБ оперативной памяти. Процесс включает клонирование исходного кода OpenWrt, добавление репозиториев Passwall, настройку конфигурации через make menuconfig и компиляцию образа. В конфигурацию необходимо добавить пакеты luci-app-passwall2, badvpn, kmod-tun и удалить dnsmasq, так как Passwall требует dnsmasq-full, а эти пакеты конфликтуют.

Настройка Passwall: добавление нод и резервирование

После установки Passwall переходим в веб-интерфейс LuCI, раздел «Службы» (Services) и выбираем PassWall 2. Первым делом необходимо добавить конфигурацию прокси-сервера в разделе «Node List». Passwall поддерживает множество протоколов: v2ray, xray, vless, vmess, hysteria, naiveproxy, shadowsocks, trojan и другие. Конфигурацию можно добавить в виде ссылки (например, из Outline VPN), и Passwall автоматически распознает формат.

Для обеспечения отказоустойчивости можно настроить резервирование нескольких нод. Во вкладке «Auto Switch» задаётся периодичность проверки доступности прокси (в минутах), список резервных нод и опция автоматического возврата на основной нод при его восстановлении. Это особенно полезно, если прокси-серверы периодически становятся недоступными.

В разделе «Basic Settings» выбираем основной нод, активируем главный переключатель (Main Switch) и включаем Localhost Proxy. Здесь же можно изменить порт SOCKS-прокси, который по умолчанию равен 1070. Этот порт понадобится для настройки tun2socks. После сохранения настроек рекомендуется проверить соединение, используя встроенные кнопки проверки (например, Google, Github).

Настройка tun2socks: создание туннеля и автозапуск

tun2socks — это утилита, которая позволяет направлять трафик в SOCKS-прокси через виртуальный сетевой интерфейс TUN. Это необходимо для того, чтобы использовать традиционные методы маршрутизации (iptables, nftables) для выборочного направления трафика в прокси. По умолчанию badvpn-tun2socks работает только с TCP-трафиком, для поддержки UDP потребуется альтернативная реализация, например xjasonlyu/tun2socks.

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

badvpn-tun2socks --tundev tun0 --netif-ipaddr 10.0.0.2 --netif-netmask 255.255.255.0 --socks-server-addr 127.0.0.1:1070

Здесь tun0 — имя туннельного интерфейса, 10.0.0.2 — IP-адрес интерфейса (не должен совпадать с локальной подсетью), а 127.0.0.1:1070 — адрес SOCKS-прокси Passwall. После запуска можно временно добавить маршрут к тестовому сайту и проверить, что трафик идёт через прокси.

Для автоматического запуска при загрузке роутера создаётся init-скрипт /etc/init.d/tun2socks. В скрипте задаются параметры интерфейса, порт и команды запуска. После создания скрипта необходимо сделать его исполняемым (chmod +x) и создать символьную ссылку в каталоге /etc/rc.d/. Проверить, что интерфейс появился, можно командой ip a | grep 'tun2'.

Точечная маршрутизация: BGP и списки адресов

После настройки tun2socks необходимо определить, какой трафик направлять через прокси. Существует два основных подхода: использование BGP для получения маршрутов от агрегаторов (например, antifilter.download, antifilter.network) и использование статических списков IP-адресов.

BGP-подход предполагает установку пакета bird2 и настройку обмена маршрутами с серверами, которые публикуют списки заблокированных ресурсов. Это позволяет автоматически получать актуальные маршруты и не обновлять списки вручную. Для этого в сборку прошивки добавляются пакеты bird2 и bird2c. После настройки BGP маршруты автоматически добавляются в таблицу маршрутизации, и трафик к заблокированным адресам направляется через туннель tun2socks.

Альтернативный подход — загрузка списков IP-адресов и настройка правил в iptables или nftables. Этот способ проще, но требует регулярного обновления списков. Можно использовать скрипты, которые скачивают списки с определённых сайтов и обновляют правила маршрутизации. Важно помнить, что для работы с nftables может потребоваться дополнительная настройка, так как не все версии OpenWrt поддерживают его из коробки.

Альтернативные пакеты: HomeProxy и luci-app-bypass

Помимо Passwall, существуют другие пакеты с похожим функционалом. Один из них — HomeProxy, который, по отзывам, требует меньше памяти для установки и поддерживает TUN-интерфейс. Это может быть хорошим выбором для роутеров с ограниченными ресурсами. HomeProxy также поддерживает множество протоколов и интегрируется с LuCI.

Другой вариант — luci-app-bypass, который занимает около 80 МБ при установке через opkg. Он также предоставляет графический интерфейс для настройки прокси и поддерживает различные протоколы. Однако из-за большого размера он может не подойти для устройств с малым объёмом постоянной памяти.

При выборе пакета важно учитывать не только функциональность, но и совместимость с вашей версией OpenWrt, а также наличие зависимостей. Некоторые пакеты могут конфликтовать с другими установленными компонентами, например с dnsmasq. Поэтому перед установкой рекомендуется изучить документацию и список зависимостей.

Решение проблем с памятью: extroot и оптимизация

Одной из самых частых проблем при установке Passwall и tun2socks является нехватка постоянной памяти. Если у вас роутер с малым объёмом ROM (например, 16 МБ), установка пакетов может завершиться ошибкой. В этом случае можно использовать функцию extroot, которая позволяет перенести корневую файловую систему на внешний носитель, например USB-флешку.

Для настройки extroot необходимо отформатировать флешку в подходящую файловую систему (например, ext4), подключить её к роутеру и выполнить несколько команд для копирования корневой файловой системы на внешний носитель. После перезагрузки роутер будет использовать флешку как основное хранилище, что значительно увеличит доступное пространство.

Также можно оптимизировать использование памяти, отключив неиспользуемые службы и удалив лишние пакеты. Например, если вы не используете UPnP или QoS, их можно отключить. Кроме того, при сборке прошивки можно исключить ненужные компоненты, чтобы уменьшить размер образа.

Проверка и отладка: как убедиться, что обход работает

После завершения настройки необходимо убедиться, что обход белых списков действительно работает. Для этого можно использовать несколько методов. Во-первых, проверьте, что туннельный интерфейс активен: ip a | grep 'tun2'. Если интерфейс присутствует, значит tun2socks запущен.

Во-вторых, проверьте, что трафик к заблокированному ресурсу идёт через прокси. Для этого можно использовать команду wget -qO- http://ipecho.net/plain | xargs echo, которая выведет IP-адрес, с которого выполняется запрос. Если выведенный IP совпадает с IP вашего прокси-сервера, значит маршрутизация работает.

В-третьих, проверьте доступность конкретных сайтов, которые были недоступны до настройки. Если они открываются, значит обход работает. Также можно посмотреть логи Passwall и tun2socks, чтобы убедиться, что соединения устанавливаются корректно. В случае проблем проверьте правильность настроек маршрутизации и доступность прокси-сервера.

Безопасность и юридические аспекты обхода белых списков

При использовании обхода белых списков важно помнить о юридических и этических аспектах. В некоторых странах обход государственных блокировок может быть запрещён законом, и его использование может повлечь административную или уголовную ответственность. Перед настройкой обхода ознакомьтесь с местным законодательством и оцените риски.

С технической точки зрения, использование прокси и VPN повышает конфиденциальность, но не гарантирует полную анонимность. Провайдер прокси-сервера может видеть ваш трафик, если не используется шифрование. Поэтому рекомендуется выбирать проверенных провайдеров и использовать протоколы с шифрованием, такие как vless, trojan или shadowsocks.

Также важно защитить сам роутер от несанкционированного доступа. Установите сложный пароль для веб-интерфейса, отключите удалённый доступ, если он не нужен, и регулярно обновляйте прошивку. Помните, что роутер является ключевым элементом вашей домашней сети, и его компрометация может привести к утечке данных.

Вопросы и ответы

Какие минимальные требования к роутеру для установки Passwall?

Для комфортной работы Passwall и tun2socks рекомендуется роутер с оперативной памятью не менее 128 МБ (лучше 256 МБ) и постоянной памятью более 16 МБ. Если встроенной памяти недостаточно, можно использовать USB-флешку с функцией extroot для расширения корневой файловой системы.

В чём разница между Passwall и HomeProxy?

Passwall — это полнофункциональный пакет с поддержкой множества протоколов (v2ray, xray, trojan, shadowsocks и др.), но он требует значительного объёма памяти. HomeProxy — более лёгкая альтернатива, которая также поддерживает TUN и требует меньше ресурсов, что делает его хорошим выбором для роутеров с ограниченной памятью.

Как добавить прокси-сервер в Passwall?

В веб-интерфейсе Passwall перейдите в раздел «Node List» и используйте опцию «Add the node via the link». Passwall автоматически распознает ссылки большинства форматов, включая ссылки из Outline VPN (shadowsocks). Также можно добавить несколько нод и настроить автоматическое резервирование.

Что такое tun2socks и зачем он нужен?

tun2socks — это утилита, которая создаёт виртуальный сетевой интерфейс TUN и направляет трафик в SOCKS-прокси. Она позволяет использовать стандартные методы маршрутизации (iptables, nftables) для выборочного направления трафика в прокси, что удобно при настройке точечного обхода блокировок.

Как настроить автоматический запуск tun2socks при загрузке роутера?

Создайте init-скрипт /etc/init.d/tun2socks с необходимыми параметрами (интерфейс, порт, IP-адрес), сделайте его исполняемым (chmod +x) и создайте символьную ссылку в /etc/rc.d/ (например, ln -s /etc/init.d/tun2socks /etc/rc.d/S90tun2socks). После этого служба будет запускаться автоматически.

Какие способы точечной маршрутизации существуют в OpenWrt?

Основные способы: использование BGP для получения маршрутов от агрегаторов (например, antifilter.download) и использование статических списков IP-адресов с настройкой правил в iptables или nftables. BGP-подход автоматизирует обновление маршрутов, а статические списки требуют ручного обновления.

Что делать, если не хватает памяти для установки Passwall?

Если установка завершается ошибкой из-за нехватки памяти, можно использовать функцию extroot для переноса корневой файловой системы на USB-флешку. Также можно собрать прошивку с уже включёнными пакетами, что позволит оптимизировать размер образа и избежать проблем с памятью.