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

Определите исключение как службу, а не как подсеть

Запишите приложение, имя хоста и адрес назначения, протокол и порт, сеть, в которой это разрешено, и проверку личности, которую выполняет сама служба. На NAS с аутентификацией именно сертификат или учётная запись доказывают, что вы попали на нужную машину. Адрес в 192.168.0.0/16 ничего не доказывает, потому что каждый домашний маршрутизатор раздаёт одни и те же префиксы.

Решите также, что значит рядом. Служба в маршрутизируемом VLAN не находится в подсети, подключённой к телефону напрямую, а гостевой Wi-Fi может делить тот же частный префикс с домом и при этом быть совсем другой машиной. Исключение должно называть службу и среду, а не только диапазон адресов.

Убедитесь, что контроль платформы соответствует требованию

Конструктор профилей IKEv2 в Android предоставляет setLocalRoutesExcluded(true), и его документация требует обходимый VPN: исключение имеет смысл только тогда, когда клиент позволяет трафику обойти туннель. Та же документация предупреждает, что базовая сеть может предоставить маршруты, влияющие на исключение, поэтому настройка следует за сетью, к которой вы подключаетесь, а не за той, которой доверяете.

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

Руководство: постройте и примените исключение

Шаг 1: создайте профиль поддерживаемым путём для развёртывания, либо управляемую конфигурацию, либо конструктор клиента. Шаг 2: отметьте VPN как обходимый, потому что исключение локального маршрута без этого не действует. Шаг 3: включите исключение локального маршрута. Шаг 4: оставьте включёнными собственную аутентификацию службы и проверку сертификата; исключение про маршрутизацию, а не про доверие. Шаг 5: сохраните и переподключитесь, чтобы профиль применился.

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

Проверьте четыре важных случая

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

CaseNetworkDestinationExpected
1. Approved serviceHome Wi-FiThe NASReachable and authenticated
2. Other local deviceHome Wi-FiA printerDenied by VPN policy
3. Same private prefixHotel or cafe Wi-Fi192.168.1.10Denied
4. TransitionVPN drop, Wi-Fi to cellularThe NASNo silent direct path

Случай 3 ловит широкий обход частной подсети, а случай 4 ловит клиент, применивший исключение только при подключении. Запустите случай 4 с отключённым VPN и телефоном, переведённым на мобильную сеть, затем переподключитесь и убедитесь, что исключение возвращается без перезагрузки. Справка API локального маршрута указывает требование обходимости, которое делает шаг 2 обязательным.

Запишите исключение и пересматривайте его

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

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

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