Приложението за принтера показва празен списък, приложението за камера съобщава, че не е намерено устройство, а бутонът за предаване във видео приложение се върти, докато не се откаже. Иконата за 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 и повечето протоколи за предаване върви по multicast към 224.0.0.251 и ff02::fb с обхват на локалната връзка, а маршрутизиран тунел не го пренася. Затова устройство може да отговори на директна връзка, без никога да се появи в списък.

Тествайте действието, не иконата

След като превключите Локална мрежа, принудително затворете приложението от превключвателя за приложения и го стартирайте отново. Работещ процес може да задържи отказаното състояние отпреди промяната, а приложение, което продължава да връща празен списък, изглежда еднакво независимо дали разрешението е проработило. След това изпълнете едно конкретно действие, например печат на тестова страница или стартиране на видео, вместо да чакате списъкът с устройства да се напълни.

Дръжте профила за VPN непроменен през цялото сравнение. Ако откриването започне да работи само след като се изключите, значи сте научили, че виновен е тунелът, а не разрешението. Променяйте по една променлива на опит, иначе следващото пускане няма да ви каже нищо.

Поправете го в този ред

Последователността по-долу е тази, която сега следвам, защото никога не оставя телефона в наполовина променено състояние, в което следващият тест е нечетим.

  1. Уверете се, че приложението е в Поверителност и сигурност, Локална мрежа, и че превключвателят му е включен.
  2. Принудително затворете и стартирайте приложението отново, после повторете реалното действие веднъж.
  3. Отворете страницата на рутера по LAN адреса, докато сте свързани, за да докажете дали частният диапазон е в тунела.
  4. Ако е, редактирайте профила, за да изключи локалните мрежи, или помолете собственика на профила да го направи.
  5. Ако превключвателят е сив, третирайте устройството като управлявано и предайте заявката на администратора.

Обикновено важи само едно. Ако нито едно не промени резултата, останалите заподозрени са самата мрежа, например изолация на точка за достъп или списък с разрешени клиенти, обвързан с Wi-Fi адреси, а таблицата за съответствие по-горе показва кое.

Подобни статии