Как настроить Tor bridge с obfs4 на VPS
Пошаговое руководство по запуску obfs4 моста на VPS. Вы узнаете параметры torrc, настройку портов, правила firewall и как проверить работу узла по логам в /var/log/tor/log.
Что такое Tor bridge и зачем он нужен
Tor bridge — это точка входа в сеть Tor, адрес которой не публикуется в общедоступном списке ретрансляторов. Этот список, называемый консенсусом, представляет собой подписанный документ, который может скачать любой желающий, включая цензора. Блокировка Tor на основе этого списка занимает немного времени: достаточно получить консенсус и заблокировать все содержащиеся в нем адреса на пограничном оборудовании. Мосты существуют потому, что опубликованный список является уязвимым местом. Адреса мостов выдаются небольшими порциями, поэтому один запрос не позволяет получить весь список целиком.
Неопубликованный адрес — это лишь часть решения. Технологии глубокого анализа пакетов (DPI), которые классифицируют трафик по содержимому, а не по адресу, распознают соединение Tor по структуре TLS (transport layer security) рукопожатия. Цензор, не имеющий списка адресов, все равно может определить, что трафик похож на Tor, и сбросить соединение. Pluggable transport устраняет этот признак. Он инкапсулирует поток Tor в другой протокол на стороне клиента, а ваш мост выполняет его распаковку.
obfs4 — это транспорт, который использует большинство мостов. Он преобразует поток в последовательность байтов без заголовков и фиксированного рукопожатия, поэтому DPI не находит шаблонов для сопоставления. Он также выполняет аутентификацию клиента. Значение cert= в строке конфигурации моста — это ключ, который клиент должен предъявить, чтобы мост начал отвечать. Это защищает от активного зондирования: цензор, который подключается к вашему адресу, чтобы проверить, работает ли там Tor, не получает ответа и не может ничего выяснить.
Какой pluggable transport выбрать?
- obfs4 требует один VPS, два TCP-порта и не нуждается в доменном имени. Это самый простой и полезный инструмент для запуска, именно он рассматривается в данном руководстве.
- WebTunnel скрывает соединение внутри обычного HTTPS-трафика, направленного на реальный веб-сайт. The Tor Project указывает следующие требования: статический IPv4-адрес, домен под вашим управлением, работающий веб-сервер (например, NGINX или Apache), действительный TLS-сертификат и не менее 1 GB оперативной памяти (рекомендуется 4 GB). Этот вариант подходит для сетей, где любой нетипичный трафик вызывает подозрения, так как страны, ограничивающие доступ к сети, обычно разрешают HTTPS-трафик для веб-серфинга.
- Snowflake — это другой тип вклада. Добровольцы запускают кратковременные WebRTC-прокси, поэтому точки входа постоянно меняются, и у цензора нет стабильного адреса для блокировки. Вы не управляете мостом для этого транспорта. Вы запускаете прокси, которому не нужен фиксированный адрес.
Начните с obfs4. Позже вы сможете добавить мост WebTunnel на другом IP-адресе: запуск обоих на одном IP приведет к тому, что блокировка одного адреса выведет из строя оба сервиса. Когда дойдете до этого шага, воспользуйтесь руководством как поднять приватный мост WebTunnel за nginx: такой мост не попадает в раздачу Tor, и строку моста получают только те, кому вы ее передадите сами.
Во что обходится запуск моста?
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 relay требуется 10 Мбит/с, при этом рекомендуется 16 Мбит/с. Это опубликованные требования, а не фактические измерения. Новый мост обычно работает значительно ниже своего минимума в течение нескольких недель. На той же странице требований указано, что реле должно передавать не менее 100 ГБ исходящего трафика в месяц, что покрывается даже самыми младшими тарифными планами, поэтому ознакомьтесь с реальной стоимостью небольшого VPS в месяц, прежде чем выбирать более мощную конфигурацию.
Поверхность для злоупотреблений невелика, и именно в этом многие ошибаются. Мост — это первый узел. Трафик, покидающий ваш сервер, направляется на другое реле Tor, а не на сайт, выбранный пользователем. Ваш IP-адрес никогда не появится в логах веб-сервера как источник запроса, поэтому жалобы, с которыми сталкиваются операторы exit relay, сюда не приходят. Тем не менее, изучите политику допустимого использования (AUP) вашего провайдера, так как некоторые хостинг-провайдеры рассматривают любой сервис Tor как особый случай. В этом отношении мост и onion-сервис являются зеркальными отражениями: мост полезен только тогда, когда его адрес доступен и в конечном итоге передается клиентам, в то время как v3 onion-сервис на таком же VPS полезен только до тех пор, пока ваш публичный IP остается скрытым.
Чего не стоит делать: превращать существующее публичное реле в мост с тем же адресом. Рекомендация Tor Project в этом случае — изменить «IP-адрес, имя и отпечаток» (fingerprint), так как старый адрес уже находится в консенсусе, который загружают цензоры. Мост, который еще на прошлой неделе был публичным реле, — это мост, который уже находится в черном списке.
Время безотказной работы (uptime) важнее скорости. В требованиях к реле сказано, что «если ваше реле не работает более 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. 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Сами по себе возможности (capabilities) не решают задачу. Параметр NoNewPrivileges в systemd запрещает процессу получать привилегии, которых не было у родительского процесса, а файловая возможность — это именно такой случай, поэтому 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_config. Неограниченный мост на сервере с доступом по паролю через 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-адресах, иначе блокировка одного IP приведет к отключению сразу двух мостов.
Что произойдет, если я изменю порт obfs4 позже?
Все уже распространенные строки мостов перестанут работать. Строка моста жестко связывает адрес, порт, отпечаток и сертификат, поэтому клиент со старой строкой будет пытаться подключиться к порту, на котором ничего не слушает, и в итоге прервет соединение. То же самое происходит при смене публичного IP-адреса сервера. Выберите порт во время настройки и не меняйте его в дальнейшем.