Разделённый туннель всё ещё исключает приложение, которое вы удалили
Правило, привязанное к пути или пакету, может пережить приложение, для которого оно написано. Проверьте, на что оно указывает сейчас, а затем удалите его через владельца профиля.
Старого приложения больше нет, а в списке разделённого туннеля по-прежнему есть запись о нём. Ничего заметно не ломается, поэтому запись остаётся там месяцами. Потом кто-то устанавливает другую программу в ту же папку, или управляемый профиль восстанавливает правило при каждом переподключении, и трафик начинает идти путём, который никто не планировал. Исключение пережило причину своего существования.
Уборка здесь прежде всего про идентичность: на что правило указывает сейчас и кому принадлежит список.
Симптом: исключение, которое ни с чем не совпадает
Устаревшая запись незаметна при обычном использовании. Она становится заметной тремя способами: приложение, которое, как вы ожидали, пойдёт через туннель, идёт напрямую; новая программа наследует старое исключение; или клиент отказывается сохранить правку, потому что управляемый профиль её перезаписывает. Все три выглядят как отдельные ошибки, и все три — одна и та же проблема учёта. Каждую дешево проверить и дорого диагностировать неправильно.
Начните с чтения правила, а не с его удаления.
Выясните, что именно определяет правило
Реализации разделённого туннеля привязывают исключения к разным вещам: пути к исполняемому файлу, имени пакета, идентификатору пакета или маршруту. Правило на основе пути указывает на файл, которого может уже не быть или который теперь может быть другим файлом. Правило на основе пакета указывает на идентичность, которую новая установка может использовать повторно. Прочитайте документацию клиента для поля, на которое смотрите, потому что одно и то же текстовое поле означает разное в разных продуктах. Руководство по VpnService от Android — ориентир для случая с пакетами.
Отображаемое имя — наименее надёжная часть записи, и именно её люди читают.
Правила путей и правила пакетов ведут себя по-разному
Правило пути, пережившее удаление, обычно становится неактивным, и неактивность — хороший исход. Плохой исход — путь, который используется повторно, потому что новый исполняемый файл молча наследует исключение. Правила пакетов ведут себя иначе: продукт может игнорировать недоступный пакет, отклонить его или продолжать совпадение по имени, когда что-то новое занимает это имя.
Не переносите допущение с одного клиента на другой. Проверьте, что ваш клиент на самом деле делает с отсутствующей целью, желательно намеренно создав условие на тестовой машине и наблюдая, какой процесс наследует исключение.
Удалите его через владельца
Если список приходит из управляемого профиля, локальное редактирование — временное изменение, которое будет восстановлено при следующем подключении. Измените профиль или спросите того, кто им владеет, и убедитесь, что правка переживает переподключение. Если список локальный, удалите запись и проверьте, что клиент перезаписал свою конфигурацию, а не сохранил старую в памяти.
Пустой список — не цель. Цель — список, записи которого по-прежнему соответствуют реальным требованиям.
Затем проверьте оба направления
После уборки проверьте приложение, которое должно остаться исключённым, и приложение, которое теперь должно идти через туннель. Поведение DNS подтвердите отдельно, потому что политика резолвера — это другой механизм контроля, чем список исключений. Затем один раз переподключитесь и проверьте снова, так как восстановленный профиль — самый частый способ, которым уборка тихо отменяет саму себя.
Держите однострочную цель рядом с каждым оставшимся исключением. Именно эта строка не даёт списку превратиться в музей и делает следующую уборку пятиминутной работой.