Что экран iftop может и чего не может доказать о VPN
Монитор полосы пропускания показывает один интерфейс в один момент. Решите, что вы тестируете, какой интерфейс это несёт и что скрывает фильтр.
Экран iftop отвечает на один вопрос за раз: какие пары хостов обмениваются байтами через тот интерфейс, на который вы его направили. Он не отвечает, следует ли каждое приложение политике VPN, и пустой экран не доказывает, что ничего не утекло. Именно в разрыве между этими двумя утверждениями ошибается большинство споров о тестах утечки. Что экран значит на самом деле, определяют три условия, и все три видны в использованной вами командной строке.
Три условия определяют смысл экрана
Условия таковы: какой интерфейс показывается, что скрывают фильтр и сам инструмент, и что именно выполнил тест. Отвечайте на них в этом порядке, потому что ошибка в первом делает остальные два бессмысленными.
Условие об интерфейсе важно потому, что вид туннеля и физический вид показывают разные уровни одного и того же трафика. Взгляд на интерфейс туннеля показывает потоки внутри туннеля; взгляд на физический интерфейс показывает носитель туннеля, а также любой законный трафик настройки, управления или локальный трафик, который делит этот канал. Ни один из видов не ошибочен, и ни один не является полной картиной. Назвать, на какой вы смотрите, — это разница между доказательством и впечатлением.
Условие первое: какой интерфейс показывается
iftop принимает интерфейс явно через -i, и его руководство описывает поведение, когда вы этого не делаете: он выбирает один, и это может быть устройство, выглядящее внешним, а не туннель. Такое значение по умолчанию разумно для инструмента полосы пропускания и плохо для теста утечки.
Всегда указывайте интерфейс и записывайте его рядом с результатом. Снимок экрана без имени интерфейса невоспроизводим.
Условие второе: что скрывают фильтр и инструмент
iftop принимает выражение фильтра, и поток, который фильтр исключает, невидим по построению, а не из-за отсутствия. Инструмент также по умолчанию выполняет поиск имён хостов для разметки адресов, и эти поиски создают собственный трафик DNS, то есть трафик, который вы не собирались наблюдать. -n отключает поиски и делает отображение числовым; скрыть строки DNS потом — не то же самое, что не создавать запросы.
Это различие стоит сформулировать прямо, потому что оно встречается и в других инструментах: подавление отображения активности — не то же самое, что её предотвращение. Если поиски DNS входят в то, что вы тестируете, проводите тест с отключёнными поисками, чтобы наблюдение не было загрязнено наблюдателем.
Условие третье: что именно выполнил тест
Один запрос от одного приложения к одному назначению в одном семействе адресов доказывает что-то об этом запросе. Он ничего не доказывает о другом приложении, другом назначении или другом семействе адресов, и IPv6 — это семейство, которое чаще всего забывают именно в такой проверке.
Поэтому определите запрос до начала: безвредное назначение, из приложения, которое вам важно, в семействе, которое вам важно, с туннелем в его одобренном состоянии. Затем проверьте принимающую сторону или собственную диагностику клиента, потому что дальний конец знает, что пришло, так, как локальный экран не может. Затем выполните одобренный случай недоступного туннеля и посмотрите, останавливается ли трафик, потому что именно об этом поведении обычно и идёт речь в требовании.
DNS заслуживает отдельного наблюдения. Получатель запроса и маршрут, которым прошёл запрос, — это два факта, и экран полосы пропускания не показывает ни одного из них.
Использование iftop как поддерживающего доказательства
Только тогда iftop добавляет ценность, и добавляет её как подтверждение. sudo iftop -i wg0 -n -B -P -f "host 203.0.113.9" показывает, появляется ли ожидаемый поток на ожидаемом интерфейсе, со счётчиками байтов, которые делают утверждение о простое проверяемым.
Сравните это с ss -tnp для вида на уровне сокета и ip route get для маршрута, который выбрало бы ядро, и у вас будет три наблюдения одного запроса вместо одного впечатления о машине. Руководство iftop документирует выбор интерфейса, синтаксис фильтра и поведение поиска — именно те три вещи, от которых зависит тест утечки. Экран полосы пропускания локализует активность; маршрут, исключения и поведение при сбое решают, соответствует ли эта активность требованию.