Почему адрес IPv6 меняется, пока VPN остаётся включённым
Временные адреса меняются по замыслу, поэтому два снимка экрана могут различаться без изменения маршрутизации. Сравнивайте префикс, интерфейс и маршрут, а не полный адрес.
Два снимка экрана с разницей в час показывают разные адреса источника IPv6, и очевидное прочтение — туннель протёк или переподключился. Обычно не произошло ни того, ни другого. Узел использует временные адреса, функцию конфиденциальности операционной системы, которая циклически меняет идентификатор интерфейса по таймеру. Сравнение казалось убедительным только потому, что предполагало поле, которое никогда не было стабильным.
Что на самом деле меняет временный адрес
Временный адрес строится из префикса интерфейса плюс идентификатора, который меняет узел, и несёт предпочтительный и допустимый сроки жизни. До истечения допустимого срока узел создаёт замену, поэтому два соединения могут законно уходить из разных источников. Адрес локальной связи и сам префикс остаются на месте, и именно так сеть по-прежнему узнаёт машину.
Ничто в этом чередовании не делает учётную запись, файл cookie или схему просмотра анонимными. У сайта, который хочет вас узнать, есть cookie, входы и отпечатки, и меняющийся адрес источника на их фоне почти незаметен. Чередование меняет одно поле в заголовке пакета, и это поле никогда не было единственным идентификатором на пути.
Сайт видит один адрес, у узла их несколько
Сервер записывает источник полученного запроса, не более. У узла может быть несколько адресов с разными областями и сроками жизни, и какой победит зависит от правил выбора адреса и от назначения. Именно чтение значения сайта как адреса машины и запускает эту путаницу. Один узел может выглядеть как две машины для двух сайтов в один и тот же момент, просто потому что каждое соединение выбрало другой адрес.
Во время проверки посмотрите на интерфейс с помощью ip -6 addr show dev eth0: несколько адресов с их сроками жизни означают, что чередование присутствует по замыслу. Затем спросите ядро, какой маршрут оно выберет с помощью ip -6 route get 2001:db8:10::5, что выводит устройство и предпочтительный источник для этого назначения.
Сравнивайте префикс, интерфейс и маршрут, а не строку
При проверке VPN вопрос в том, ушёл ли пакет через туннель, а это вопрос маршрутизации и политики. Адрес источника — слабый показатель: адрес, который чередуется на интерфейсе туннеля, всё ещё на туннеле. Туннель, который переподключается, обычно сдвигает префикс или устройство, и эти изменения видны без чтения полного адреса.
Поэтому сравнивайте выбранный маршрут, интерфейс, через который ушёл пакет, и префикс, который он нёс. Эти три остаются достаточно стабильными между запусками, и каждый из них значит нечто иное, когда меняется.
Изменение важно, когда меняется префикс, когда меняется интерфейс или когда маршрут к назначению перестаёт использовать туннель. Изменение только в идентификаторе интерфейса, при том же префиксе и том же устройстве, — это работа конфиденциальности как задумано. Если сместился только идентификатор, проверка измерила таймер конфиденциальности, а не покрытие. Запишите, что из трёх сместилось, прежде чем винить туннель.
Не отключайте IPv6, чтобы снимки совпали
Отключение IPv6 делает повторные проверки совпадающими и одновременно убирает целое семейство адресов из сети, которую ваш туннель должен покрывать. Если политика — передавать IPv6, отключение скрывает пробел в покрытии, а не закрывает его.
Если политика — блокировать IPv6 до появления поддержки, блокируйте осознанно и запишите решение. Следующему администратору нужно видеть разницу между документированной блокировкой и выключенным стеком.
Что записывать и что может доказать одна проверка
Запишите префикс, имя интерфейса, выбранный маршрут, назначение и отметку времени, а рядом полный адрес. Спецификация временных адресов объясняет сроки жизни, которые движут чередование, поэтому полный адрес — наименее стабильное поле в заметке. Совпадение двух из трёх стабильных полей между запусками — более сильное доказательство, чем любое отдельное совпадение адреса.
Одна проверка — это одно наблюдение одного запроса. Заметка превращает следующее наблюдение в сравнение. Храните и то и другое, и следующее расхождение будет стоить одного взгляда вместо целого дня.