Приложението за 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 и повечето протоколи за предаване върви по multicast към 224.0.0.251 и ff02::fb с обхват на локалната връзка, а маршрутизиран тунел не го пренася. Затова устройство може да отговори на директна връзка, без никога да се появи в списък.
Тествайте действието, не иконата
След като превключите Локална мрежа, принудително затворете приложението от превключвателя за приложения и го стартирайте отново. Работещ процес може да задържи отказаното състояние отпреди промяната, а приложение, което продължава да връща празен списък, изглежда еднакво независимо дали разрешението е проработило. След това изпълнете едно конкретно действие, например печат на тестова страница или стартиране на видео, вместо да чакате списъкът с устройства да се напълни.
Дръжте профила за VPN непроменен през цялото сравнение. Ако откриването започне да работи само след като се изключите, значи сте научили, че виновен е тунелът, а не разрешението. Променяйте по една променлива на опит, иначе следващото пускане няма да ви каже нищо.
Поправете го в този ред
Последователността по-долу е тази, която сега следвам, защото никога не оставя телефона в наполовина променено състояние, в което следващият тест е нечетим.
- Уверете се, че приложението е в Поверителност и сигурност, Локална мрежа, и че превключвателят му е включен.
- Принудително затворете и стартирайте приложението отново, после повторете реалното действие веднъж.
- Отворете страницата на рутера по LAN адреса, докато сте свързани, за да докажете дали частният диапазон е в тунела.
- Ако е, редактирайте профила, за да изключи локалните мрежи, или помолете собственика на профила да го направи.
- Ако превключвателят е сив, третирайте устройството като управлявано и предайте заявката на администратора.
Обикновено важи само едно. Ако нито едно не промени резултата, останалите заподозрени са самата мрежа, например изолация на точка за достъп или списък с разрешени клиенти, обвързан с Wi-Fi адреси, а таблицата за съответствие по-горе показва кое.