Запитайте в настільного 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-запиту й нічого не каже про те, який резолвер відповів. Пристрій, що протікає на одному з них, може виглядати цілком здоровим на іншому.

Схожі статті