Технические характеристики стенда:
- Роутер: MediaTek Filogic 820 (ARM64), OpenWrt 22.03 / 24.10+, настроенный Podkop.
- Размещение бинарника: Наследуемый путь /usr/bin/openflux (размер ~3.1 МБ после UPX).
- Клиент: OpenFluxAndroid
ЧАСТЬ 1. Настройка Exit Node на роутере OpenWrt
Шаг 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
Проверка статуса работы:
1. Проверка процесса:
ps | grep openflux
В выводе должен присутствовать активный процесс /usr/bin/openflux --exit-node.
2. Проверка системного лога:
logread -e openflux
Должны отображаться строки Mode: EXIT NODE и Transport: yandex без ошибок связи.
ЧАСТЬ 2. Настройка клиента на Android
Шаг 1. Скачиваем OpenFluxAndroid от автора.
Шаг 2. В приложении нажимаем "Ввести вручную". Добавляем название тунеля и ссылку которую вы раннее скопировали.
Шаг 3. Нажимаем кнопку для подключения и тестируем.
ЧАСТЬ 3. Важные нюансы, тонкие настройки и решение проблем
1. Проблема с DNS и "Частным DNS" (Private DNS) на Android
Причина: OpenFlux маскирует только TCP-трафик. Стандартные DNS-запросы системы идут по UDP (порт 53) или DoT (порт 853), из-за чего система не может отрезолвить домены или блокирует сеть.
2. Подключение нескольких устройств (Оптимизация скорости)
Причина: Яндекс Документы накладывают лимиты на пропускную способность и частоту кадров (RPS) в рамках одной комнаты совместного редактирования. Если два устройства работают через одну ссылку, их скорость делится пополам и возникают задержки синхронизации.
Решение: Для каждого активного устройства создавайте отдельный документ на Яндекс Диске (отдельную ссылку).
Для роутера можно запустить второй инстанс openflux на другом порту/с другой ссылкой, прописав дополнительный инстанс в /etc/init.d/openflux
Впервые что-то пишу на GitHub, не пинайте.
Технические характеристики стенда:
ЧАСТЬ 1. Настройка Exit Node на роутере OpenWrt
Шаг 1. Передача бинарника с телефона/ПК на роутер
В Termux на смартфоне или консоли на ПК перейдите в каталог с собранным файлом и передайте его по локальной сети:
Примечание: Флаг -O критичен для OpenWrt, так как на роутере по умолчанию отсутствует sftp-server.
Шаг 2. Настройка прав и проверка бинарника
Подключитесь к роутеру по SSH (или открыв Terminal в веб-интерфейсе LuCI) и сделайте файл исполняемым:
Успех: На экране появится список аргументов и флагов OpenFlux.
Шаг 3. Создание службы автозапуска procd с обработкой nftables
Для устойчивости туннеля ядро Linux не должно отправлять TCP RST пакеты при разрывах сессий. В современных OpenWrt для этого используется nftables.
Создайте файл службы /etc/init.d/openflux, выполнив единый блок команд в терминале роутера:
Шаг 4. Активация и запуск службы
Активируйте автозапуск при загрузке роутера и запустите процесс:
Проверка статуса работы:
1. Проверка процесса:
ps | grep openfluxВ выводе должен присутствовать активный процесс /usr/bin/openflux --exit-node.
2. Проверка системного лога:
logread -e openfluxДолжны отображаться строки Mode: EXIT NODE и Transport: yandex без ошибок связи.
ЧАСТЬ 2. Настройка клиента на Android
Шаг 1. Скачиваем OpenFluxAndroid от автора.
Шаг 2. В приложении нажимаем "Ввести вручную". Добавляем название тунеля и ссылку которую вы раннее скопировали.
Шаг 3. Нажимаем кнопку для подключения и тестируем.
ЧАСТЬ 3. Важные нюансы, тонкие настройки и решение проблем
1. Проблема с DNS и "Частным DNS" (Private DNS) на Android
Причина: OpenFlux маскирует только TCP-трафик. Стандартные DNS-запросы системы идут по UDP (порт 53) или DoT (порт 853), из-за чего система не может отрезолвить домены или блокирует сеть.
2. Подключение нескольких устройств (Оптимизация скорости)
Причина: Яндекс Документы накладывают лимиты на пропускную способность и частоту кадров (RPS) в рамках одной комнаты совместного редактирования. Если два устройства работают через одну ссылку, их скорость делится пополам и возникают задержки синхронизации.
Решение: Для каждого активного устройства создавайте отдельный документ на Яндекс Диске (отдельную ссылку).
Для роутера можно запустить второй инстанс openflux на другом порту/с другой ссылкой, прописав дополнительный инстанс в /etc/init.d/openflux
Впервые что-то пишу на GitHub, не пинайте.