Hovor spadne, keď prechádzate okrajom mesta, a ikona VPN zmizne v tom istom okamihu. Láka zapísať to ako „zmena veže zabila tunel“. Stali sa dve rôzne veci a iba jedna z nich sa týka veží. Prestup rádia môže nechať vašu IP adresu, predvolenú trasu a reláciu úplne nedotknuté, zatiaľ čo skutočná zmena adresy preruší každý tunel, ktorý sa s ňou nedokáže presunúť. Porovnať, ako klienti zvládajú druhý prípad, je užitočné cvičenie, pretože vám povie, či vidíte zamýšľané správanie alebo chybu.

Zmena veže nemusí byť zmenou adresy

Mobilné siete udržiavajú paketovú reláciu pri odovzdaniach živú, kým zostáva rovnaký mobilný ukotvovací bod operátora. Rádiové spojenie sa mení, tunel si to nevšimne a v žiadnom logu by sa nemalo objaviť opätovné pripojenie. To je bežný prípad pohybu vnútri mesta.

Adresu mení presun medzi ukotvovacími bodmi, prepnutie z Wi-Fi na mobilnú sieť alebo obnovenie tunela na strane operátora po dlhej pauze. Tieto udalosti nahrádzajú zdrojovú adresu, ktorú nesú vaše pakety, a náprotivok VPN vidí náprotivok, ktorý sa presunul.

Praktickým dôsledkom je, že pohyb nie je dôkaz. Zariadenie, ktoré prešlo štyridsať kilometrov, mohlo celú cestu udržať jednu adresu, a zariadenie, ktoré stojí na mieste, mohlo dvakrát zmeniť adresu, pretože sa tak rozhodla sieť. Zaznamenanie udalosti je jediný spôsob, ako ich rozlíšiť.

Dve riešenia: presunúť tunel alebo ho postaviť znova

Klienti sa líšia v tom, ako veľmi im vadí, že sa zmenil vonkajší zdroj. Niektorí viažu tunel na adresu, na ktorej bol postavený, a vyžadujú úplné obnovenie. Iní overujú každý paket nezávisle a len aktualizujú, kam posielajú odpovede.

MechanismBehaviour after the source changesWhat the user notices
WireGuardEndpoint updated on the next authenticated packetUsually nothing; the tunnel continues
IKEv2 with MOBIKESecurity association moves to the new addressShort pause, no re-authentication
OpenVPN over UDP with floatPeer address may change without a restartMight survive, depending on timing
Client bound to one addressSession dies and is rebuiltA visible reconnect and a new authentication

Horný riadok vysvetľuje mnoho mätúcich hlásení. WireGuard nemá žiadnu reláciu, ktorú by bolo možné prerušiť: každý paket nesie index náprotivku a je overený, takže platný paket prichádzajúci z novej adresy je podľa definície od tohto náprotivku a zaznamenaný koncový bod ho nasleduje. Klient, ktorý počas jazdy nepretržite zobrazuje „pripojené“, hovorí pravdu.

Spodný riadok tiež nie je chyba. Opätovné zostavenie relácie znova spustí overenie voči aktuálnej adrese, čo je presne to, čo chcete, keď stará adresa už môže patriť niekomu inému.

Sledujte udalosť, nie pohyb

V Androide podsystém konektivity hlási zmeny siete ako udalosti a práve tie by ste mali korelovať so správaním klienta. Výpis je rozsiahly, ale dôležité časti sú predvolená sieť a jej adresa:

adb shell dumpsys connectivity | grep -E 'NetworkAgentInfo|Default network'
adb shell ip -br addr show
adb logcat -b main -s Vpn:* | head -n 40

Na strane servera existuje priame meranie pre prípad roamingu. WireGuard ukladá posledný overený koncový bod pre každý náprotivok, takže zmena adresy sa prejaví ako zmenená hodnota, nie ako opätovné pripojenie:

sudo wg show wg0 endpoints
sudo wg show wg0 latest-handshakes

Porovnajte koncový bod pred jazdou a po nej. Ak sa adresa a port nezmenili, tunel nemusel nič robiť a opätovné pripojenie prišlo odinakiaľ, zvyčajne z aplikácie. Ak sa koncový bod zmenil, ale časová pečiatka handshake zostala blízko bežnému intervalu obnovy kľúčov, tunel sa presunul, nie reštartoval.

Reštart vyzerá inak: časová pečiatka handshake sa vynuluje na okamih opätovného pripojenia a klient zapíše inicializačnú sekvenciu, nie tiché pokračovanie.

Kedy je opätovné pripojenie správne správanie

Považovať každé opätovné pripojenie za poruchu vedie ku konfiguráciám, ktoré udržiavajú mŕtve relácie nažive. Náprotivok, ktorého adresa sa zmenila, pretože ju sieť pridelila inam, by nemal ďalej dostávať prevádzku pre staré mapovanie, a klient, ktorý potichu pokračuje, môže skončiť odosielaním do čiernej diery, kým ikona zostáva zelená.

Porovnajte obe zlyhania z pohľadu používateľa. Opätovné pripojenie stojí niekoľko sekúnd a nové overenie. Zastaraný tunel stojí aplikáciu, ktorá zamrzne bez chyby, čo sa vysvetľuje oveľa ťažšie a oveľa pravdepodobnejšie sa hlási ako „internet je pokazený“.

Pod tým sa skrýva aj otázka zásad. Počas medzery medzi stratou jednej cesty a nadviazaním druhej niektorí klienti prechádzajú k priamemu odosielaniu prevádzky. Zabrániť tomu je samostatná kontrola od automatického obnovenia a klient môže byť v jednej dobrý a v druhej zlý. Rozhodnite, ktorú potrebujete, skôr než začnete ladiť ktorúkoľvek.

Zapíšte pozorovanú postupnosť

Užitočné hlásenie pomenuje zdroj udalosti: zmenu predvolenej siete s novou adresou, prepnutie z Wi-Fi na mobilnú sieť alebo odovzdanie bez akejkoľvek zmeny adresy. Potom uvedie, čo klient urobil, s časovou pečiatkou zo strany servera, nie z pamäte.

Ak sa tunel presunul, povedzte to a poznamenajte novú rodinu koncových bodov. Ak sa obnovil, poznamenajte, či overenie uspelo na prvý pokus a ako dlho medzera trvala. Tieto tri skutočnosti odlišujú zdravý mobilný návrh od klienta, ktorý prehadzuje medzi sieťami.

A vyhnite sa fráze „zmena veže“, ak to log zariadenia skutočne nepotvrdzuje. Dokumentácia konektivity Androidu opisuje spätné volania, ktoré rozlišujú dostupnosť od zmeny predvolenej siete, a práve ten rozdiel vaše hlásenie potrebuje. Všetko ostatné je príbeh o jazde.

Súvisiace články