-
Notifications
You must be signed in to change notification settings - Fork 103
Exit node OpenWRT
Технические характеристики стенда:
- Роутер: MediaTek Filogic 820 (ARM64), OpenWrt 22.03 / 24.10+, настроенный Podkop.
- Размещение бинарника: Наследуемый путь /usr/bin/openflux (размер ~3.1 МБ после UPX).
- Клиент: OpenFluxAndroid
Шаг 1. Передача бинарника с телефона/ПК на роутер В Termux на смартфоне или консоли на ПК перейдите в каталог с собранным файлом и передайте его по локальной сети:
cd ~/OpenFlux
scp -O openflux root@192.168.1.1:/usr/bin/Примечание: Флаг -O критичен для OpenWrt, так как на роутере по умолчанию отсутствует sftp-server.
Шаг 2. Настройка прав и проверка бинарника Подключитесь к роутеру по SSH (или открыв Terminal в веб-интерфейсе LuCI) и сделайте файл исполняемым:
chmod +x /usr/bin/openflux
/usr/bin/openflux --helpУспех: На экране появится список аргументов и флагов OpenFlux.
Шаг 3. Создание службы автозапуска procd с обработкой nftables Для устойчивости туннеля ядро Linux не должно отправлять TCP RST пакеты при разрывах сессий. В современных OpenWrt для этого используется nftables.
Создайте файл службы /etc/init.d/openflux, выполнив единый блок команд в терминале роутера:
cat << "EOF" > /etc/init.d/openflux
#!/bin/sh /etc/rc.common
START=99
STOP=10
USE_PROCD=1
PROG=/usr/bin/openflux
URL="ваша ссылка на Яндекс Документ, ВАЖНО: ссылка должна быть такого вида: https://disk.yandex.ru/edit/**"
start_service() {
# Блокировка отправки RST-пакетов через nftables
nft add table inet openflux_table 2>/dev/null
nft add chain inet openflux_table output "{ type filter hook output priority 0; }" 2>/dev/null
nft add rule inet openflux_table output tcp flags rst drop 2>/dev/null
procd_open_instance
procd_set_param command $PROG --exit-node --url "$URL"
procd_set_param respawn
procd_set_param stdout 1
procd_set_param stderr 1
procd_close_instance
}
stop_service() {
nft delete table inet openflux_table 2>/dev/null
}
EOFШаг 4. Активация и запуск службы Активируйте автозапуск при загрузке роутера и запустите процесс:
chmod +x /etc/init.d/openflux
/etc/init.d/openflux enable
/etc/init.d/openflux start- Проверка процесса:
ps | grep openfluxВ выводе должен присутствовать активный процесс /usr/bin/openflux --exit-node.
- Проверка системного лога:
logread -e openfluxДолжны отображаться строки Mode: EXIT NODE и Transport: yandex без ошибок связи.
Шаг 1. Скачиваем OpenFluxAndroid от автора. Шаг 2. В приложении нажимаем "Ввести вручную". Добавляем название тунеля и ссылку которую вы раннее скопировали. Шаг 3. Нажимаем кнопку для подключения и тестируем.
-
Проблема с DNS и "Частным DNS" (Private DNS) на Android Причина: OpenFlux маскирует только TCP-трафик. Стандартные DNS-запросы системы идут по UDP (порт 53) или DoT (порт 853), из-за чего система не может отрезолвить домены или блокирует сеть.
-
Подключение нескольких устройств (Оптимизация скорости) Причина: Яндекс Документы накладывают лимиты на пропускную способность и частоту кадров (RPS) в рамках одной комнаты совместного редактирования. Если два устройства работают через одну ссылку, их скорость делится пополам и возникают задержки синхронизации.
Решение: Для каждого активного устройства создавайте отдельный документ на Яндекс Диске (отдельную ссылку). Для роутера можно запустить второй инстанс openflux на другом порту/с другой ссылкой, прописав дополнительный инстанс в /etc/init.d/openflux
Источник: #44 — спасибо автору issue