Почему Little Snitch по-прежнему показывает браузер при включённом VPN?
Локальный монитор называет приложение, открывшее сокет, а не туннель, который его переносит. Новое окно времени и вид расширений показывают оба уровня.
Вы включаете VPN, открываете Little Snitch, и браузер тут же на месте — с подключением к сайту, который, как вы думали, шёл через туннель. Эта запись сама по себе не доказательство утечки. Локальный монитор сообщает, какой процесс открыл сокет на этой машине, и браузер действительно открыл его; клиент VPN — второй процесс, который забирает эти пакеты позже. Оба утверждения верны одновременно, и дисплей показывает вам первое.
Что локальный монитор может и чего не может сопоставить
Сопоставление происходит на сокете. Ядро знает, какому процессу принадлежит соединение, поэтому Little Snitch может с высокой уверенностью пометить запись именем приложения. Чего он по умолчанию не видит — это внешнее соединение, которое VPN строит вокруг этого трафика, потому что оно принадлежит другому процессу.
Доменные имена — более слабый сигнал, чем кажется. При соединении HTTPS имя может прийти из запроса DNS, из имени сервера, предложенного во время рукопожатия, или из обратного поиска адреса — в зависимости от того, что наблюдала система. Ничего из этого не требует расшифровки страницы и ничего не доказывает, куда байты ушли потом.
Итак, запись браузера отвечает на вопрос «кто», а не «куда». Относитесь к ней как к данным сопоставления, а «куда» берите из другого вида.
Шаг первый: начните с пустого окна, а не с прокрутки истории
Старые записи не могут сказать, что делает текущая конфигурация. Переключите фильтр времени на «С этого момента» или нажмите Command-K, чтобы окно показывало только соединения, появляющиеся после этого момента.
Затем сделайте ровно одно безобидное действие в исследуемом приложении, например загрузите страницу, которую вам разрешено загружать. Одно действие, один момент, чтобы появившиеся записи можно было связать с ним без догадок. Подождите секунду или две после завершения, потому что загрузка страницы даёт всплеск соединений, а не одно. Читать список, пока он ещё заполняется, — гарантия того, что вы неверно оцените порядок.
Прежде чем читать результат, проверьте, не сужают ли список поле поиска или фильтр состояния. Фильтр, оставшийся от прошлой сессии, — самая частая причина того, что соединение выглядит отсутствующим, хотя оно всего лишь скрыто, и также причина того, что два человека, смотрящие на одну машину, расходятся в том, что происходит.
Шаг второй: включите соединения расширений, чтобы увидеть сам туннель
Клиент VPN в современной версии macOS обычно является сетевым расширением, а не обычным приложением. Включите «Показывать сетевые расширения» в Monitor, и соединения этого расширения станут видны наряду со всем остальным.
Теперь оба уровня можно читать вместе. Браузер — источник запроса, а расширение — транспорт, который его несёт. Видеть оба — нормально и ожидаемо; видеть только расширение обычно означает, что вид отфильтрован, а видеть только приложение — что вид расширений выключен.
Ни один вид сам по себе не описывает весь путь. Правила маршрутизации, поведение DNS и любые исключения для отдельных приложений находятся вне списка соединений, поэтому полный ответ требует проверять их отдельно.
Шаг третий: отличите реальное прямое соединение от эффекта отображения
Если вы подозреваете, что конкретный адресат выходит напрямую, назовите этот адресат и проверьте его отдельно. Посмотрите на собственную конфигурацию маршрутизации и блокировки клиента VPN для этого хоста или приложения и подтвердите, должен ли он быть исключён.
Чего делать не следует — блокировать в ответ каждую видимую запись браузера. Браузер всё равно должен устанавливать свои соединения, и блокировка их в мониторе не перенаправляет их в туннель; она лишь останавливает их. Так диагностический вопрос превращается в сбой. Если правило кажется необходимым, ограничьте его одним адресатом, который вы можете обосновать, с пометкой, почему оно существует.
Та же осторожность относится к столбцу домена. Имя, которое вас удивляет, может быть общим именем хоста, точкой доставки контента или запросом, случившимся до поднятия туннеля, и трактовка его как доказательства утечки ведёт к правилам, которые ломают рабочий трафик.
Шаг четвёртый: держите вид и правило отдельно
Любое изменение в этом упражнении меняет то, что показывает монитор. Ни одно из них не меняет того, что разрешает брандмауэр, и ни одно не перемещает трафик в туннель или из него.
Когда закончите, верните фильтры в состояние, которое сможете объяснить, чтобы следующий человек, открывший окно, не читал оставленный вами вид. Если вопрос был в том, идёт ли адресат через туннель, ответьте на него из настроек маршрутизации и исключений, а затем с помощью монитора подтвердите результат, а не гадайте о нём.