Наслоение VPN, Tor и прокси приложения кажется умножением приватности, а на деле умножает число мест, где соединение может умереть. Обычный результат — браузер, который крутится, пока все три инструмента сообщают, что здоровы. Если изменить все три настройки сразу, исчезнет единственная подсказка о том, какой из них лжёт.

Сначала нарисуйте предполагаемый путь по порядку, назвав, какая программа открывает каждое соединение и какое имя разрешается на каждом шаге.

Слои не складываются, они взаимодействуют

VPN перед Tor означает, что входное соединение клиента Tor идёт внутри туннеля. VPN, переносимый через Tor, означает, что собственная конечная точка клиента VPN должна быть доступна через Tor, а это совсем другое требование. Прокси браузера добавляет ещё один скачок, о котором операционная система ничего не знает. Три схемы, три отдельных списка зависимостей.

Каждая схема меняет то, что можно разрешить, что можно перенести и кто видит первый пакет. Только одна из них может быть той конфигурацией, которую вы имели в виду.

Добавьте на схему и прямой путь. Резервный маршрут, исключение для разделённого туннеля или обход прокси могут загрузить страницу, тихо пропуская цепочку, которую вы хотели проверить, и такой успех вводит в заблуждение сильнее, чем отказ.

Порядок решает, что можно перенести

Tor переносит потоки TCP через свой интерфейс SOCKS, и клиент, который просит прокси разрешить имя хоста, оставляет запрос внутри цепи. UDP в обычных конфигурациях так не ходит, поэтому туннель WireGuard нельзя вложить в Tor без дополнительного TCP-ретранслятора посередине.

OpenVPN можно принудительно перевести на TCP, так что такая схема хотя бы описуема. Она также медленнее и хрупче, а картина отказа при обрыве выглядит так же, как заблокированный порт. Ожидайте, что на различение этих двух уйдёт больше времени, чем на починку любого из них.

Разрешение — вторая половина. С --socks5-hostname прокси разрешает адрес назначения, тогда как обычный --socks5 сначала спрашивает локальный распознаватель и утекает имя за пределы цепи. Именно этот один флаг решает, принадлежит ли запрос имени цепочке или вашему провайдеру.

OrderWhat must resolve the endpointWhat usually breaks
VPN, then TorThe tunnel's resolverEntry guards blocked by the VPN provider's filters
Tor, then VPNThe SOCKS proxy, remotelyUDP transports, which Tor does not carry
App proxy on topThe application itselfProxy bypass rules and cached connections

Как найти первую нарушенную границу

Проверяйте этапы в том порядке, в каком идут пакеты, безобидными запросами и останавливайтесь на первом отказе. Запишите, какая команда выполнилась первой, потому что порядок — часть доказательства. Две команды отделяют мёртвую цепь от мёртвого выхода:

curl -s --socks5-hostname 127.0.0.1:9050 https://check.torproject.org/api/ip
curl -4 -s https://api.ipify.org; echo

Первая сообщает, завершается ли запрос через прокси SOCKS вообще, а вторая показывает адрес, который сеть представляет сейчас. Если первая не удалась, а вторая удалась, проблема у клиента Tor или до него. Если обе удались, а браузер всё равно не работает, приложение использует другой путь, чем оболочка.

Страница публичного IP тоже описывает только последний видимый выход. Она не может сказать, сколько скачков ему предшествовало, поэтому сочетайте её с поддерживаемым выводом состояния каждого инструмента, а не считайте одно число схемой.

Когда перестать добавлять слои

Если вы не можете одной фразой сказать, что даёт слой, уберите его. Цепочка с неясной целью — это цепочка, которую никто не отладит в три часа ночи, а выигрыш в приватности от необъяснимого скачка обычно меньше потерянной доступности.

Если слой действительно заслуживает своё место, сначала проверьте его отдельно, затем добавьте следующий и снова подтвердите путь теми же двумя командами. Восстановите полную цепочку перед обычным использованием и оставьте проверку TLS и аутентификацию включёнными; предупреждение о сертификате, принятое ради загрузки страницы, — это обход маршрутизации, а не починка. Запишите порядок, на котором вы остановились, пока он свеж.

Запишите этот порядок, включая распознаватель, который отвечает на каждом этапе. Работающая цепочка, которую вы можете описать, переживёт следующее обновление, а работающая цепочка, собранная перебором, исчезнет вместе с ним. Добавьте дату и версии, чтобы более поздний отказ можно было сравнить с известным хорошим состоянием, а не спорить о нём по памяти. Десять строк в текстовом файле экономят вечер догадок.

Похожие статьи