Откройте раздел маршрутизации в клиенте VPN, и вы увидите два по-разному устроенных элемента управления, которые часто носят одну и ту же надпись. Один просит перечислить адресаты, которые должны попасть в туннель, а всё остальное продолжает идти через локальную сеть. Другой исходит из того, что в туннель идёт всё, и спрашивает, что нужно вырезать обратно. Оба на первой проверке дают работающий туннель, и оба поддерживаются добавлением строк в список, поэтому разница остаётся незаметной, пока кто-нибудь не установит что-то новое.

Это выбор значения по умолчанию, а не функция. Решите его, пока в списке нет двадцати записей.

Читайте значение по умолчанию в клиенте, а не в брошюре

В WireGuard это решение необычно наглядно, потому что AllowedIPs — это список включения и ничего больше. Пир с 0.0.0.0/0, ::/0 туннелирует всё, а пир с 10.20.0.0/16 — только эту сеть. Синтаксиса исключений нет, поэтому если нужно оставить одну подсеть снаружи, придётся либо перечислить все остальные префиксы, либо добавить политическую маршрутизацию вне интерфейса.

OpenVPN приходит к тому же с другой стороны: redirect-gateway def1 ставит полный туннель, а отдельные директивы route добавляют или переопределяют конкретные префиксы. Коммерческие клиенты обычно прячут и то и другое за флажком и таблицей адресатов, поэтому прежде чем доверять надписи, прочитайте, что именно правит таблица.

Спрашивать нужно не о том, как называется флажок. Спрашивать нужно о том, что происходит с пакетом, адресата которого нет ни в одном списке. Ответьте на это письменно, и остальная конфигурация выйдет из ответа сама. Пропустите вопрос, и первый необъяснимый сбой будет решать тот, кто в тот день ближе всех к клиенту.

Проследите за приложением, которого ни у кого нет в списке

В схеме только с включением это приложение выходит напрямую, через локальную сеть и локальный DNS. В схеме только с исключением оно идёт через туннель, насколько позволяет сервер, и именно здесь часто лежит разница между тем, заработает ли новый SaaS-инструмент в первый же день, и заявкой о том, что VPN его сломал.

Ни одно из значений по умолчанию само по себе не безопаснее. Только включение сужает то, что несёт туннель, и делает локальную сеть путём наименьшего сопротивления, а только исключение считает туннель обычным путём и относится к исключениям как к исключениям, что ближе к тому, что большинство корпоративных политик на самом деле имеет в виду.

QuestionInclude-onlyExclude-only
Unlisted new appgoes directgoes through the tunnel
A site that breaks over the VPNadd it to the listcarve it out
Internal names still resolveonly if routed and servedusually, until split DNS says otherwise
Upkeepone entry per internal serviceone entry per misbehaving public service

Обратите внимание, объекты какого рода перечисляет платформа

VpnService.Builder в Android показывает список разрешённых приложений и список запрещённых приложений как две отдельные модели, а правила по приложению выбирают по пакету, а не по адресату. Браузер, помещённый в такой список, тащит за собой каждый адресат, который открывает, и это другая гранулярность, чем таблица маршрутов, и он не может починить один сломанный сайт внутри работающего приложения.

Настольные клиенты обычно смешивают оба вида в одном интерфейсе, поэтому проверьте, является ли добавляемая строка пакетом, именем хоста или префиксом. Они отказывают по-разному и решаются в разных местах. Строка с именем хоста обычно становится маршрутом плюс именем, а строка с пакетом — решением политики внутри клиента. Запишите, что именно вы добавили, потому что тот, кто будет это отлаживать, предположит другое.

Проверяйте состояние отказа, а не только удачный путь

Приложение, исключённое из туннеля, не получает автоматически чистый прямой доступ. Если клиент ещё и применяет правило блокировки без VPN, исключённый трафик может быть отброшен целиком, и это выглядит как сломанное приложение, а не как решение маршрутизации. Проверьте этот случай намеренно, а не узнавайте о нём из обращения пользователя.

Затем проверьте DNS и IPv6 как отдельные пункты. Туннель, который несёт только IPv4, оставляет приложению с поддержкой v6 обходной путь, а split DNS решает, разрешаются ли внутренние имена для трафика, который вообще не идёт через туннель. Запустите приложение из списка, приложение не из списка, поиск имени и одно переподключение, и храните результаты вместе с конфигурацией.

Запишите значение по умолчанию там, где его найдёт следующий

Запишите выбранное значение по умолчанию, исключения и их владельца там же, где лежит профиль клиента, потому что следующий администратор добавит запись, не читая этих рассуждений. Отмечайте дату и причину каждого исключения, чтобы устаревшее исключение для сайта, который с тех пор починили, можно было снять уверенно. Список без причин растёт бесконечно.

Когда кто-то сообщает об одном сломанном адресате, меняйте исключение, а не основу. Переворот значения по умолчанию ради одного сайта молча переносит все приложения не из списка на другую сторону туннеля.

Похожие статьи