Застосунок iPhone не знаходить локальні пристрої, коли VPN увімкнено
Двоє воріт вирішують, чи зможе застосунок на iPhone дістатися принтера або телевізора через VPN: дозвіл «Локальна мережа» і маршрути самого тунелю. Перевіряйте їх по черзі.
Застосунок принтера показує порожній список, застосунок камери повідомляє, що пристрій не знайдено, а кнопка трансляції у відеозастосунку крутиться, доки не здасться. Значок 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 see | Gate | Next step |
|---|---|---|
| Device list stays empty, Local Network switch is off | Permission | Enable the switch, force-quit the app, reopen it |
| Switch is on, router page times out, public sites load | Routing | Exclude the local range in the profile, or move to a split tunnel |
| Both pass, direct IP works, discovery stays empty | Link-local multicast | Enter the device address by hand, or check profile discovery support |
| Works by IP address, never by name such as printer.local | Name resolution | Fix mDNS reachability or use the numeric address |
| Everything fails with the VPN off, on hotel Wi-Fi | Client isolation | Change network, do not change permissions |
Рядок mDNS вартий примітки. Трафік виявлення для Bonjour і більшості протоколів трансляції йде багатоадресно на 224.0.0.251 і ff02::fb у межах локального сегмента, і маршрутизований тунель його не переносить. Тому пристрій може відповідати на пряме підключення, ніколи не з’являючись у списку.
Перевіряйте операцію, а не значок
Після перемикання «Локальної мережі» примусово закрийте застосунок через перемикач застосунків і запустіть знову. Робочий процес може утримувати заборонений стан із часу до зміни, а застосунок, який і далі віддає порожній список, виглядає однаково незалежно від того, чи спрацював дозвіл. Потім виконайте одну конкретну дію — наприклад, друк тестової сторінки або запуск відео, — замість того щоб чекати, поки заповниться список пристроїв.
Тримайте профіль VPN незмінним протягом порівняння. Якщо виявлення запрацювало лише після від’єднання, ви дізналися, що винний тунель, а не дозвіл. Змінюйте по одній змінній за спробу, інакше наступний прогін нічого вам не скаже.
Виправляйте в такому порядку
Послідовність нижче — та, якої я тепер дотримуюся, бо вона ніколи не залишає телефон у напівзміненому стані, де наступний тест нечитабельний.
- Переконайтеся, що застосунок є в розділі «Конфіденційність і безпека», «Локальна мережа», і що його перемикач увімкнено.
- Примусово закрийте й перезапустіть застосунок, потім один раз повторіть реальну операцію.
- Відкрийте сторінку роутера за LAN-адресою при активному підключенні, щоб довідатися, чи приватний діапазон у тунелі.
- Якщо так, відредагуйте профіль і виключіть локальні мережі або попросіть власника профілю зробити це.
- Якщо перемикач сірий, вважайте пристрій керованим і передайте запит адміністратору.
Зазвичай застосовна лише одна з них. Якщо жодна не змінює результат, підозрювані, що лишилися, — сама мережа, наприклад ізоляція точок доступу або список дозволених клієнтів, прив’язаний до Wi-Fi-адрес, і таблиця відповідності вище вказує, хто саме.