W zeszłym tygodniu kolega podał mi swój iPhone z dwiema pozycjami VPN w Ustawieniach: jedną pozostawioną przez aplikację dostawcy, drugą z profilu IKEv2 wklejonego ze strony pomocy. To nie są konkurencyjne wersje tego samego. Aplikacja dostawcy to kontener, który może nieść własny kod tunelu, podczas gdy wbudowany klient Apple to klient IKEv2 konfigurowany ręcznie lub profilem. Protokół, obsługa poświadczeń, kontrola urządzenia i odzyskiwanie decydują o wyborze.

Aplikacja i natywny klient działają na różnych warstwach

Wbudowany klient VPN Apple'a jest w praktyce klientem IKEv2. Formularz ręczny wciąż wymienia przestarzały L2TP przez IPsec oraz opcje Cisco IPsec, ale nie ma pola transportu dostawcy ani miejsca na wklejenie konfiguracji OpenVPN lub WireGuard. Albo wypełniasz formularz w Ustawienia > Ogólne > VPN & Zarządzanie urządzeniem, albo importujesz profil z ładunkiem VPN; powierzchnia to adres serwera, dwie tożsamości, metoda uwierzytelniania i opcjonalne reguły na żądanie.

Aplikacja dostawcy działa o warstwę wyżej. Dostarcza dostawcę tunelu pakietów Network Extension, więc kod protokołu i logika routingu żyją w aplikacji, a iOS tylko przepuszcza pakiety. Niektóre aplikacje implementują WireGuard lub OpenVPN, inne własny zaciemniony transport, a kilka instaluje tylko profil IKEv2 i steruje natywnym klientem za ładniejszym ekranem. Ta ostatnia grupa sprawia, że wybór aplikacja czy profil bywa fałszywym wyborem.

Konsekwencja jest praktyczna: plik .ovpn lub WireGuard nie zastępuje tych pól, ponieważ uzgadnianie to inny protokół.

Przeczytaj ładunek, zanim porównasz funkcje

Gdy profil to IKEv2, klucze ładunku wyjaśniają więcej awarii niż jakiekolwiek porównanie funkcji. Dokumentacja ustawień IKEv2 Apple'a opisuje każdy klucz; skrócony ładunek wygląda tak:

<key>VPNType</key><string>IKEv2</string>
<key>RemoteAddress</key><string>vpn.example.net</string>
<key>RemoteIdentifier</key><string>vpn.example.net</string>
<key>LocalIdentifier</key><string>[email protected]</string>
<key>AuthenticationMethod</key><string>Certificate</string>
<key>ServerCertificateIssuerCommonName</key><string>Example Issuing CA</string>

Trzy pola niosą większość ciężaru diagnostyki. RemoteIdentifier to nazwa, której klient oczekuje od serwera, więc brama za NAT lub balanser, którego certyfikat wskazuje pulę zamiast adresu, zawodzi mimo poprawnego adresu. LocalIdentifier to tożsamość, którą serwer ci przypisuje, a przy uwierzytelnianiu certyfikatem musi odpowiadać tożsamości powiązanej z twoim kontem. ServerCertificateIssuerCommonName przypina wystawcę CA, więc profil może zawieść w dniu ponownego wydania certyfikatu, bez komunikatu wspominającego certyfikaty.

Jeśli AuthenticationMethod to SharedSecret, serwer wykonuje uwierzytelnianie użytkownika EAP, a otrzymany sekret jest w rzeczywistości poświadczeniem konta. Ma to znaczenie, gdy dostawca wysyła dwa dokumenty, jeden dla nazwy użytkownika i hasła, drugi dla certyfikatu, i tylko jeden pasuje do tego, co zaimportowałeś.

Co aplikacja może, a natywny klient nie

Wybór protokołu to oczywista zaleta. Jeśli twój serwer mówi WireGuard lub OpenVPN, aplikacja jest jedynym klientem iOS, który może go użyć, a edycja natywnego formularza tego nie wynegocjuje. Aplikacja może też wdrożyć tunel dzielony według celu lub aplikacji, własną obsługę DNS, blokadę w stylu kill switch, wybór serwera i ponowne łączenie dostrojone do własnej sieci.

Ceną jest oprogramowanie, którego nie audytowałeś, działające z uprawnieniami rozszerzenia sieciowego. Jakość waha się bardziej, niż sugerują karty w sklepie: jedna aplikacja łączy się czysto, a inna przez kilka sekund po zmianie sieci przepuszcza ruch, a kill switch w aplikacji jest funkcją tej aplikacji, nie iOS. Na zarządzanym urządzeniu najpierw sprawdź listę zatwierdzonych.

Co natywny profil IKEv2 robi dobrze

Mniej ruchomych części to cały argument. Klient IKEv2 i jego stos IPsec są dostarczane z systemem, więc nie ma rozszerzenia, które może się zawiesić, procesu na aplikację do utrzymywania przy życiu ani cyklu aktualizacji firmy trzeciej między tobą a działającym tunelem. Profil można też zablokować: na nadzorowanym urządzeniu użytkownik nie może usunąć tego, co zainstalował zarząd, a Always On VPN, który ponownie łączy w każdej sieci bez przełącznika użytkownika, istnieje tylko w tej nadzorowanej, zarządzanej profilem formie.

Czego natywna droga nie daje, to elastyczność. Nie ma VPN na aplikację bez zarządzanych aplikacji, kill switcha dla użytkownika ani transportu wyglądającego jak HTTPS w sieci blokującej IPsec. W sieciach hotelowych, które porzucają UDP 500 i 4500, natywny IKEv2 nie ma odwrotu.

Tabela decyzyjna, która rozstrzyga większość przypadków

W praktyce pytanie o protokół rozstrzyga większość przypadków, zanim funkcje zaczną mieć znaczenie.

What you were givenDevice situationWhat to use
An .ovpn or WireGuard configPersonal phoneProvider app; the native form cannot load it
IKEv2 host plus CA namePersonal or managedProfile, or the app's own IKEv2 mode
IKEv2 with username and secretPersonal phoneEither; the profile is simpler if you never switch servers
A management-installed profileSupervised, MDMNative client; do not add a second app entry
A per-app tunnelling requirementPersonal phoneApp, or accept a full tunnel; iOS cannot split by app without management
IPsec blocked on your main networkAnyApp with a transport that survives the block

Dwa wiersze zasługują na drugie spojrzenie. Wymóg na aplikację na prywatnym telefonie to przypadek, który ludzie czytają błędnie: ustawienie istnieje w iOS, ale jest sterowane przez zarządzanie, więc niezarządzane urządzenie go nie zaproponuje. Zablokowana sieć nie jest powodem do nieufności wobec IKEv2; to powód, dla którego istnieje aplikacja dostawcy.

Sprawdź wybór jednym testem

Testuj tryby awarii, nie przycisk połączenia. Połącz się raz, potwierdź, że pojawia się wskaźnik VPN, a następnie otwórz stronę zwracającą twój publiczny adres i porównaj go z poprzednim. Przełącz się z Wi-Fi na dane komórkowe bez dotykania VPN i obserwuj ponowne połączenie, potem przeprowadź telefon przez tryb samolotowy. Uruchom ponownie i sprawdź, czy tunel wraca sam: profil z OnDemandEnabled powinien, podczas gdy wiele aplikacji trzeba najpierw otworzyć.

Gdy nie wraca, podziel awarię według tego, czy tunel w ogóle istnieje. Brak wskaźnika VPN oznacza, że tunel nigdy nie wstał: albo uzgadnianie nie powiodło się na RemoteIdentifier, przypiętym CA lub poświadczeniu, albo połączenia nigdy nie próbowano, bo reguła na żądanie nie pasowała i żadna aplikacja go nie uruchomiła. Wskaźnik przy ruchu, który zawodzi, oznacza routing, DNS lub politykę po stronie serwera, a ponowna instalacja klienta niczego z tego nie dotyka.

Krótka lista, aby urządzenie było wyjaśnialne dla następnej osoby:

  • jedna pozycja VPN, nie dwie;
  • profil lub aplikacja nazwana od serwera, z którym się łączy;
  • wartości tożsamości zapisane tam, gdzie je znajdziesz.

Zacznij od wiersza protokołu w tabeli i zatrzymaj się tam, jeśli odpowiada na pytanie.

Powiązane artykuły