Тор (The Onion Router) – это сеть, позволяющая анонимизировать трафик. Обычные пользователи подключаются к публичным узлам, а разработчики и активисты могут развернуть собственный TOR‑мост (bridge), чтобы усложнить цензуру и повысить устойчивость сети. В этой статье мы покажем, как начать (start) процесс создания моста непосредственно на Android‑устройстве, используя Termux и язык программирования Go.
Для иллюстрации термина start мы опираемся на официальные словари: dictionary.cambridge.org определяет его как «to begin doing something», а merriam-webster.com подчёркивает значение «to begin an activity or undertaking». Эти определения помогают понять, что каждый шаг в нашем руководстве – это начало нового проекта.
Подготовка среды
Перед тем как приступить к сборке, убедитесь, что ваше устройство отвечает следующим требованиям:
- Android 8.0+ (желательно 10+ для лучшей совместимости).
- Доступ к интернету для загрузки пакетов.
- Выделенный объём памяти (минимум 512 МБ) для компиляции Go‑программ.
Установка Termux и необходимых пакетов
pkg update && pkg upgrade -y
pkg install -y git curl wget tar proot tar unzip
Для работы с Go понадобится собственный репозиторий:
curl -O https://dl.google.com/go/go1.22.5.linux-arm64.tar.gz
tar -C $HOME -xzf go1.22.5.linux-arm64.tar.gz
echo 'export PATH=$HOME/go/bin:$PATH' >> $HOME/.profile
source $HOME/.profile
Сборка и конфигурация TOR‑моста на Go
Проект torproject/tor написан на C, но мы будем использовать Go‑обёртку go-tor, которая упрощает запуск и управление процессом.
go install github.com/cretz/bine@latest
Создаём простой скрипт bridge.go:
package main
import (
"log"
"os"
"github.com/cretz/bine/tor"
"github.com/cretz/bine/torutil"
)
func main() {
// Путь к пользовательской директории данных TOR
dataDir := os.Getenv("HOME") + "/tor-data"
// Запускаем процесс TOR в режиме bridge
t, err := tor.Start(nil, &tor.StartConf{DataDir: dataDir, EnableBridgeRelay: true})
if err != nil {
log.Fatalf("Не удалось запустить TOR: %v", err)
}
defer t.Close()
// Выводим информацию о мосте
bridgeInfo, err := t.GetBridgeInfo()
if err != nil {
log.Fatalf("Не удалось получить информацию о мосте: %v", err)
}
log.Printf("Bridge fingerprint: %s", bridgeInfo.Fingerprint)
log.Printf("Bridge address: %s:%d", bridgeInfo.OrPort, bridgeInfo.OrPort)
}
Собираем бинарник:
go build -o bridge bridge.go
Настройка конфигурационного файла torrc
Для работы в режиме bridge‑relay необходимо добавить несколько параметров в torrc. Создаём файл $HOME/tor-data/torrc со следующим содержимым:
RunAsDaemon 1
DataDirectory $HOME/tor-data
ORPort 9001
BridgeRelay 1
PublishServerDescriptor 0
Exitpolicy reject :
Эти настройки указывают TOR‑демону работать как мост, не принимать выходной трафик и публиковать только сведения о себе.
Запуск и тестирование моста
Запускаем собранный бинарник:
./bridge &
Проверяем, что процесс слушает нужный порт:
netstat -tulnp | grep 9001
Для подтверждения корректной работы используем утилиту telnet:
telnet 127.0.0.1 9001
Если соединение устанавливается, ваш мост готов к приёму клиентских запросов. Для того чтобы другие пользователи могли воспользоваться вашим мостом, разместите его отпечаток (fingerprint) в каталоге bridges.torproject.org (опция «Add a custom bridge»).
Безопасность и оптимизация
- Ограничение доступа: используйте файрволл (например,
iptables) для разрешения только известных IP‑адресов. - Обновление TOR: регулярно обновляйте бинарники, чтобы получать патчи безопасности.
- Мониторинг: интегрируйте
logcatиsystemd-подобные сервисы Termux (termux-services) для автоматического перезапуска моста при падении. - Энергопотребление: запустите мост в режиме «low‑profile», задав параметр
MaxAdvertisedBandwidthвtorrc(например,MaxAdvertisedBandwidth 512 KB).
Заключение
Мы рассмотрели полный цикл создания собственного TOR‑моста на Android: от установки Termux и Go, через сборку Go‑обёртки, до конфигурации и безопасного запуска. Такой мост может стать важным элементом в борьбе с цензурой, а также полезным экспериментом для разработчиков, желающих глубже понять работу анонимных сетей.
Если вам нужна профессиональная поддержка в развертывании TOR‑инфраструктуры, настройке безопасных Android‑решений или разработке кастомных сетевых сервисов, обратитесь в RybinskLab. Мы предоставляем консалтинг, аудит безопасности и индивидуальную разработку под ваш проект.