Как настроить Tor-мост с obfs4 на VPS
Пошаговое руководство по запуску Tor-моста с использованием obfs4 на VPS. Вы узнаете параметры torrc, настройку портов, правила firewall и как проверить работу по логам.
Что такое Tor-мост и зачем он нужен
Tor-мост — это точка входа в сеть Tor, адрес которой не публикуется в общедоступном списке ретрансляторов. Этот список, называемый консенсусом, представляет собой подписанный документ, который может скачать любой желающий, включая цензора. Блокировка Tor на основе этого списка занимает немного времени: достаточно получить консенсус и заблокировать на пограничном оборудовании все содержащиеся в нем адреса. Мосты существуют потому, что опубликованный список является уязвимым местом. Адреса мостов выдаются небольшими порциями, поэтому один запрос не позволяет получить весь набор целиком.
Неопубликованный адрес — это лишь половина решения. Технологии глубокого анализа пакетов (DPI), которые классифицируют трафик по его содержимому, а не по адресу, распознают соединение Tor по структуре его TLS (transport layer security) рукопожатия. Цензор, не имеющий списка адресов, все равно может определить, что «это похоже на Tor», и разорвать соединение. Pluggable transport устраняет этот признак. Он инкапсулирует поток Tor в другой протокол на стороне клиента, а ваш мост выполняет обратную операцию.
obfs4 — это транспорт, который использует большинство мостов. Он преобразует поток в байты без заголовков и фиксированного рукопожатия, поэтому у DPI нет шаблона для сопоставления. Он также выполняет аутентификацию клиента. Значение cert= в строке конфигурации моста — это ключ, который клиент должен предъявить, чтобы мост начал отвечать. Это защищает от активного зондирования: цензор, который подключается к вашему адресу, чтобы проверить, работает ли там Tor, не получает ответа и не может ничего выяснить.
Какой подключаемый транспорт (pluggable transport) выбрать?
- obfs4 требует один VPS, два TCP-порта и не нуждается в доменном имени. Это самый простой и эффективный вариант для запуска, именно он рассматривается в данном руководстве.
- WebTunnel скрывает соединение внутри обычного HTTPS-трафика, направленного на реальный веб-сайт. Tor Project предъявляет следующие требования: статический IPv4-адрес, домен под вашим управлением, работающий веб-сервер (например, NGINX или Apache), действительный TLS-сертификат, а также не менее 1 ГБ оперативной памяти (рекомендуется 4 ГБ). Этот вариант подходит для сетей, где подозрительным считается любой трафик, не похожий на обычный просмотр веб-страниц, так как в странах с жесткой цензурой HTTPS обычно разрешен.
- Snowflake — это другой тип вклада в сеть. Волонтеры запускают кратковременные WebRTC-прокси, поэтому точки входа постоянно меняются, и у цензора нет стабильного адреса для блокировки. Вы не управляете мостом для Snowflake. Вы запускаете прокси, которому не требуется фиксированный адрес.
Начните с obfs4. Позже вы сможете добавить мост WebTunnel на другом IP-адресе: запуск обоих сервисов на одном IP приведет к тому, что блокировка одного адреса выведет из строя оба моста.
Во что обходится работа моста?
The data behind this chart
[
{
"label": "Bridge, minimum",
"min_upstream_mbit": 1
},
{
"label": "Guard or middle relay, minimum",
"min_upstream_mbit": 10
},
{
"label": "Guard or middle relay, recommended",
"min_upstream_mbit": 16
}
]По состоянию на август 2026 года Tor Project требует от моста пропускную способность не менее 1 Мбит/с на входящий и исходящий трафик. Для guard- или middle-реле требуется 10 Мбит/с, при этом рекомендованное значение составляет 16 Мбит/с. Это опубликованные требования, а не фактические измерения. Новый мост обычно работает значительно ниже своего минимума в течение нескольких недель. Та же страница с требованиями указывает для реле минимум 100 ГБ исходящего трафика в месяц, что покрывается даже самыми младшими тарифными планами, поэтому ознакомьтесь с реальной стоимостью небольшого VPS в месяц, прежде чем выбирать более мощную конфигурацию.
Поверхность для злоупотреблений невелика, и это именно тот аспект, который многие понимают неверно. Мост является первым узлом. Трафик, покидающий ваш сервер, направляется на другое реле Tor, а не на сайт, выбранный пользователем. Ваш IP-адрес никогда не появится в логах веб-серверов как источник запроса, поэтому жалобы, с которыми сталкиваются операторы exit-реле, сюда не поступают. Тем не менее, проверьте правила допустимого использования (AUP) вашего хостинг-провайдера, так как некоторые из них выделяют любые сервисы Tor в особую категорию.
Чего точно не стоит делать: превращать существующее публичное реле в мост по тому же адресу. Рекомендация Tor Project в этом случае — изменить «IP-адрес, имя и отпечаток (fingerprint)», поскольку старый адрес уже содержится в консенсусе, который скачивают цензоры. Мост, который еще на прошлой неделе был публичным реле, — это мост, который уже находится в черном списке.
Аптайм важнее скорости. В требованиях к реле сказано, что «если ваш узел не работает более 2 часов в день, его полезность ограничена». Для моста это критичнее, чем для реле, так как у каждого клиента есть только один адрес без возможности переключения. Любая перезагрузка отключает всех пользователей. Настройте проверку TCP-порта в Uptime Kuma для порта obfs4, чтобы оперативно узнать, когда сервис перестанет отвечать.
Установка Tor из репозитория Tor Project
Пакеты в дистрибутивах устаревают, а мост — это средство обеспечения безопасности, которое должно быть актуальным. Сначала добавьте собственный репозиторий проекта.
sudo apt update
sudo apt install -y apt-transport-https gnupg wget lsb-release
wget -qO- https://deb.torproject.org/torproject.org/A3C4F0F979CAA22CDBA8F512EE8CBC9E886DDD89.asc | gpg --dearmor | sudo tee /usr/share/keyrings/deb.torproject.org-keyring.gpg >/dev/nullТеперь создайте файл источника. Строка Suites: должна содержать кодовое имя вашего релиза, поэтому считайте его из системы, а не вводите по памяти.
sudo tee /etc/apt/sources.list.d/tor.sources >/dev/null <<EOF
Types: deb deb-src
URIs: https://deb.torproject.org/torproject.org/
Suites: $(lsb_release -cs)
Components: main
Signed-By: /usr/share/keyrings/deb.torproject.org-keyring.gpg
EOF
sudo apt update
sudo apt install -y tor deb.torproject.org-keyring obfs4proxyЕсли apt update сообщает, что в репозитории отсутствует файл Release для вашего кодового имени, значит, Tor Project не поддерживает этот релиз. Удалите /etc/apt/sources.list.d/tor.sources, снова выполните sudo apt update и установите пакет tor, который предоставляет ваш дистрибутив. Все дальнейшие действия идентичны.
Пакет obfs4proxy поставляется непосредственно Debian и Ubuntu (версия 0.0.14 в Debian 13 по состоянию на август 2026 года). Уточните расположение бинарного файла, так как путь к нему потребуется для конфигурации:
command -v obfs4proxy || command -v lyrebirdРазработчики переименовали проект в lyrebird, поэтому в более новых пакетах может быть установлен /usr/bin/lyrebird. Используйте тот путь, который выведет эта команда.
Настройка моста в /etc/tor/torrc
BridgeRelay 1
ORPort 8443
ServerTransportPlugin obfs4 exec /usr/bin/obfs4proxy
ServerTransportListenAddr obfs4 0.0.0.0:9443
ExtORPort auto
ContactInfo you@example.com
Nickname PickANickname
BridgeDistribution anyКаждая из этих строк может стать причиной сбоя, поэтому разбирайте их по очереди.
BridgeRelay 1 указывает tor отправлять дескриптор в центр авторизации мостов (bridge authority) вместо публикации в общем консенсусе. Именно эта строка делает ретранслятор скрытым.
ORPort — это основной порт Tor. Он должен быть доступен из Интернета, так как tor проверяет его и отказывается публиковать дескриптор, пока проверка не будет пройдена.
ServerTransportPlugin задает команду для запуска. tor запускает obfs4proxy как дочерний процесс и взаимодействует с ним через канал (pipe), поэтому у obfs4proxy нет собственного юнита службы, и он не отображается в systemctl status.
ServerTransportListenAddr фиксирует порт, на котором прослушивает obfs4proxy. Если пропустить эту строку, obfs4proxy будет выбирать свободный порт при каждом запуске, и после большинства перезагрузок порт будет меняться. В результате все ранее выданные вами строки моста будут указывать на порт, где никто не слушает. Клиенты получат отказ в соединении и прекратят попытки подключения.
ExtORPort auto открывает расширенный ORPort — канал обратной связи (loopback), который obfs4proxy использует для передачи завершенных соединений в tor вместе с адресом клиента. Руководство по настройке от The Tor Project включает этот параметр для каждого моста, так как без него транспорт не сможет передать адрес клиента в tor.
ContactInfo и Nickname являются публичными данными. Укажите адрес, который вы проверяете, так как через него The Tor Project свяжется с вами в случае неисправности моста. Выберите псевдоним, который не деанонимизирует вас, если вы хотите сохранить конфиденциальность.
BridgeDistribution определяет, какой дистрибьютор будет выдавать ваш адрес пользователям. Допустимые значения: https, email, telegram, settings, none и any. Используйте any для первого моста, чтобы система выбрала дистрибьютор автоматически. Используйте none для частного моста, который вы распространяете самостоятельно; это полностью исключает адрес из публичного распределения.
Почему важен выбор порта
Не используйте 9001 для обоих портов. The Tor Project прямо указывает на это, так как 9001 является традиционным ORPort, и цензоры сканируют интернет в его поиске. Эти два порта также должны отличаться друг от друга, поскольку tor и obfs4proxy создают собственные слушающие сокеты.
Наиболее эффективный порт для obfs4 — 443. Исходящий трафик на 443 открыт почти в любой ограниченной сети, а длительное соединение по этому порту выглядит как обычная веб-сессия. Для привязки к порту ниже 1024 требуется дополнительный шаг, так как obfs4proxy не запускается от имени root:
sudo setcap cap_net_bind_service=+ep /usr/bin/obfs4proxy
sudo systemctl edit tor@.service tor@default.serviceДобавьте эти две строки в каждый открывшийся редактор:
[Service]
NoNewPrivileges=noСама по себе capability не решает задачу. Параметр NoNewPrivileges в systemd запрещает процессу получать привилегии, которых не было у родительского процесса, а файловая capability является именно такой привилегией, поэтому obfs4proxy не может привязаться к 443, пока эта настройка активна.
Если вы хотите пропустить этот шаг, выберите неприметный высокономерной порт и запишите его. Что бы вы ни выбрали, не меняйте порт obfs4 в дальнейшем. Строка моста (bridge line) жестко связывает адрес, порт, отпечаток (fingerprint) и сертификат, поэтому любая копия, уже сохраненная в браузере пользователя, перестанет работать в момент смены порта.
Откройте порты на обоих межсетевых экранах
sudo ufw allow 8443/tcp
sudo ufw allow 9443/tcp
sudo ufw statusНеобходимо открыть оба порта. Большинство провайдеров используют второй межсетевой экран в панели управления, о котором ufw ничего не знает. Правило, существующее на сервере, но не в панели, создает мост, который будет недоступен и не опубликует дескриптор. Если какая-либо из этих частей для вас нова, правила ufw для нового VPS и что такое слушающий порт в Linux содержат необходимые пояснения. Заодно защитите SSH с помощью ключей и настроенной конфигурации sshd. Неограниченный мост на сервере с доступом по паролю через SSH — это по-прежнему сервер с доступом по паролю через SSH.
Запуск и чтение лога
sudo systemctl enable --now tor.service
sudo systemctl restart tor.service
sudo journalctl -e -u tor@defaultВ Debian и Ubuntu поставляются два юнита. tor.service — это небольшая обертка, а tor@default.service — процесс, выполняющий основную работу. Поэтому journalctl -u tor выглядит почти пустым, а нужный вам лог находится в tor@default.
Две строки подтверждают успешную работу:
Self-testing indicates your ORPort is reachable from the outside. Excellent. Publishing server descriptor.
Registered server transport 'obfs4' at '0.0.0.0:9443'Первая означает, что тест доступности пройден и дескриптор отправлен в bridge authority. Если эта строка не появляется, значит, где-то между интернетом и вашим сервером блокируется трафик к ORPort. Вторая строка должна содержать порт, который вы настроили. Если там указан другой порт, значит, tor не применил ServerTransportListenAddr. Обычно это происходит из-за несовпадения имени транспорта: оно должно быть одинаковым в obfs4 в обеих директивах.
Убедитесь, что оба слушающих сокета активны:
sudo ss -lntp | grep -E 'tor|obfs4|lyrebird'Где находится моя строка моста?
obfs4proxy записывает шаблон в каталог данных tor:
sudo cat /var/lib/tor/pt_state/obfs4_bridgeline.txtЭтот каталог принадлежит пользователю tor и имеет права доступа 700, поэтому без sudo вы получите Permission denied. Файл содержит строку следующего вида:
Bridge obfs4 <IP ADDRESS>:<PORT> <FINGERPRINT> cert=<CERTIFICATE> iat-mode=0Замените <IP ADDRESS> на публичный адрес вашего сервера, <PORT> на порт obfs4 (а не ORPort), а <FINGERPRINT> на идентификационный отпечаток (fingerprint), который tor записал в свой каталог данных:
sudo cat /var/lib/tor/fingerprint
sudo cat /var/lib/tor/hashed-fingerprintВ первом файле содержатся ваш псевдоним и идентификационный отпечаток, который должен быть в строке моста. Во втором файле находится хешированный отпечаток; его нужно вставить в Relay Search, чтобы проверить, запущен ли ваш мост и сколько примерно клиентов к нему подключается. Эти значения не взаимозаменяемы. Строка моста, содержащая хешированное значение, не совпадает с идентификационным ключом, который предоставляет ваш мост, поэтому клиент отклонит только что открытое соединение.
Как мост фактически достигает пользователей?
Вы не передаете строку подключения к мосту кому-либо напрямую. Как только дескриптор достигает центра управления мостами (bridge authority), система распределения (rdsys, преемник BridgeDB) назначает ваш мост одному из дистрибьюторов, а пользователи запрашивают мосты у этого дистрибьютора. По состоянию на август 2026 года маршруты выглядят следующим образом:
- Веб-форма на bridges.torproject.org/options, которая выдает строки подключения к мостам после прохождения капчи.
- Электронное письмо на адрес bridges@torproject.org с почты Gmail или Riseup, в ответ на которое приходят строки подключения. Ограничение по провайдерам существует, так как неограниченные бесплатные учетные записи позволили бы цензору перечислить все существующие мосты.
- Telegram-бот @GetBridgesBot. Отправьте
/start, затем/obfs4или/webtunnel. - Сам Tor Browser, в разделе «Настройки» (Settings), затем «Соединение» (Connection), где опция «Запросить мосты» (Request bridges) получает их через канал moat.
Новый мост появляется в Relay Search примерно через три часа после настройки. У пользователей это занимает гораздо больше времени: по формулировке самого Tor Project, «может потребоваться несколько дней или недель, прежде чем вы увидите стабильный поток пользователей». Спокойные первые две недели — это нормальное явление, а не ошибка.
Настройка BridgeDistribution none отключает все вышеперечисленные способы распространения. В этом случае строка подключения к мосту остается только у вас, и вы можете передать её тем, кто в ней нуждается, через канал, который не просматривается цензором.
Когда что-то не работает
В логе нет строки о самотестировании. ORPort недоступен. Проверьте его с другой машины с помощью nc -vz your.ip 8443. Зависание означает, что пакеты отбрасываются, поэтому проверьте ufw и панель управления провайдера. Отказ в соединении означает, что tor не слушает порт, поэтому проверьте ss -lntp и изучите лог на предмет ошибок конфигурации.
Зарегистрированный транспорт показывает порт, который вы не выбирали. tor проигнорировал ServerTransportListenAddr. Имя транспорта должно в точности совпадать с указанным в ServerTransportPlugin, и оба должны быть obfs4.
obfs4proxy не может занять порт 443. Подтвердите наличие прав с помощью getcap /usr/bin/obfs4proxy, затем убедитесь, что переопределение применено к юниту через systemctl show tor@default -p NoNewPrivileges. Если команда выводит NoNewPrivileges=yes, значит, ваш drop-in файл был применен к неактивному юниту.
Внутри /var/lib/tor/pt_state/ пусто. tor не запустил транспорт, что означает неверный путь в ServerTransportPlugin. Сравните его с выводом command -v obfs4proxy.
Клиенты перестали подключаться после изменений. Любое изменение адреса или порта obfs4 делает недействительными все ранее распространенные строки bridge. Проверьте, не изменился ли публичный IP-адрес сервера, что случается при пересборке у некоторых провайдеров.
tor не запускается совсем. Выполните sudo -u debian-tor tor --verify-config -f /etc/tor/torrc. Эта команда анализирует файл, выводит строку, на которую указывает ошибка, и не затрагивает работающий сервис.
FAQ
Будет ли провайдер VPS жаловаться на Tor-мост?
Мост является точкой входа, поэтому трафик, покидающий ваш сервер, направляется к другим реле Tor, а не на сайты, которые посещают пользователи. Ваш IP-адрес не отображается в логах веб-серверов как источник запроса, что и является причиной жалоб, с которыми сталкиваются операторы выходных узлов. Правила хостинга различаются, и некоторые провайдеры рассматривают любой сервис Tor как особый случай. Ознакомьтесь с политикой допустимого использования перед началом работы и укажите адрес, который вы проверяете, в ContactInfo.
Сколько пропускной способности потребляет Tor-мост?
Опубликованный минимум составляет 1 Мбит/с на отдачу и загрузку, по сравнению с 10 Мбит/с для guard- или middle-реле. Реальное потребление начинается почти с нуля, так как ваш мост передает трафик только для тех пользователей, которых направляет к нему дистрибьютор. Если вы хотите установить жесткий лимит, настройте RelayBandwidthRate и RelayBandwidthBurst в файле torrc.
Почему никто не подключился к моему новому мосту?
Мосту требуется около трех часов, чтобы появиться в Relay Search, а согласно рекомендациям Tor Project, формирование постоянной аудитории пользователей занимает от нескольких дней до недель. Убедитесь, что дескриптор опубликован (это строка самотестирования в journalctl -u tor@default), найдите свой хешированный отпечаток (fingerprint) в Relay Search и подтвердите, что параметр BridgeDistribution не установлен в none.
Что лучше запустить: obfs4 или WebTunnel?
Запустите obfs4, если это ваш первый мост: один VPS, два порта, отсутствие домена и сертификата. Запускайте WebTunnel там, где блокируется сам трафик, выглядящий как случайный, поскольку для него требуется домен под вашим контролем, работающий веб-сервер, действительный TLS-сертификат и не менее 1 ГБ оперативной памяти. Если вы запускаете оба, разместите их на разных адресах, иначе блокировка одного IP приведет к отключению сразу двух мостов.
Что произойдет, если я изменю порт obfs4 позже?
Все уже распространенные строки подключения к мосту перестанут работать. Строка моста жестко привязывает адрес, порт, отпечаток и сертификат, поэтому клиент со старой строкой будет пытаться открыть соединение с портом, на котором ничего не прослушивается, и прервет попытку. То же самое происходит при смене публичного IP-адреса сервера. Выберите порт во время настройки и не меняйте его в дальнейшем.