Android-skärmen för VPN visar en rad med ett namn, en nyckelikon och kanske en alltid-på-knapp. Den visar sällan slutpunkten, rutpolicyn, DNS-servrarna eller inloggningsuppgifterna som får anslutningen att fungera, eftersom de i en appbaserad tunnel tillhör appen. Den praktiska konsekvensen är en runbook-fråga, inte en filosofisk: innan du redigerar en nedladdad fil eller letar efter ett centralt profillager, ta reda på vilken komponent som äger inställningen du vill ändra.

Identifiera först anslutningstypen

Det finns minst tre uppsättningar på samma inställningsskärm. En app kan använda VpnService för att bygga ett virtuellt gränssnitt och äga protokollet och den privata konfigurationen, inklusive en lokal filtreringsapp utan fjärrutgång. Android kan också tillhandahålla en plattforms-IKEv2-profil via Ikev2VpnProfile, tillgänglig från API 30, där plattformen håller mer av profilen. Och en leverantörsapp kan visa sin egen serverlista och sätta ihop inställningarna internt.

adb shell dumpsys connectivity | grep -i -A12 "VPN"
adb shell cmd connectivity list-owners 2>/dev/null || true

Det första kommandot visar det aktiva VPN-nätverket och dess länkegenskaper, vilket är det tillämpade tillståndet. Om raden namnger ett paket du känner igen, börja med den appens egen profilvy i stället för systemskärmen.

Anteckna ägaren och profilens omfattning

Skriv ner fyra fakta innan du ändrar något: det ägande paketet, om anslutningen ligger i den personliga profilen eller arbetsprofilen, profilens eller anslutningens namn som appen visar det, och vem som administrerar den. En enhetsägare kan tillhandahålla en arbetsprofil-VPN som en användare av den personliga profilen inte kan redigera, och samma app installerad två gånger ger dig två oberoende ägare.

Det här steget förhindrar den vanligaste bortkastade timmen, nämligen att redigera en profil som inte är den anslutna. Appar håller ofta flera profiler, och den aktiva är en egenskap hos appen, inte hos Android-raden.

Jämför begärt, mottaget och tillämpat tillstånd

Det är tre olika faser, och en avvikelse mellan dem säger vilken komponent du ska åtgärda.

StageWhere to lookWhat it proves
RequestedThe app's profile editor or imported fileWhat the owner intends to use
ReceivedSanitized app log of server-supplied optionsWhat the peer actually pushed
AppliedLink properties and routes after connectWhat the device is really using

Den tillämpade fasen är den du kan observera utan att lita på någons logg. Jämför DNS-servrarna och rutterna i den aktiva länkens egenskaper med dem profilen hävdar; om de skiljer sig har servern skickat något eller appen tillämpat en policy du inte förväntade dig.

adb shell ip addr show tun0
adb shell ip route show table all | head -40

Gränssnittsnamn skiljer sig mellan appar, så lista gränssnitten först och läs det som dök upp när tunneln anslöts. En rutt som finns i appens redigerare men saknas här tillämpades aldrig; en rutt som finns här men saknas i redigeraren kom från någon annanstans.

Redigera den artefakt som ägaren faktiskt läser

För en importerad OpenVPN-profil håller appen vanligtvis sin egen kopia. Att senare redigera den ursprungligen nedladdade filen ändrar inte nästa anslutning; använd appens dokumenterade redigerare, eller importera igen och bekräfta vilken profil som är aktiv nu. Det är skillnaden mellan att ändra en fil och att ändra en konfiguration.

Leverantörsappar sätter ofta ihop inställningar från en serverlista i stället för att skriva en fil användaren kan redigera. Avsaknaden av en exportknapp är inte bevis för att VPN:en är falsk, och en exporterad fil kan utelämna enhetsbundna nycklar eller registreringsmaterial som en annan enhet skulle behöva. Behandla export och import som separata operationer med egna förutsättningar.

Skriv supportanteckningen utan att avslöja hemligheter

En användbar anteckning namnger den exakta appen och profilen, inställningen som ser fel ut och bevisen från varje fas. Till exempel: den här profilen tar emot en privat DNS-adress från servern, men den avsedda arbetsappen kan inte slå upp sin tjänst, och de tillämpade länkegenskaperna visar den resolver medan profilredigeraren visar en annan.

Håll inloggningsuppgifter utanför anteckningen. Det krävs inte att rota enheten för att söka i appens privata lagring för att identifiera ägaren, och en gissad sökväg till datamappen är inget gränssnitt som stöds. Om svaret kräver byte som bara appen ser, be ägaren om en diagnostisk export i stället för att improvisera en.

När arbetet är klart, stäng slingan: bekräfta namnet på den aktiva profilen, läs det tillämpade tillståndet igen och koppla från en gång för att verifiera att ändringen överlever en återanslutning. En inställning som bara finns i redigeraren har inte driftsatts.

Relaterade artiklar