OpenClash - централизованный выборочный обход блокировок на роутере

Вот мы и подошли к теме централизованного выборочного обхода блокировок, для этого у нас уже есть все необходимые инструменты и информация, которые описаны в предыдущих статьях. Есть отличная реализация Clash для работы на роутере с веб-конфигуратором для системы OpenWrt – OpenClash. В начале моих тестов OpenWrt с OpenClash работала в Proxmox на моем миниатюрном домашнем сервере, но потом на постоянку переехала на перешитый роутер Ubiquiti EdgeRouter X. Это я к тому, что если ваш роутер несовместим с OpenWrt, то эту систему легко можно установить как в виртуальную машину, так и на bare metal сервер, главное чтобы сетевых портов было достаточно.

На последней стабильной версии OpenWrt (на текущий момент 21.02.3) последнюю версию OpenClash которую можно установить – 0.44.42-beta. Все более поздние версии в зависимостях требуют установку пакета kmod-inet-diag (для правил PROCESS-NAME), к версии 21.02.3 которого нет в репозитории. Поэтому вариантов немного, либо установить snapshot build (к нему в репозитории есть необходимый пакет), либо собрать 21.02.3 самостоятельно и включить модуль ядра kmod-inet-diag при сборке, либо установить последнюю версию, не требующую данной зависимости. Я остановлюсь на последнем варианте. Если вы читаете эту статью в отдаленном будущем, то проверьте, наверняка пакет kmod-inet-diag уже есть в репозитории к стабильной версии прошивки и вы можете установить последнюю версию OpenClash.

Предварительно устанавливаем зависимости:

opkg update
opkg install dnsmasq-full --download-only && opkg remove dnsmasq && opkg install dnsmasq-full --cache . && rm *.ipk
opkg install wget-ssl coreutils-nohup bash iptables curl ca-certificates ipset ip-full iptables-mod-tproxy iptables-mod-extra libcap libcap-bin ruby ruby-yaml kmod-tun luci-compat

Устанавливаем OpenClash:

cd /tmp
wget https://github.com/vernesong/OpenClash/releases/download/v0.44.42-beta/luci-app-openclash_0.44.42-beta_all.ipk
opkg install luci-app-openclash_0.44.42-beta_all.ipk

Подчистим немного веб-интерфейс конфигуратора от китайских ненужностей на главной странице:

ssh [email protected]
cd /usr/lib/lua/luci/view/openclash
cp developer.htm developer.htm.bak
cat << EOF > developer.htm
<html>
</html>
EOF
cp myip.htm myip.htm.bak
cat << EOF > myip.htm
<html>
</html>
EOF
cd /usr/lib/lua/luci/model/cbi/openclash
cp client.lua client.lua.bak
sed -i 's/d.title = translate("Credits")/d.title = translate("")/g' client.lua

В настройках Global SettingsVersion Update в пункте Current Core нажимаем Download. В Config Manage загружаем подготовленный кофигурационный файл в формате yaml и нажимаем Apply Settings. Пример конфигурации можете посмотреть в предыдущей статье.

Другие мои настройки, отличные от настроек по умолчанию:

В качестве вышестоящего Custom DNS Servers у меня установлен AdGuard Home по адресу 192.168.1.3, это отражено в настройках выше и для этого включена опция Custom DNS Setting и отключена опция Append Upstream DNS. На этом все, можно проверять, что трафик на запрещенные ресурсы идет через настроенный прокси. Выбрать прокси можно в панели управления, их здесь аж две, стандартная Dashboard Control Panel и альтернативная Yacd Control Panel.