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

Две записи, и существует только одна из них

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

Запись, которую можно построить самостоятельно, — это локальный файл с публичным адресом и отметкой времени UTC в каждой строке. Она меньше, некрасивее и гораздо полезнее, потому что описывает именно то, что может увидеть и сторонний наблюдатель.

Вариант A: зафиксируйте выходной адрес сами

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

#!/bin/sh
umask 077
log="$HOME/vpn-exit.log"
printf '%s %s\n' "$(date -u +%Y-%m-%dT%H:%M:%SZ)" "$(curl -fsS https://api.ipify.org)" >> "$log"

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

Журнал отмечает, когда вы пользовались туннелем и из какой сети появились, что ближе к истории просмотров, чем к счётчику. Выберите срок хранения, который сможете обосновать, держите файл вне общих папок синхронизации и удаляйте его осознанно.

Вариант B: запросите историю у провайдера

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

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

Что может доказать каждая запись в обращении в поддержку

Две записи отвечают на разные вопросы, и именно в таблице сравнение перестаёт быть академическим.

QuestionYour local logProvider record
Which address did the traffic leave from?Yes, for the moment it was capturedUsually not disclosed
Was the tunnel in use at 14:20?Yes, if the capture ranYes, within the retention window
Why did a location get slower?Yes, by comparing addresses over timeSometimes, as an infrastructure note
Who sent this specific request?NoNo

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

Сравните обе с эталоном, прежде чем доверять любой из них

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

curl -fsS https://api.ipify.org; echo
curl -fsS https://api64.ipify.org; echo
dig +short TXT o-o.myaddr.l.google.com @1.1.1.1

Повторите сравнение для DNS и для IPv6, потому что эхо адреса доказывает путь одного HTTP-запроса и ничего не говорит о том, какой резолвер ответил. Устройство, которое утекает на одном из них, может выглядеть совершенно здоровым на другом.

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