Apple IncludeAllNetworks: что по-прежнему обходит VPN
IncludeAllNetworks направляет трафик через VPN с документированными исключениями, включая сотовые услуги напрямую от оператора. Прочитайте профиль, прежде чем винить обход.
Вы открываете профиль в консоли MDM, видите отмеченный IncludeAllNetworks и предполагаете, что каждый пакет с этого устройства теперь попадает в туннель. Собственная схема Apple этого не обещает. Параметр направляет трафик через VPN с исключениями: часть из них — необязательные переключатели, а часть необходима, чтобы система вообще продолжала работать. Разбор ниже следует за этим документом от профиля наружу, поэтому первое, что вы читаете, — сам параметр, а не захват с устройства, которое ещё никто не идентифицировал.
Два из этих исключений объясняют большую часть путаницы, и оба касаются сотовой связи.
Начните с управляемого профиля, а не с захвата
Откройте схему управляемого профиля VPN и прочитайте описание свойства, прежде чем читать любой журнал пакетов. Обратите внимание: описание касается маршрутизации с исключениями, а не гарантии полного туннеля. Именно эта одна фраза определяет, как вы будете толковать всё, что увидите потом.
Запишите три вещи, пока находитесь в консоли: идентификатор полезной нагрузки, которая несёт параметр, версию управляемой ОС на устройстве и то, какая реализация VPN действительно установлена. Описание ключа в документации ничего не говорит о том, показывает ли его сторонний клиент в собственном интерфейсе настройки.
Читайте сотовое исключение как два разных случая
В поддерживаемых конфигурациях ExcludeCellularServices исключает сотовый трафик, маршрутизируемый через интернет, но только когда он включён вместе с IncludeAllNetworks. Схема приводит Wi-Fi Calling, IMS и сервисы, связанные с сообщениями, как примеры этой категории. Эти потоки могут покидать туннель по замыслу, и никакой обзор профиля не проведёт их через него, пока исключение включено.
Второй случай отдельный и не зависит ни от какого переключателя. Некоторые операторы предоставляют сотовые услуги напрямую через свою сеть, а не через интернет, и Apple документирует эту категорию как всегда исключённую из туннеля. Это не условный интернет-маршрутизируемый случай выше, поэтому профиль, в котором очищены все флажки исключений, всё равно его не охватит. Рассматривать оба как одну функцию — это то место, с которого начинается большинство споров об утечке.
Если ваше требование буквально состоит в том, что ни один пакет никогда не покидает туннель, этот второй случай уже делает такое требование невозможным на сотовом устройстве. Это нужно знать до проектного обзора, а не после.
Проверьте, какие ключи ваша платформа действительно предоставляет
Схема также описывает необходимый трафик сетевых подключений и captive-сетей, а также отдельные элементы управления для других категорий, таких как локальные сети и связь между устройствами. Это документированные связи конфигурации, а не наблюдения вашего устройства. Подтвердите каждую из них относительно управляемой версии ОС, потому что доступность меняется между версиями, а ключ профиля, который молча игнорируется, выглядит точно так же, как ключ, выполняющий свою работу.
Минимальная полезная нагрузка для этого решения обычно выглядит так, с сотовым флагом, заданным явно, а не унаследованным из шаблона:
<key>IncludeAllNetworks</key><true/>
<key>ExcludeCellularServices</key><true/>
<key>ExcludeLocalNetworks</key><true/>
Если какой-либо ключ отсутствует в поставленном профиле, устройство возвращается к значению по умолчанию для этого ключа, которое не обязательно совпадает с тем, что имел в виду автор шаблона. Сравните поставленную нагрузку с шаблоном, а не читайте только шаблон.
Выясните, что такое незнакомое имя хоста
Когда появляется подозрительное имя, установите, что на самом деле представляет наблюдение: имя, запрошенное системой, ответивший резолвер, назначение соединения или метку, напечатанную инструментом. Имя, связанное с оператором, само по себе не идентифицирует ни исходный процесс, ни применённое исключение. Гоняться за ним как за доказательством обхода — это способ, которым тема поддержки проводит неделю на неверном уровне.
Используйте поддерживаемую диагностику и поговорите с администратором, которому принадлежит профиль, затем сравните поток с предполагаемой политикой. Именно это сравнение, а не имя хоста, говорит вам, был ли трафик ожидаемым.
Решите требование, а не ослабляйте систему
Не устанавливайте необъяснённый корневой сертификат и не отключайте системные службы только ради того, чтобы захват стал тише. Затихание захвата убирает доказательство и оставляет исключение на месте, а это хуже исходной ситуации. Если правило соответствия запрещает категорию, которую платформа намеренно исключает, отнесите этот конфликт владельцам устройства и сети, держа в руках раздел схемы.
Завершите разбор, записав, какое исключение объясняло трафик, к какой версии ОС оно относится и какое значение профиля его вызвало. Значок соединения не может примирить два несовместимых предположения о том, насколько широк охват трафика операционной системы.