Aplikacja iPhone nie widzi urządzeń lokalnych przy włączonym VPN
Dwie bramy decydują, czy aplikacja na iPhone dotrze do drukarki lub telewizora przez VPN: uprawnienie Sieć lokalna i trasy samego tunelu. Sprawdź je po kolei.
Twoja aplikacja drukarki pokazuje pustą listę, aplikacja aparatu zgłasza, że nie znaleziono urządzenia, a przycisk przesyłania w aplikacji wideo kręci się, aż się poddaje. Ikona VPN wisi na pasku stanu, telefon ma pełny zasięg, a Safari bez problemu ładuje strony, więc nic w połączeniu nie wygląda na zepsute. Potem otwierasz ustawienia samej aplikacji i nie znajdujesz nic do przełączenia.
Trafiłem dokładnie na tę ścianę z drukarką etykiet w sieci domowej: aplikacji nigdy nie przyznano dostępu do sieci lokalnej, a profil, który testowałem, był pełnym tunelem, który połykał każdy pakiet zaadresowany do 192.168.1.0/24. Dwie niezależne bramy były zamknięte, a otwarcie jednej nie usunęłoby objawu.
Dwie bramy między jedną aplikacją a jedną drukarką
Pierwsza brama to decyzja o prywatności, która należy do systemu operacyjnego, a nie do aplikacji. iOS decyduje, czy aplikacja może wysyłać ruch na adresy w sieci lokalnej, i pyta użytkownika przy pierwszej próbie aplikacji. Druga brama to tablica routingu. Pakiet zaadresowany do 192.168.1.50 albo wychodzi przez Wi-Fi w stronę drukarki, albo wchodzi do tunelu, a ten wybór jest zapisany w profilu VPN.
Obie bramy zawodzą inaczej i właśnie to umożliwia diagnozę. Odmówione uprawnienie wywala własne wywołanie gniazda aplikacji, więc aplikacja nie ma nic do zaraportowania i wraca do ogólnego pustego stanu. Problem z routingiem wygląda jak przekroczony limit czasu, bo pakiety opuściły telefon i zginęły gdzieś po drugiej stronie. Ten sam pusty ekran, inna naprawa.
Przeczytaj stan uprawnień, zanim dotkniesz VPN
Otwórz Ustawienia, potem Prywatność i bezpieczeństwo, potem Sieć lokalna. Każda aplikacja, która poprosiła o dostęp, pojawia się tam z przełącznikiem. Apple przestawiał i zmieniał nazwy części tego ekranu od iOS 14 do iOS 18, więc jeśli wpis nie jest tam, gdzie go oczekujesz, wpisz Sieć lokalna w polu wyszukiwania ustawień, zamiast przeszukiwać całe drzewo.
Najbardziej łapie ludzi jednorazowe pytanie. iOS pyta, gdy aplikacja po raz pierwszy dotknie sieci lokalnej, i tylko wtedy. Naciśnij Nie zezwalaj, a pytanie nie wróci przy następnym uruchomieniu; przełącznik to jedyna droga powrotu, a na start jest wyłączony. Ponowna instalacja aplikacji resetuje decyzję, dlatego niektóre wątki na forach twierdzą, że reinstalacja naprawiła wykrywanie. Naprawiła, przez usunięcie odmowy.
Na nadzorowanym lub zarządzanym iPhonie przełącznik bywa wyszarzony. Profil preferencji prywatności wysłany przez MDM może z góry ustawić lub zablokować dostęp do sieci lokalnej, a zablokowany wyłączony przełącznik oznacza, że naprawa jest zmianą polityki, a nie zmianą telefonu. Apple dokumentuje pytanie i przełącznik dla każdej aplikacji tutaj: support.apple.com/en-us/102229.
Sprawdź, co tunel naprawdę trasuje
Pełny tunel bierze 0.0.0.0/0 i wraz z nim każdy zakres prywatny. Pakiety do 10.x, 172.16.0.0/12 i 192.168.x.x jadą do serwera, który zwykle je odrzuca albo tłumaczy na własną podsieć, więc drukarka pozostaje nieosiągalna nawet po przyznaniu uprawnienia. Tunel dzielony robi odwrotnie, ale tylko dla zakresów wymienionych w profilu.
Profile IKEv2 zbudowane w Apple Configurator albo dostarczane jako .mobileconfig wyrażają to ustawieniem wysyłania całego ruchu plus, w trybie dzielonym, jawną listą sieci lokalnych do wykluczenia. Aplikacje klienckie oparte na NEPacketTunnelProvider wyrażają tę samą decyzję przez includedRoutes. Żadne z nich nie jest widoczne z paska stanu, a oba nadpisują to, czego aplikacja oczekuje.
Oto test, którego używam. Z podłączonym VPN otwórz w Safari stronę administracyjną routera pod jego adresem LAN. Jeśli strony publiczne się ładują, a ta strona przekracza limit czasu, twój zakres prywatny jest w tunelu. Jeśli strona się ładuje, ruch lokalny nadal wychodzi przez Wi-Fi, a blokada jest gdzie indziej.
Przypisz objaw do bramy
Dwie aplikacje na tym samym telefonie mogą się nie zgadzać, bo uprawnienie przyznaje się na aplikację, a trasy na profil. Porównaj, co zawodzi, zanim cokolwiek zmienisz: wzorzec zwykle sam nazywa bramę.
| 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 |
Wiersz mDNS zasługuje na uwagę. Ruch wykrywania dla Bonjour i większości protokołów przesyłania idzie multicastem na 224.0.0.251 i ff02::fb w zasięgu łącza lokalnego, a trasowany tunel go nie przenosi. Dlatego urządzenie może odpowiadać na bezpośrednie połączenie, nigdy nie pojawiając się na liście.
Testuj operację, nie ikonę
Po przełączeniu Sieci lokalnej wymuś zamknięcie aplikacji przez przełącznik aplikacji i uruchom ją ponownie. Działający proces może trzymać odmówiony stan sprzed zmiany, a aplikacja, która ciągle zwraca pustą listę, wygląda tak samo niezależnie od tego, czy uprawnienie zadziałało. Potem wykonaj jedną konkretną czynność, na przykład wydruk strony testowej albo uruchomienie wideo, zamiast czekać, aż lista urządzeń się zapełni.
Utrzymuj profil VPN bez zmian przez całe porównanie. Jeśli wykrywanie zaczyna działać dopiero po rozłączeniu, dowiedziałeś się, że winny jest tunel, a nie uprawnienie. Zmieniaj jedną zmienną na próbę, inaczej następne podejście nic ci nie powie.
Napraw to w tej kolejności
Poniższa sekwencja to ta, której teraz przestrzegam, bo nigdy nie zostawia telefonu w na wpół zmienionym stanie, w którym następny test jest nieczytelny.
- Sprawdź, czy aplikacja jest wymieniona w Prywatność i bezpieczeństwo, Sieć lokalna, i czy jej przełącznik jest włączony.
- Wymuś zamknięcie i uruchom aplikację ponownie, potem powtórz prawdziwą operację raz.
- Otwórz stronę routera pod adresem LAN przy aktywnym połączeniu, żeby udowodnić, czy zakres prywatny jest w tunelu.
- Jeśli jest w tunelu, edytuj profil, aby wykluczyć sieci lokalne, albo poproś właściciela profilu o zrobienie tego.
- Jeśli przełącznik jest wyszarzony, traktuj urządzenie jako zarządzane i przekaż prośbę administratorowi.
Zwykle pasuje tylko jedna z nich. Jeśli żadna nie zmienia wyniku, pozostali podejrzani to sama sieć, na przykład izolacja punktu dostępowego albo lista dozwolonych klientów powiązana z adresami Wi-Fi, a tabela dopasowań powyżej wskazuje która.