Что такое аварийный выключатель VPN?
Аварийный выключатель VPN — это функция, которая блокирует сетевой трафик при неожиданном разрыве VPN-туннеля. В этой статье объясняется, что на самом деле делает аварийный выключатель, как он реализован на уровне операционной системы и как убедиться в его корректной работе.
Определение
Аварийный выключатель — это сетевой контроль, который предотвращает выход трафика с устройства через незащищённый интерфейс, пока VPN номинально активен. Если VPN-туннель разрывается — по причине изменения сети, сбоя сервера или по любой другой причине — аварийный выключатель гарантирует, что трафик не перейдёт незаметно на стандартный сетевой интерфейс.
Эту функцию иногда также называют «сетевой блокировкой», «постоянной защитой» или «интернет-выключателем». Поведение одинаково вне зависимости от названия.
Зачем нужны аварийные выключатели
VPN-туннели не всегда работают стабильно. Изменения сети — переключение с Wi-Fi на мобильную связь, переход между точками доступа, прохождение через тоннели — могут ненадолго прерывать соединение. Техническое обслуживание серверов, периодические проблемы с маршрутизацией или редкие ошибки протокола также могут вызывать отключения.
Без аварийного выключателя операционная система направляет трафик через любой доступный интерфейс. С точки зрения пользователя устройство продолжает работать нормально — страницы загружаются, приложения подключаются — но трафик теперь проходит через локальную сеть и ISP, а не через VPN.
Для пользователей, которые полагаются на VPN для защиты конфиденциальности или доступа к сервисам по географическому признаку, такое незаметное переключение нивелирует смысл использования VPN. Аварийный выключатель гарантирует, что подключение будет приостановлено, а не перенаправлено незаметно.
Как это реализовано
Реализация аварийного выключателя различается в зависимости от платформы. Существует два общих подхода.
Реализация на системном уровне
На платформах со встроенной поддержкой VPN аварийный выключатель обеспечивается операционной системой. На iOS фреймворк Network Extension предоставляет опцию «includeAllNetworks», которая в сочетании с соответствующими правилами маршрутизации предотвращает выход трафика с устройства через любой интерфейс, кроме туннеля. Это обеспечивается на уровне ядра и применяется ко всем приложениям, включая работающие в фоновом режиме.
В Linux аварийные выключатели обычно реализуются с помощью правил брандмауэра — iptables или nftables — которые блокируют весь трафик, кроме пакетов, адресованных серверу VPN. Правила добавляются при установке туннеля и удаляются при намеренном отключении.
Реализация на уровне приложения
Некоторые VPN-приложения реализуют аварийный выключатель внутри самого приложения, отслеживая туннель и корректируя правила маршрутизации или брандмауэра в ответ на отключение. Реализации на уровне приложения более гибкие, но зависят от того, что приложение остаётся активным для применения политики.
Реализация на системном уровне, как правило, надёжнее, поскольку продолжает работать даже в случае аварийного завершения или принудительного закрытия VPN-приложения.
Типы аварийных выключателей
Аварийные выключатели можно настроить в нескольких режимах, которые различаются степенью агрессивности блокировки трафика.
- Постоянный аварийный выключатель. Трафик блокируется всякий раз, когда VPN не подключён активно, в том числе когда приложение не запущено. Это обеспечивает наиболее строгую гарантию, но требует явного действия для отключения.
- Сессионный аварийный выключатель. Трафик блокируется только во время активной VPN-сессии. Если пользователь отключается вручную, аварийный выключатель деактивируется и нормальный трафик возобновляется.
- Аварийный выключатель для отдельных приложений. Доступен на некоторых настольных платформах; этот режим блокирует конкретные приложения при отключении VPN, позволяя другим работать нормально. Конфигурация полезна для инструментов, обрабатывающих конфиденциальные данные, однако такая детализация добавляет сложности.
Когда срабатывает аварийный выключатель
Аварийный выключатель предназначен для обработки условий, которые операционная система обычно не рассматривает как сбои. Распространённые триггеры включают:
- VPN-сервер становится недоступен из-за сетевых сбоев или технического обслуживания на стороне сервера.
- Сетевой интерфейс устройства меняется — например, при переходе с Wi-Fi на мобильную связь — и туннель не восстанавливается быстро.
- Ошибка на уровне протокола приводит к завершению туннеля.
- Локальная сеть сбрасывает пакеты, адресованные VPN-серверу или исходящие от него, в том числе в некоторых сценариях с captive portal.
При каждом из этих условий аварийный выключатель приостанавливает трафик до тех пор, пока туннель не будет восстановлен или пользователь явно не отключит аварийный выключатель.
Ограничения
Аварийный выключатель — это защитная функция, а не полноценное решение. Стоит отметить два ограничения.
Переход не всегда мгновенный. Между моментом сбоя туннеля и моментом полного срабатывания аварийного выключателя может существовать небольшое окно, в течение которого трафик теоретически может утечь. На хорошо спроектированных системах это окно достаточно мало, чтобы быть практически незначительным — как правило, несколько миллисекунд — но оно не всегда равно нулю. Реализации на системном уровне закрывают это окно надёжнее, чем реализации на уровне приложения.
Утечки DNS — отдельная проблема. Аварийный выключатель предотвращает выход IP-трафика через незащищённые интерфейсы, однако DNS-запросы иногда могут обходить туннель через системные настройки по умолчанию. Полная конфигурация использует как аварийный выключатель, так и маршрутизацию DNS через туннель. Snap VPN настраивает оба параметра по умолчанию.
Проверка работоспособности
Аварийный выключатель можно проверить, имитируя сбой туннеля и убедившись, что трафик заблокирован.
- Подключитесь к VPN и убедитесь, что сервис определения IP-адреса показывает адрес сервера.
- Не отключаясь через приложение, отключите сетевой интерфейс, используемый VPN, — например, выключив Wi-Fi при активном туннеле.
- Попробуйте загрузить веб-страницу. При работающем аварийном выключателе страница не должна загружаться до тех пор, пока туннель не будет восстановлен или аварийный выключатель не будет намеренно отключён.
На iOS аварийный выключатель обеспечивается на системном уровне, когда VPN-профиль настроен с соответствующими параметрами. Snap VPN включает аварийный выключатель по умолчанию и не предоставляет его как опциональную настройку — функция является частью стандартной конфигурации, а не параметром, который можно случайно отключить.
Подробнее о конфигурации VPN и о том, что можно ожидать от VPN, смотрите в нашем введении в VPN и в руководстве по настройке на iPhone.