Ниже — практический, но ответственный гайд по созданию автономного TOR‑ретранслятора в Android‑среде через Termux, с возможностью работы со скрытыми сервисами. Материал ориентирован на администраторов, инженеров и энтузиастов, которые хотят поднять узел для повышения отказоустойчивости и разнообразия сети Tor.
Важно: настройка ретрансляторов и скрытых сервисов должна выполняться законно и только с учетом требований применимого законодательства РФ и правил платформ/провайдеров. Использование должно быть направлено на администрирование собственного узла, а не на обход ограничений доступа к внешним ресурсам. Если вы применяете VPN, то исключительно для организации локальной сети/маршрутизации внутри вашей инфраструктуры.
Требования и ограничения
- Устройство: Android‑смартфон/планшет с Termux.
- Доступ к сети: стабильный интернет (в идеале — статический внешний IP или управляемый канал).
- Порты: Tor‑ретранслятор обычно использует 9001/9003 и/или другие порты, а скрытые сервисы — порты на уровне Tor (локально).
- Правила брандмауэра/роутера: при размещении узла за NAT могут понадобиться пробросы портов.
- Производительность: Tor чувствителен к задержкам и стабильности соединения; мобильные сети менее стабильны.
В терминах безопасности: ретранслятор должен работать на минимально привилегированном пользователе, с корректными правами на ключи и каталог конфигураций.
Подготовка Termux: окружение и обновление пакетов
Начните с базовой подготовки. В Termux выполните обновление пакетов и установите необходимые утилиты.
pkg update -y && pkg upgrade -ypkg install -y tor curl net-tools openssl proot nano wgetЕсли пакет tor в вашей сборке Termux недоступен или версия не подходит, вы можете собрать Tor из исходников (см. раздел про сборку). Однако для большинства задач подойдет пакетная установка.
Проверка версии Tor и базовых компонентов
Проверьте, что Tor реально установлен и запускается.
tor --versionДалее создадим рабочие каталоги. Рекомендуется хранить конфигурацию и данные отдельно, чтобы их было удобно обновлять и бэкапить.
mkdir -p $HOME/tor-state $HOME/tor-state/keys $HOME/tor-state/etcСоздание конфигурации Tor
В Termux удобно хранить конфиг в $HOME. Ниже — стартовый пример файла torrc. Он задает ретранслятор как отдельную сущность и закладывает инфраструктуру для скрытых сервисов.
Создайте конфиг:
nano $HOME/tor-state/torrcВставьте базовую конфигурацию (адаптируйте порты и параметры под вашу сеть):
## РЕШАТЬ КОНКРЕТНО ДЛЯ ВАШЕГО УЗЛА:
- ContactInfo: контактный адрес для админов Tor (адрес или ник)
- ORPort: порт для входящего трафика ретранслятора
- Nickname: удобное имя узла
- DataDirectory: каталог состояния/ключей
DataDirectory $HOME/tor-state
RunAsDaemon 0
Log notice file $HOME/tor-state/notice.log
Сеть Tor (классический режим)
SocksPort 0
SOCKSPort 0
ТОР РЕТРАНСЛЯТОР
ORPort 9001
Nickname "termux-rybinsklab-relay"
ContactInfo "admin@example.com"
Публичная адресация.
Если вы за NAT, и ORPort доступен снаружи — укажите MyExternalAddress.
Иначе Tor будет пытаться определять адрес сам.
# MyExternalAddress YOUR_PUBLIC_IP_OR_DNS_NAME
Обязательные параметры безопасности
# Обратите внимание: права на файлы ключей должны быть корректными.
HiddenServiceDir $HOME/tor-state/hidden-service/
HiddenServicePort 80 127.0.0.1:8080
Ограничения (пример)
ExitPolicy reject :
# Для ретранслятора не делайте ExitPolicy open, если не планируете выходной узел.
# Также можно включить Bandwidth ограничения при необходимости.Пояснения к ключевым строкам:
- DataDirectory — где Tor хранит ключи и состояние.
- ORPort — входящий порт ретранслятора.
- SocksPort 0 — ретранслятор не обязан предоставлять socks‑прокси пользователям.
- HiddenServiceDir и HiddenServicePort — включение скрытого сервиса: Tor будет публиковать .onion и проксировать трафик на локальный порт сервиса (здесь
127.0.0.1:8080). - ExitPolicy reject — по умолчанию в примере узел не является выходным (это безопаснее и снижает риск злоупотреблений).
Подготовка скрытого сервиса: локальный веб-ресурс
Чтобы скрытый сервис был доступен, на локальном адресе 127.0.0.1:8080 должен работать сервис (например, простой HTTP сервер). В этом разделе — безопасный минимальный стенд.
Установим легковесный веб‑сервер. Можно использовать python (часто доступен в Termux). Если его нет — установите python.
pkg install -y pythonСоздадим простую страницу и запустим HTTP сервер на 127.0.0.1:8080.
cat > $HOME/tor-state/index.html <<'EOF'
<!doctype html>
<html><body>
<h1>Tor hidden service on Termux</h1>
<p>OK</p>
</body></html>
EOFcd $HOME/tor-state && python -m http.server 8080 --bind 127.0.0.1Примечание: эту команду лучше запускать в отдельной сессии (например, через tmux, если вы его используете), чтобы параллельно стартовать Tor.
Старт Tor-ретранслятора в Termux
Убедитесь, что у Tor есть права на каталог состояния.
chmod -R 700 $HOME/tor-state
chmod 700 $HOME/tor-state/keys 2>/dev/null || trueЗапустите Tor, указав конфиг:
tor -f $HOME/tor-state/torrcЕсли вы запускаете в фоне, используйте аккуратный способ (зависит от вашей среды). Для проверки логов смотрите:
tail -n 200 $HOME/tor-state/notice.logПолучение адреса скрытого сервиса (.onion)
После успешной инициализации скрытого сервиса Tor создаст ключи в HiddenServiceDir. Адрес формируется на основе ключа.
Проверьте содержимое файла с адресом:
cat $HOME/tor-state/hidden-service/hostnameЕсли файл еще не создан, подождите несколько секунд/минут и снова посмотрите логи.
Настройка корректной доступности ORPort (NAT и проброс портов)
Если устройство находится за роутером, необходимо обеспечить входящий доступ к ORPort.
- На роутере настройте port forwarding: внешний порт (например, 9001 TCP/UDP — в зависимости от режима) должен форвардиться на внутренний IP вашего устройства.
- Убедитесь, что внешний IP/домен корректно соответствует вашему адресу для узла. Если Tor не может определить его сам, используйте строку
MyExternalAddress. - Если у вас динамический IP, рассмотрите DNS с динамическими обновлениями, но делайте это корректно и прозрачно.
Активация релейного поведения и контроль логов
Проверьте, что Tor видит себя как relay. В логах должны быть признаки настройки ORPort и запуска onion/hidden service.
grep -E "Bootstrapped|ORPort|HiddenService|hostname|Self-testing" $HOME/tor-state/notice.log | tail -n 50Для администрирования важно вести учет:
- Ошибок в конфиге.
- Событий создания/загрузки ключей скрытых сервисов.
- Статуса слушающих портов (локальных и входящих).
Защита ключей и файлов конфигурации
Секреты скрытых сервисов и ключи узла хранятся в DataDirectory. Для снижения риска утечки:
- Ограничивайте права: каталог
$HOME/tor-stateдолжен быть недоступен другим. - Старайтесь не публиковать логи с секретами.
- Делайте бэкап каталога
$HOME/tor-state(или хотя быhidden-service), но только безопасно.
Пример бэкапа (осторожно с хранением):
tar -czf $HOME/tor-state-backup.tgz -C $HOME tor-stateРежим “автономности” в Termux: устойчивость к остановке сессии
Termux не всегда “доживает” длительно при блокировке экрана/уходе системы в сон. Для автономной работы используйте механизмы, доступные в вашем Android‑окружении:
- Проверьте настройки энергосбережения (исключите Termux из ограничений).
- Используйте сессионный менеджер (например,
tmux), чтобы Tor и локальный сервис не завершались при разрыве SSH/сеанса. - Настройте запуск Tor по событию загрузки/перезапуска, если в вашем устройстве это возможно. Делайте это только в рамках правил вашей ОС.
Если вы хотите использовать tmux:
pkg install -y tmuxtmux new -s torrelayДалее в окне tmux запускайте локальный сервис и Tor (или два окна tmux).
Поддержка скрытых сервисов: практические советы
Скрытые сервисы полезны для публикации вашего сервиса без прямого открытия портов наружу. Но важно правильно настроить локальный бэкенд:
- Бэкенд должен слушать 127.0.0.1 и порт, указанный в
HiddenServicePort. - Следите за тем, чтобы бэкенд был устойчивым и быстро отвечал.
- Логи бэкенда не должны содержать секреты.
Если нужно проксировать на другой порт, поменяйте строку:
HiddenServicePort 80 127.0.0.1:8080Сборка Tor из исходников (если пакетная версия не подходит)
Иногда требуется конкретная версия Tor или расширения. В этом случае можно собрать Tor из исходников. Ниже — общий каркас. Точные зависимости и параметры зависят от релиза и вашей среды Termux.
Внимание: сборка сложнее, дольше и требует аккуратности. Если пакет tor доступен и версия удовлетворяет — проще использовать его.
Общий шаблон:
pkg install -y git clang make automake autoconf libtool pkg-configmkdir -p $HOME/src && cd $HOME/src
git clone https://git.torproject.org/tor/tor.git
cd tor
# Далее обычно требуется сконфигурировать сборку и собрать бинарники,
# но команды могут отличаться в зависимости от релиза и окружения.После сборки вы сможете использовать собранный бинарник. Однако конкретные команды ./configure и выбор опций лучше подбирать под вашу цель (например, минимизация или поддержка нужных функций).
Ошибки, которые чаще всего мешают запуску
- Конфиг не читается: проверьте синтаксис
torrc, пути и наличие каталогов. - Не создается hostname: локальный сервис на
127.0.0.1:8080не запущен или недоступен. - Relay не доступен снаружи: отсутствует проброс ORPort, неверный
MyExternalAddressили блокировка на стороне сети. - Проблемы с правами: неверные права на каталоги/ключи.
Заключение
Выше — полный практический план: подготовка Termux, создание torrc под ретранслятор и скрытый сервис, запуск локального бэкенда, старт Tor и получение .onion‑адреса, а также базовые практики безопасности и устойчивости работы в мобильной среде.
Если вы хотите, чтобы ваш узел был настроен под вашу сеть (NAT/пробросы/логика бэкенда), или требуется аудит конфигурации и помощь с запуском в автономном режиме, обращайтесь в РыбинскЛАБ — поможем спроектировать, развернуть и сопровождать решение.