Super Simple Clash - простой вариант для централизованного выборочного обхода блокировок
Сегодня мы поговорим о том, как установить и настроить Clash.Meta Kernel на маршрутизаторе с прошивкой OpenWrt без обвязок с избыточным функционалом. Ранее я уже рассказывал о различных способах централизованного выборочного обхода блокировок, включая использование OpenClash и v2rayA. В этом материале я хочу поделиться более легким и оптимизированным вариантом, который сделал для себя – SSClash. Его легко установить, легко посмотреть скрипты и правила в репозитории на GitHub и, при необходимости, внести правки для себя. Меньше кода - больше понимания как это работает. Наслаждайтесь. Простая установка, удобный веб-интерфейс и yacd (Yet Another Clash Dashboard).
Шаг 1: Обновление списка пакетов
Начнем с обновления списка пакетов на вашем маршрутизаторе.
opkg update
Шаг 2: Установка необходимых модулей
Для работы с nftables потребуется установить соответствующий модуль ядра.
opkg install kmod-nft-tproxy
Для iptables (если у вас версия OpenWrt < 22.03.x) – iptables-mod-tproxy
.
Шаг 3: Загрузка и установка пакета luci-app-ssclash
Скачиваем пакет luci-app-ssclash
и устанавливаем его.
curl -L https://github.com/zerolabnet/ssclash/releases/download/v1.8.1/luci-app-ssclash_1.8.1-1_all.ipk -o /tmp/luci-app-ssclash_1.8.1-1_all.ipk
opkg install /tmp/luci-app-ssclash_1.8.1-1_all.ipk
rm /tmp/*.ipk
Остановите службу, пока не отредактируете конфигурацию.
/etc/init.d/clash stop
Шаг 4: Загрузка ядра Clash.Meta
Перейдите в директорию bin
и загрузите ядро Clash.Meta, подходящее для вашей архитектуры.
cd /opt/clash/bin
Для amd64 архитектуры:
curl -L https://github.com/MetaCubeX/mihomo/releases/download/v1.18.9/mihomo-linux-amd64-compatible-v1.18.9.gz -o clash.gz
Для arm64 архитектуры:
curl -L https://github.com/MetaCubeX/mihomo/releases/download/v1.18.9/mihomo-linux-arm64-v1.18.9.gz -o clash.gz
Для mipsel_24kc архитектуры:
curl -L https://github.com/MetaCubeX/mihomo/releases/download/v1.18.9/mihomo-linux-mipsle-softfloat-v1.18.9.gz -o clash.gz
Если ваша архитектура другая, зайдите на страницу релизов MetaCubeX и выберите нужную версию.
Шаг 5: Подготовка исполняемого файла Clash
Распакуйте загруженный файл и сделайте его исполняемым.
gunzip clash.gz
chmod +x clash
Шаг 6: Управление Clash из интерфейса LuCI
Я написал простой интерфейс для управления Clash из интерфейса LuCI luci-app-ssclash
. Отредактируйте конфигурацию Clash и примените её.
Шаг 7: Вы можете получить доступ к Dashboard из интерфейса LuCI или вручную
Вы можете получить доступ к Dashboard по адресу:
http://ROUTER_IP:9090/ui/
Таким образом, вы получите оптимизированное и легкое решение для управления обходом блокировок на вашем маршрутизаторе с OpenWrt.
Удаление Clash
Если вам нужно удалить Clash, удалите все связанные файлы, пакет luci-app-ssclash
и модуль ядра kmod-nft-tproxy
или iptables-mod-tproxy
.
opkg remove luci-app-ssclash kmod-nft-tproxy
rm -rf /opt/clash
Дополнительная информация (необязательно): Автоматическое обновление правил Clash в OpenWrt при поднятии Интернет-интерфейса
Для того чтобы автоматически обновлять правила для Clash при поднятии Интернет-интерфейса в OpenWrt, выполните следующие действия:
Создание Shell-скрипта
1. Откройте терминал и создайте новый shell-скрипт с именем 40-clash_rules
в директории /etc/hotplug.d/iface/
:
vi /etc/hotplug.d/iface/40-clash_rules
2. Вставьте следующий код скрипта (при необходимости измените api_base_url
):
#!/bin/sh
# Add delay
sleep 10
# API IP address and port
api_base_url="http://192.168.1.1:9090"
# API URL
base_url="$api_base_url/providers/rules"
# Get JSON response with provider names
response=$(curl -s "$base_url")
# Extract provider names using standard utilities
providers=$(echo "$response" | grep -o '"name":"[^"]*"' | sed 's/"name":"\([^"]*\)"/\1/')
# Check if data retrieval was successful
if [ -z "$providers" ]; then
echo "Failed to retrieve providers or no providers found."
exit 1
fi
# Loop through each provider name and send PUT request to update
for provider in $providers; do
echo "Updating provider: $provider"
curl -X PUT "$base_url/$provider"
# Check success and output the result
if [ $? -eq 0 ]; then
echo "Successfully updated $provider"
else
echo "Failed to update $provider"
fi
done
# Service restart
/etc/init.d/clash reload
3. Сохраните и выйдите из редактора.
Это гарантирует, что правила для Clash будут обновлены сразу при поднятии Интернет-интерфейса в случае перезагрузки роутера.