Считается, что связка из изолированной виртуальной машины, тотального запрета UDP на хосте и принудительного заворачивания TCP-процессов через Proxifier в локальный SOCKS5-порт — это своего рода “непробиваемый бункер” для обеспечения хотя бы условной сетевой анонимности. Ведь в такой схеме гостевая OS физически “слепа”, так как она не знает реального IP хоста и не имеет каналов для прямой утечки пакетов?

Но "бункер" может и пасть. И причины будут неприятными.

Я совершенно случайно обратил внимание, что внутри одной из моих совершенно изолированных виртуальных машин, мессенджер Element и популярный чекер 2ip.ru (через браузеры) продолжали с легкостью определять реальный IP-адрес хостовой OS! При этом классические тесты на утечки через WebRTC или DNS в браузерах показывали идеальную чистоту, а в логах Proxifier не было ни одного прямого (Direct) соединения.

В этой статье я хотел бы рассказать, как именно происходила деанонимизация, и почему корень проблемы лежал за пределами моего “железа” или софта?

Постановка задачи и конфигурация «стенда».

Для тестирования использовалась жесткая схема изоляции, исключающая традиционные стандартные бреши:

  1. Гостевая OS: Виртуальная машина в портативном VirtualBox, работающая строго в режиме “NAT” (для изоляции от реальной локальной сети хоста).

  2. Firewall хоста: Правилами в нём полностью заблокирован весь исходящий UDP-трафик для любого экземпляра виртуальных машин, что исключало утечки по протоколам STUN/ICE (WebRTC) и классическому DNS (порт 53/UDP).

  3. Перехват трафика: На хостовой системе всегда запущен Proxifier (в режиме сервиса), правила которого принудительно перехватывают процессы “VirtualBox.exe” и “VBoxHeadless.exe”. Весь их TCP-трафик перенаправляется на локальный порт SOCKS5.

  4. Прокси-клиент: На хосте запущено приложение Happ. При этом встроенные режимы системы (TUN-режим или системный прокси) в нём выключены. Happ используется исключительно как своего рода “генератор локального SOCKS5-интерфейса” (порт 10808). Внутри Happ правила маршрутизации полностью отключены вручную (чекбокс «Использовать маршрутизацию» в положении Выкл) и выбран конкретный статичный сервер.

А теперь самое интересное! Там в чём же была аномалия и каковы были её причины?

  1. При использовании моего личного VPS и “чистого” VLESS-сервера без сторонних правил, описанная выше схема работала просто идеально! Абсолютно все используемые мной чекеры и корпоративный мессенджер Element видели строго IP-адрес моего личного VPS.

  2. Как только я переключал Happ на коммерческую подписку от одного популярного на данный момент “провайдера” по обходу “таких-то списков”, чекер 2ip.ru и Element внутри виртуалки мгновенно начинали видеть реальный IP-адрес пользователя при описанных выше жесточайших настройках “изоляции” виртуальных машин. И в то же самое время множество других сервисов абсолютно четко продолжали показывать именно IP-адрес сервера из коммерческой подписки!

Первым делом подозрение пало на локальные утечки. Однако детальный разбор сетевого стека опроверг очевидную “классическую зацепку” - утечку через DNS. Дело в том, что на хосте используется dnscrypt-proxy, причем строго в режиме tcp, и целевые сайты просто обязаны были видеть лишь IP-адреса волонтерских DNS-серверов, но никак не реальный IP хостовой OS!

Дальше я стал подозревать локальный WebRTC. Но ведь флаги Chromium в Element и расширения в браузерах были настроены на блокировку локальных интерфейсов? Более того, при заблокированном UDP на хостовой OS (выше писал, что это было настроено в firewall), WebRTC физически не мог бы отправить пакеты для опроса STUN.

Дальше я стал грешить на VirtualBox, но соксификатор Proxifier, перехватывающий всего два процесса VirtualBox, через которые только лишь и работают мои виртуальные машины, подтвердил, что сетевой NAT-движок VirtualBox не порождал абсолютно никаких неучтенных процессов, и весь трафик из виртуальных машин шёл строго через соксифицированные процессы VirtualBox.exe и VBoxHeadless.exe.

Я начал впадать в прострацию, ведь мой условно-непробиваемый “анонимный сетевой контур” был “чист”?!
Proxifier честно забирал пакеты из виртуальных машин и без единой потери доставлял их в локальный socks5 сервер в Happ, а дальше “выстреливал” трафик через vless-сервера из коммерческой подписки.

Что же было не так?

А разгадка аномалии крылась в фундаментальном различии между приватным VPS и коммерческой подпиской. Это различие активировалось на этапе, когда зашифрованный трафик уже покинул мой ноутбук и прилетел в data-центр провайдера подписки. Забегая вперёд, отмечу, что факт “своеобразной” серверной маршрутизации уже подтвержден администратором технической поддержки провайдера в переписке. Оказывается, что когда вы покупаете массовую подписку в подобных сервисах, зачастую владельцы инфраструктуры вынуждены решать две весьма противоречивые “бизнес-задачи”:

  1. Экономия дорогого зарубежного трафика (ведь за транзит каждого гигабайта между дата-центрами Европы и России провайдер платит деньги или упирается в “не резиновый” лимит).

  2. Обеспечение доступности локальных ресурсов (многие российские сервисы, банки и государственные сайты намертво блокируют входящие соединения из зарубежных дата-центров Cloudflare, Hetzner, DigitalOcean и т.д.).

Для оптимизации админы коммерческих сервисов часто прописывают правила маршрутизации (например, блок routing.rules в конфигурации ядра Xray/sing-box) прямо на своих удаленных серверах, “скармливая” эту “принудиловку” прямо через подписки.

И теперь сводим воедино все элементы этого “паззла”:

  1. Пакет от Element или 2ip.ru в зашифрованном виде долетает через VLESS до сервера провайдера (например, в Германии). На этом этапе на стороне пользовательского хоста всё выглядит как идеальный прокси-туннель.

  2. Удаленный сервер расшифровывает пакет и видит, что целевой IP-адрес назначения принадлежит российскому диапазону подсетей (например, дата-центрам Яндекс.Облака, Selectel или VK Cloud, где развернут корпоративный Matrix-сервер или чекер 2ip.ru).

  3. Серверная автоматика подписочного провайдера “принимает решение” - не пускать этот трафик через свой внешний европейский IP.

  4. Вместо этого сервер использует специфическую маршрутизацию (например, директиву “freedom” в связке с обратным проксированием или IPv6-туннелированием, которая осуществляет сквозной проброс пакета. В заголовки запроса транслируется или принудительно подмешивается исходный маркер сессии пользователя (например, через заголовок “X-Forwarded-For” или используются иные особенности маршрутизации транспортного уровня).

  5. Целевой российский сервер (Element или 2ip.ru) принимает этот запрос, считывает данные из «сквозного» заголовка и выводит пользователю его реальный IP-адрес, честно рапортуя о “сливе” и деаноне :-)

А поскольку собственный VPS — это «чистый лист» без коммерческих оптимизаций, его ядро просто обрабатывает 100% пакетов через себя, обеспечивая честную анонимность. Ну как честную? “Опустим” логирование на стороне хостера VPS. Условно-честную - так точнее! Тогда как подписочные коммерческие провайдеры зачастую жертвуют Вашей безопасностью ради экономии трафика и удобства рядовых пользователей, которым нужен лишь доступ к локальным сайтам без отключения VPN и им глубочайше наплевать “куда влетает и откуда вылетает”.

Ну и, конечно же, ещё и по той причине, чтобы на небольшом “парке” с таким трудом добываемых “связок” серверов для обхода “таких-то списков”, просто не легли бы разом все эти сервера от набранной клиентской базы страждущих и вожделеющих любителей "рилсов", котиков и прочих “видосиков” :-)

Перефразируя одну известную истину, я для себя сделал очевидный вывод - “анонимность заканчивается там, где начинается коммерческий VPN/VLESS-провайдер”.

И даже если вы построите идеальный, изолированный "бункер" на стороне клиента, вы остаетесь абсолютно бессильны перед правилами маршрутизации, которые админы стороннего сервиса прописывают на своих серверах за вашей спиной…

Комментарии (9)


  1. Dmitri-D
    07.07.2026 00:18

    нет, добавлять “X-Forwarded-For” никакой сервер посредине не может, если только ваш клиент не использует незашифрованный HTTP трафик. Добавляйте правила по запрету HTTP, разрешайте только HTTPS (TLS) и всё что сервер сможет увидеть - это незашифрованный SNI.


    1. Phonetastic Автор
      07.07.2026 00:18

      спасибо за советы! очевидно, что это поможет в ряде случаев, но как быть с тем фактом, что подписочный провайдер "отделяет мух от котлет" и при попадании моих запросов в подсети, которые он (провайдер) считает "локальными" - отдаёт им мой IP напрямую?


      1. Dmitri-D
        07.07.2026 00:18

        запретите все протоколы кроме TLS и проверьте. Я имею ввиду не порты, а именно протоколы. Порты запрещать для этой цели бессмысленно, потому что никто не мешает клиенту посылать plain HTTP в надежде что прокси добавит вот эти самые X-Forwarded-For и при этом использовать tcp/443.


  1. press_a_key
    07.07.2026 00:18

    TLDR: облачный провайдер сам подставляет ваш реальный IP, при доступе к российским серверам.

    В данном случае не по злому умыслу, а по причине экономии трафика и более адекватной работы с российскими сервисами, где зарубежные IP бывают забанены. Но это лишний раз доказывает, что все сторонние провайдеры не дают никаких гарантий анонимности. И их удел - использование их канала как способа проброса до своего VPS, откуда трафик будет идти уже наружу. Потому что надо признать, коммерческие решения часто хуже режутся ТСПУ.


    1. dartraiden
      07.07.2026 00:18

      все сторонние провайдеры не дают никаких гарантий анонимности

      Стоит начать с выяснения того, обещал ли этот провайдер анонимность. Может статься, что ничего, кроме обхода белых списков, он и не обещал и прямой доступ к российским ресурсам преподносится как удобство для пользователя. А то, что пользователь сам выдумал, как работает сервис и его выдумки не совпали с реальностью, это его проблемы.


  1. korn3r
    07.07.2026 00:18

    Звучит несколько странно.

    Вы точно поддержку правильно поняли? Более вероятен вариант что коммерческий впн раздаёт вам конфиг в формате json. У панелей есть 2 формата выдачи конфигов по подписке - просто ключи подключения и json конфиг в котором может быть вшит роутинг на стороне клиента. И вполне может быть что ру диапазоны и всякие domain: ru клиенту прописаны ходить напрямую с себя. Тогда у вас получается схема следующая: запускаете приложение внутри вм, проксифаер перехватывает трафик вм и заворачивает в хапп, маршрутизация в хаппе видит что трафик должен быть прямо и шлет его прямо через интернет вашего хоста, а не через впн.

    Маршрутизация из json конфига работает "отдельно" от галочек в настройках хаппа. В json конфиге это маршрутизация непосредственно для ядра.

    Проверить просто - в хаппе проверьте не помечен ли конфиг как json (рядом с протоколом) и нажмите на стрелочку справа от сервера чтобы проверить собственно полный конфиг на предмет наличия в нем блока routing


    1. balamutang
      07.07.2026 00:18

      Более того, такой способ работы — единственный способ выжить прокси в текущих условиях. Потому что как только на какой-то российский белосписочный сервис, кто-то зайдёт с зарубежного адреса - из RKN пойдёт запрос для проверки этого IP-адреса. И как только выяснится, что на этом IP-адресе работает прокси, этот IP-адрес попадёт в чёрный список и соединиться с ним будет уже невозможно.

      Поэтому именно так и надо делать: на российские сервисы ходить с российского IP, а на "замедленные" с прокси. Либо иметь два телефона: один только для российских сервисов, другой только для зарубежных.


      1. korn3r
        07.07.2026 00:18

        не знаю проверяют ли они IP клиентов на сервисах, но в целом зачастую банят зарубежные подсети просто так.

        в любом случае иметь что-то прямо полезно в первую очередь тем что в логах оператора у вас не "все идет на такой-то один адрес", а куча трафика на разные сервисы


  1. Ahalay_Mahalay
    07.07.2026 00:18

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