Paketi väljajätmine on marsruutimisjuhis, mitte blokeering, seega on lehed, mis laaditakse pärast VPN-i ühendamist, ootuspärased, mitte tõestus rikkest. Väljajätmine eemaldab rakenduse tunnelist, selle asemel et seda blokeerida, ja tavaline võrk kannab selle liiklust. Siin kohtuvad kaks eraldi põhimõtet: üks valib protsessid, teine valib sihtkohad. Nende lugemine selles järjekorras selgitab, miks ühendatud ikoon ja töötav rakendus ei ole vastuolu.

Miks väljajätmine hoiab võrgu avatuna

VpnService.Builder võtab vastu kas lubamisnimekirja või keelamisnimekirja, mitte kunagi mõlemat. Ainult lubamisnimekirjas olevad paketid suunatakse tunnelist läbi. Keelamisnimekiri pöörab selle ümber: iga pakett peale loetletute kasutab tunnelit ja loetletud säilitavad füüsilise tee. Loetlemata pakett on lubamisnimekirja korral samuti väljaspool tunnelit, seega on väljajätmine selles režiimis enamiku rakenduste tavaline olek.

See muudab kohaliku keelamiskirje marsruutimisotsuseks, mitte tulemüürireegliks. Kui nõue on takistada rakendust hostini jõudmast, peab tunnel selle katma ning server või kohalik põhimõte peab liiklusest keelduma. Rakenduse tunnelist eemaldamine muudab ainult seda, milline liides selle pakette kannab.

Play Store'i juhtum on tavaline teadlik näide. Poe paketi väljajätmine laseb allalaadimistel kasutada alusühendust, kui VPN-i väljapääs segab edastusi, ja näitab, et väljajätmine tähendab möödaminekut, mitte blokeeringut.

Üks profiil, üks nimekiri

Koostaja viskab erindi, kui kasutatakse mõlemat kutset, seega on teie ees olev profiil kas lubamis- või keelamisnimekiri. See üks tõsiasi määrab, kuidas lugeda iga hilisemat tähelepanekut. Kontrollige koodi või hallatavat konfiguratsiooni enne marsruutimistabelit, sest nimekiri otsustab, mida ülejäänud väljund tähendab. Hübriidprofiil ei ole olek, mida saab vaadata.

Erinevus ennustab ka seda, mida teeb äsja paigaldatud rakendus. Lubamisnimekirja korral jääb see välja, kuni keegi selle lisab, keelamisnimekirja korral liitub see tunneliga vaikimisi.

Hallatavad konfiguratsioonid pakuvad sama valikut erinevate võtmenimede all ja mõned konsoolid kirjeldavad seda pigem rakendusepõhise VPN-i režiimina kui nimekirjana. Käitumine taandub siiski neile kahele kutsele, seega jälgige seadet tagasi paketinimekirjani, selle asemel et silti usaldada. Kui silt ja nimekiri lahknevad, võidab nimekiri.

Järgige UID-reeglit tunneli tabelini

Android annab igale rakendusele oma Linuxi kasutaja-ID ja VPN-teenus paigaldab põhimõttreeglid, mis vastavad UID-i vahemikele. Vastav liiklus saadetakse marsruutimistabelisse, mille vaikemarsruut osutab tun-seadmele. Tabeli number eraldatakse iga VPN-i eksemplari kohta, seega muutub see pärast uuesti ühendamist või teise VPN-profiili loomist.

Reeglite väljund on kaart. Iga rida nimetab otsingutabeli ja see tabel hoiab vaikemarsruuti, mis otsustab, kas vastavad paketid tunnelisse sisenevad.

adb shell ip rule show
adb shell ip route show table all
adb shell cmd package list packages -U | grep <package>

Käivitage kõigepealt kolmas käsk, et saada UID, seejärel leidke reegel, mille vahemik seda sisaldab. See reegel osutab tabeli numbrile ja ip route show table <n> selle numbriga näitab, kas tun-seadme kaudu on olemas vaikemarsruut. Kui tabelil vaikemarsruuti pole, on rakendus valitud, kuid teed pole, mis on teistsugune rike.

Need käsud nõuavad silutavat koostist või seadet, kus adb shell saab võrgu olekut lugeda. Tootmisseadmes vastab paketihaldur endiselt, kuid marsruutimise kontroll võidakse tagasi lükata, seega kirjutage üles, mida saate, ja käsitlege ülejäänut kinnitamata.

Marsruut nõuab prefiksit, mitte rakendust

Builder.addRoute nõuab tunneli jaoks sihtkoha prefikseid. Profiil, mis lisab ainult 10.0.0.0/8 saadab selle prefiksi tunnelist läbi ja jätab iga teise sihtkoha füüsilisele teele. See on tavaline jaotatud tunnelimine ja see ei sõltu sellest, millised rakendused reeglid valisid.

Serveri saadetud konfiguratsioon peegeldab sama mudelit. Üksikud marsruudisaatmised lisavad prefikse, samas kui redirect-gateway direktiiv asendab vaikemarsruudi ja püüab kõik rakenduste jaoks, mida tunnel katab. Selle direktiivi eemaldamine võib kahandada töötava tunneli üheks alamvõrguks ilma igasuguse muudatuseta seadmes.

Ebatavalise lüüsiga või meetrilise kvalifikaatoriga saadetud marsruut ei pruugi samuti paigalduda. Eelistage tavalist prefiksi kuju ja jätke edastamine ning NAT serveri hooleks.

Lugege lõikepunkti enne seade muutmist

Tunnel kannab kaetud protsesside ja nõutud sihtkohtade lõikepunkti. Kaetud rakendus, mis küsib aadressi väljaspool avaldatud prefikse, lahkub füüsilise võrgu kaudu. Keelatud pakett jääb välja ka siis, kui see küsib aadressi nende prefiksite sees. Kumbki juhtum pole viga; mõlemad on kaks põhimõtet oma tööd tegemas.

Rakendusepõhine VPN võib jätta seotud rakenduse ka ilma ühenduseta. Kui on-demand on väljas ja tunnel on maas, jääb rakendus rakendusepõhise VPN-i külge ega oma ühtegi varuteed, mis näeb välja nagu katkine rakendus, mitte nagu põhimõtte olek. On-demand'i sisselülitamine või seose halduse kaudu eemaldamine muudab seda.

LayerWhat it selectsWhere to lookTypical mismatch
Package listProcessesBuilder calls or managed configurationApp excluded but expected to be blocked
UID policy ruleWhich table a UID usesip rule showTunnel icon on, app still on Wi-Fi
Routing tableDestinations for matched trafficip route show table <n>Covered app reaches only one subnet
Server pushPrefixes offered to the clientServer route configurationTunnel shrinks after a server edit

Diagnoosige üks telg korraga. Kinnitage esmalt lubamine või keelamine, lugege teiseks paigaldatud UID-reegleid ja tabeleid ning katsetage viimaseks teist rakendust sama sihtkoha vastu. Teine rakendus eraldab protsessi valiku sihtkoha valikust ühes päringus.

Kirjutage tulemus üles rakenduse, sihtkoha ja tabeli numbrina. Just see kolmik on see, mida järgmine muudatus peab säilitama.

Seotud artiklid