Захват VPN: внутренние пакеты на tun0, конверт на eth0
Интерфейс туннеля показывает пакет открытым текстом, физический адаптер показывает зашифрованный конверт. Прочитайте оба, прежде чем называть захват утечкой метаданных.
Захват на узле VPN не записывает одну-единственную вещь. Ядро показывает пакет дважды: упакованным, на физическом адаптере, и распакованным, на устройстве туннеля. Выбор интерфейса — это выбор того, какую из этих историй вы читаете. Большинство споров о том, что доказывает захват, на самом деле споры о том, какая история была собрана.
Инкапсуляция создаёт два вида
Туннель берёт пакет, созданный приложением, и помещает его внутрь нового, чьё назначение — сервер VPN. Внутренняя форма появляется на tun0, wg0 или на любом устройстве, созданном клиентом. Внешняя форма появляется на адаптере, который несёт её в сеть. Обе формы законны; они отвечают на разные вопросы. Собирайте каждую отдельно, потому что у них разные заголовки и разные читатели.
sudo tcpdump -i tun0 -n -s 0
sudo tcpdump -i eth0 -n host 198.51.100.20 and udp port 51820
Псевдоинтерфейс any — плохой выбор для этого сравнения. Пересылаемые пакеты могут записываться дважды, а локально созданный пакет появляется в обеих формах, что завышает счётчики. Если число кажется невозможным, проверьте интерфейс, прежде чем винить туннель.
Внутри туннеля пакет обычен
На устройстве туннеля вы видите то, что приложение попросило ядро отправить. Адреса назначения, порты, имена DNS, имена серверов TLS, размеры и время — всё там. Полезная нагрузка TLS остаётся зашифрованной собственной сессией приложения, поэтому захват не раскрывает содержимое страницы. DNS-запрос открытым текстом виден здесь, хотя его носитель зашифрован, потому что он никогда не защищался.
Зашифрованный DNS убирает это единственное видимое поле. Он не скрывает адрес назначения, число байтов или ритм — это свойства потока, а не запроса.
Снаружи только конверт и его форма
Физический адаптер показывает ваш адрес, адрес сервера, порт, размеры пакетов и время. Назначения, переносимые внутри, отсутствуют, хотя их форма всё ещё может поддерживать выводы. Размеры и темп могут намекать на видеопоток, массовую передачу или сеанс чата, не называя ни одного из них. Близкий наблюдатель видит примерно ту же картину, что объясняет, как туннель может скрывать сайты, одновременно рекламируя собственное присутствие.
Это утверждение зависит от маршрутизации. Более узкий маршрут, IPv6 по умолчанию, не входящий в туннель, или процесс, привязанный к физическому интерфейсу, выведут трафик за пределы конверта. Прочитайте фактический маршрут, прежде чем делать выводы из захвата.
Адрес партнёра и гигиена захвата
OpenVPN в режиме TCP держит установленный сокет, поэтому таблица сокетов может назвать партнёра. OpenVPN в режиме UDP часто оставляет сокет несоединённым, и ss может показать только локальную сторону. Читайте вместо этого remote профиля, подробный журнал клиента или маршрут до конечной точки. WireGuard напрямую сообщает свою конечную точку и последнее рукопожатие.
wg show
ss -tunp | grep 51820
Файл захвата живёт дольше сеанса, который его создал. Его можно скопировать, и он может быть доступен для чтения любому с локальным доступом. Храните только то, что нужно расследованию, ограничьте права и удалите его, когда работа будет закончена.
Захват, которым можно поделиться, должен указывать, какой интерфейс его создал и когда. Без этой заметки следующему читателю придётся гадать, на какой уровень он смотрит.