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

Я уткнулся ровно в эту стену с этикеточным принтером в домашней сети: приложению ни разу не давали доступ к локальной сети, а профиль, который я проверял, был полным туннелем, проглатывавшим каждый пакет, адресованный 192.168.1.0/24. Двое независимых ворот были закрыты, и открытие одних не убрало бы симптом.

Двое ворот между одним приложением и одним принтером

Первые ворота — это решение о приватности, которое принадлежит операционной системе, а не приложению. iOS решает, может ли приложение отправлять трафик на адреса локальной сети, и спрашивает пользователя при первой попытке приложения. Вторые ворота — таблица маршрутов. Пакет, адресованный 192.168.1.50, либо уходит по Wi-Fi к принтеру, либо попадает в туннель, и этот выбор записан в профиле VPN.

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

Сначала прочитайте состояние разрешения, потом трогайте VPN

Откройте «Настройки», затем «Конфиденциальность и безопасность», затем «Локальная сеть». Каждое приложение, запросившее доступ, появляется там с переключателем. Apple перемещала и переименовывала части этого экрана с iOS 14 по iOS 18, поэтому если пункт не там, где вы ожидаете, введите «Локальная сеть» в поиск по настройкам вместо того, чтобы перебирать дерево.

Больше всего людей ловит одноразовый запрос. iOS спрашивает, когда приложение впервые обращается к локальной сети, и только тогда. Нажмите «Не разрешать», и при следующем запуске запрос не вернётся; переключатель — единственный путь назад, и он изначально выключен. Переустановка приложения сбрасывает решение, поэтому в некоторых ветках форумов утверждают, что переустановка починила обнаружение. Починила — стиранием запрета.

На контролируемом или управляемом iPhone переключатель иногда серый. Профиль настроек приватности, разосланный через MDM, может заранее задать или заблокировать доступ к локальной сети, а заблокированный выключенный переключатель означает, что ремонт — это изменение политики, а не изменение телефона. Apple описывает запрос и переключатель для каждого приложения здесь: support.apple.com/en-us/102229.

Проверьте, что туннель на самом деле маршрутизирует

Полный туннель забирает 0.0.0.0/0 и вместе с ним каждый частный диапазон. Пакеты для 10.x, 172.16.0.0/12 и 192.168.x.x уходят на сервер, который обычно их отбрасывает или транслирует в свою подсеть, поэтому принтер остаётся недостижим даже после выдачи разрешения. Раздельный туннель делает наоборот, но только для диапазонов, перечисленных в профиле.

Профили IKEv2, собранные в Apple Configurator или поставляемые как .mobileconfig, выражают это настройкой «отправлять весь трафик» плюс, в раздельном режиме, явным списком локальных сетей, которые нужно исключить. Клиентские приложения на NEPacketTunnelProvider выражают то же решение через includedRoutes. Ни то, ни другое не видно из строки состояния, и оба перекрывают то, что приложение ожидает увидеть.

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

Сопоставьте симптом с воротами

Два приложения на одном телефоне могут расходиться во мнениях, потому что разрешение выдаётся на приложение, а маршруты — на профиль. Сравните, что именно не работает, прежде чем что-то менять: обычно картина сама называет ворота.

What you seeGateNext step
Device list stays empty, Local Network switch is offPermissionEnable the switch, force-quit the app, reopen it
Switch is on, router page times out, public sites loadRoutingExclude the local range in the profile, or move to a split tunnel
Both pass, direct IP works, discovery stays emptyLink-local multicastEnter the device address by hand, or check profile discovery support
Works by IP address, never by name such as printer.localName resolutionFix mDNS reachability or use the numeric address
Everything fails with the VPN off, on hotel Wi-FiClient isolationChange network, do not change permissions

Строка mDNS заслуживает примечания. Трафик обнаружения для Bonjour и большинства протоколов трансляции идёт многоадресно на 224.0.0.251 и ff02::fb в пределах локального сегмента, и маршрутизируемый туннель его не переносит. Поэтому устройство может отвечать на прямое подключение, никогда не появляясь в списке.

Проверяйте операцию, а не значок

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

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

Исправляйте в таком порядке

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

  1. Убедитесь, что приложение есть в разделе «Конфиденциальность и безопасность», «Локальная сеть», и что его переключатель включён.
  2. Принудительно закройте и заново запустите приложение, затем один раз повторите реальную операцию.
  3. Откройте страницу роутера по LAN-адресу при активном подключении, чтобы понять, попадает ли частный диапазон в туннель.
  4. Если попадает, отредактируйте профиль и исключите локальные сети или попросите владельца профиля сделать это.
  5. Если переключатель серый, считайте устройство управляемым и передайте запрос администратору.

Обычно применима только одна из них. Если ни одна не меняет результат, оставшиеся подозреваемые — сама сеть, например изоляция точек доступа или список разрешённых клиентов, привязанный к Wi-Fi-адресам, и таблица соответствий выше указывает, кто именно.

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