Podijeljeno tuneliranje za klijente pristupne točke nije izuzimanje po aplikacijama
Isključivanje aplikacije iz VPN-a mijenja samo telefon. Povezani prijenosnik treba vlastito pravilo prosljeđivanja, usklađeno po izvoru, odredištu i NAT-u.
Dva zahtjeva koja zvuče jednako nisu ista: „isključi ovu aplikaciju iz VPN-a“ i „pošalji ovo jedno odredište izvan VPN-a za prijenosnik na mojoj pristupnoj točki“. Prvi mijenja kako utičnica na telefonu bira mrežu. Drugi mora promijeniti odluku o prosljeđivanju za paket koji je stigao s drugog uređaja nakon što ga je telefon već prihvatio. Miješanje to dvoje je način na koji klijent pristupne točke završi s izuzetkom koji se oduvijek odnosio samo na telefonov vlastiti preglednik.
Dva podsustava posjeduju dva pitanja
Android drži mrežno povezivanje aplikacija i tethering odvojeno. Utičnice aplikacija pridružuje mreži sklop povezanosti, a VPN aplikacija odlučuje koje njezine vlastite utičnice ulaze u tunel. Proslijeđenim paketima s povezanog klijenta upravlja podsustav tetheringa i traži od netd-a rute, pravila politike i prevođenje na nizvodnom sučelju.
Izuzimanje po aplikaciji procjenjuje se kad aplikacija otvori utičnicu. Proslijeđeni paket nikada ne dolazi do te provjere jer nije nastao iz utičnice aplikacije na ovom uređaju. Upravo je to cijeli razlog zašto te dvije postavke ne mogu jedna drugu zamijeniti i to nije pogreška ni u jednoj od njih.
Što izuzimanje po aplikaciji doista mijenja
Graditelj VpnService može imenovati pakete koji ostaju izvan tunela pomoću addDisallowedApplication ili imenovati jedine pakete dopuštene unutra pomoću addAllowedApplication. Te aplikacije zatim otvaraju utičnice na osnovnoj mreži dok VPN i dalje posjeduje zadanu rutu za sve ostalo.
Opseg je precizan: vlastite utičnice paketa, na ovom uređaju, dokle god je tunel podignut. Ne govori ništa o proslijeđenom prometu, ništa o drugom uređaju i ništa o paketima koje sustav šalje u ime tetheringa.
Nije ni nadzor odredišta. Isključivanje preglednika isključuje svaku adresu do koje taj preglednik dolazi, uključujući onu koju ste htjeli zadržati unutar tunela. Kad zahtjev imenuje odredište umjesto aplikacije, birač aplikacija pogrešan je alat već po svojoj konstrukciji.
Kako proslijeđeni paket izgleda telefonu
Klijentov paket dolazi na sučelje pristupne točke s privatnom izvornom adresom koju je dodijelio telefon, recimo 192.168.43.20, i javnim odredištem. Da bi ga proslijedio, telefon treba rutu prema uzlaznoj vezi i pravilo prevođenja kako bi odgovori našli put natrag, jer je klijentova privatna adresa besmislena u mobilnoj mreži.
Android to izražava pravilima politike koja odabiru tablicu usmjeravanja, a netd ponovno gradi relevantne tablice i pravila kad se mreže i VPN-ovi promijene. Broj tablice, prioritet pravila ili naziv sučelja prepisani s forumske objave ili s istog modela na starijem izdanju ne uspostavljaju trajno vlasništvo. To je ponovno građenje ujedno razlog zašto pravilo napisano rukom može raditi sat vremena i stati nakon sljedećeg ponovnog spajanja.
Kakva je politika doista potrebna izuzetku za pristupnu točku
Zapišite odluku kao izvor, odredište i namjeravani put prije nego dirnete pravilo. Najmanji oblik za jedno odobreno odredište izgleda ovako:
| Source | Destination | Intended path |
|---|---|---|
| One authorized hotspot client | One approved public service address | Ordinary cellular uplink |
| The same client | All other covered destinations | Shared VPN |
| The phone's own apps | Their existing destinations | Unchanged phone policy |
Oba smjera moraju biti potpuna. Izravna grana treba upotrebljivu rutu kroz mobilnu uzlaznu vezu koja je trenutačno aktualna; VPN grana treba rutu tunela i dopuštenje za prosljeđivanje. Svako prevođenje izvora mora odgovarati odabranom izlazu jer NAT primijenjen na sučelju tunela pokazuje adresu tunela, a ne mobilnu, i tada se povratni put ne slaže s odlaznim putem.
Odgovori moraju stići do istog nizvodnog klijenta kroz praćeno stanje ili izričitu rutu, a brojilo odlaznih paketa ništa od toga ne dokazuje. Držite i vlastiti vanjski prijevoz VPN-a izvan opsega izuzetka, inače paketi nositelji tunela naslijede politiku napisanu za web zahtjev klijenta.
Jedna uhvaćena adresa nije odredište
Jedna adresa IPv4 pročitana iz preglednika snimka je jednog trenutka. Velike usluge odgovaraju s anycasta ili iz rotirajućeg skupa rubnih adresa, mnoge su dvostruke stoga, a tijek prijave može dotaknuti hostove za autentifikaciju i telemetriju koje stranica nikad ne prikazuje. Izuzetak izgrađen oko adrese koju ste slučajno vidjeli slomi se sljedeći put kad usluga preraspodijeli opterećenje.
Rabite dokumentirane adrese vlasnika usluge ili raspon koji objavljuje i uzmite u obzir obje obitelji adresa. Ako se zahtjev ne može izraziti kao stabilan skup, vjerojatno je riječ o pitanju politike za uslugu, a ne o usmjerivačkom triku na telefonu.
Provjerite s nizvodne strane
Tri provjere, ovim redom: odabrana usluga s prijenosnika, uobičajeno odredište koje mora ostati unutar VPN-a i telefonska aplikacija koja mora ostati netaknuta. Zatim ponovite nakon ponovnog spajanja i nakon promjene uzlazne veze jer se tada tablice politike ponovno grade.
Ako telefonova izvedba dijeljenja ne može održati taj ugovor kroz ponovno spajanje, premjestite selektivnu politiku na podržani nizvodni usmjerivač umjesto da gomilate root pravila na slušalici. Usmjerivač može izraziti podudaranje izvora i odredišta sa stabilnim vlasnikom, a dokumentacija modula za tethering pravi je izvor za ono što telefon zapravo radi.