Androidi L2TP automatiseerimine: skript saab seda paluda, mitte luua
Shell-marsruut ei tõsta Androidis L2TP/IPsec ühendust. IPsec, L2TP, PPP ja platvormi poliitika omavad igaüks oma osa, seega vali, mis seda juhtida saab.
Müüt on, et L2TP Androidis on veel üks asi, mille shell-skript käivitada saab: lisa marsruut, kutsu vana teenust, valmis. See ei saa nii olla, sest neli erinevat kihti peavad enne kokku leppima, kui tunnel paketi edasi viib. IPsec-kiht kaitseb teed, L2TP kannab sessiooni, PPP läbiräägib lingi ja Android peab tulemuse registreerima VPN-ina, mille ümber saab marsruutida. Olen näinud seda kahel korral kopeeritud käskudega proovitavat, ja mõlemal korral oli marsruut olemas, samal ajal kui miski ei olnud krüpteeritud.
Mida marsruudi muutmine tegelikult saavutab
Marsruudi lisamine otsustab, kuhu pakett järgmisena läheb. See ei läbiräägi turvaassotsiatsiooni, ei ava L2TP-sessiooni ega käivita PPP-vahetust, mis annab aadressi, partneri ja DNS-seaded. Nutitelefonis on nähtav tulemus liiklus, mis lahkub vale teed, või lahkub ja sureb, ilma et kuskil oleks tunneliseisundit.
Sama kehtib vanemast versioonist kopeeritud teenusekutse kohta. Androidi sisemine VPN-torustik ei ole avaldatud automatiseerimis-API, ja teise versiooni nummerdatud tehing võib tabada teist toimingut või nõuda õigusi, mida skriptil ei ole. Automatiseerimine, mis kannab parooli, ei tohiks kunagi toetuda oletatud sisemistele argumentidele, sest rikkeviis on kas vaikne no-op või poolikult loodud profiil, mida keegi ei korista.
Neli omanikku ja skript ei ole neist ükski
Võta need järjekorras. IPsec loob ja hoiab kaitstud teed ning autendib partnerid. L2TP kannab sessiooni selle kohal ja kihistamine on põhjus, miks standard kohtleb neid eraldi mehhanismidena, mitte ühe protokollina. Selle sees läbiräägib PPP lingi parameetrid, mida klient kasutab. Seejärel omab Android platvormi poolt: registreeritud VPN-liides, rakendusepõhine ulatus, alati-ühendatud olek ja elutsükkel, mis otsustab, mis juhtub rakenduse tapmisel.
Skript näeb ainult viimast neist kihtidest ja tavaliselt kaudselt. See võib paluda kliendil ühenduda, kui klient pakub dokumenteeritud juhtimist, ja seejärel jälgida liidese olekut. See ei saa asendada kolme alumist kihti ega sundida platvormi kohtlema registreerimata liidest VPN-ina.
Miks ka daemon ei ole lühend
Privilegeeritud Linuxi daemoni käivitamine seadmes tundub puuduva tükina ja sageli tõstabki tunneli. Mida see ei tee, on selle tunneli Androidis registreerimine. Liides on tuumas olemas, kuid platvormi VPN-valik, rakendusepõhine marsruutimine, alati-ühendatud poliitika ja elutsükkel ei tea sellest, ning daemoni enda marsruudi- ja DNS-muudatused võistlevad võrguhalduriga samade tabelite pärast.
Tulemuseks on ühendus, mis töötab daemoni liikluse jaoks ja salapäraselt mitte rakenduse jaoks, mis sind huvitas, või üks, mis püsib, kuni süsteem oma võrke uuesti hindab. Kumbki tulemus ei ole platvormi viga; see on piir socketi omamise ja VPN-võimaluse omamise vahel.
Millised toetatud teed välja näevad
Kui organisatsioon saab liikuda profiilile, mille Android ise pakub, on platvormi tee aus. Alates API 30-st toetab VpnManager rakenduste poolt platvormi VPN-profiilide pakkumist ja juhtimist, kusjuures kutsuvale rakendusele on lisatud autoriseerimisvoog. See ei ole L2TP-muundaja: IKEv2 jaoks pakutav profiilimudel ei tõlgi olemasolevat L2TP-konfiguratsiooni ja protokolli vahetamine on migratsioon, mitte ümbernimetamine. Identiteedid, marsruudid, privaatne DNS ja juurdepääsuõigused tuleb teadlikult üle kanda.
Kui teenus peab jääma L2TP/IPseciks, on toetatud kombinatsioon klient ja OS-i versioon, mille operaator tegelikult dokumenteerib, ning selle automatiseerimisleping, kui see olemas on. Kui dokumenteeritud järelevalveta juhtimist ei ole, on õige vastus toetatud käsitsi ühendus, mitte habras privilegeeritud skript, mis juhtub ühes buildis töötama.
Mida õige automatiseerimine teeb
Dokumenteeritud juhtimise korral on automatiseerimisel väike ja kaitstav töö: taotle nimetatud ühendust, oota valmisolekut, peatu autentimis- või seadistustõrke korral, käivita kavandatud töökoormus ja jäta koristamine ühendust omavale komponendile. Volitused jäävad kliendile, kes oskab neid hoiustada ja vahetada.
Kirjuta üles, milline komponent omab iga kihti, enne kui kirjutad esimese rea, ja kontrolli tulemust selle vastu:
- IPsec ja PPP on kliendi, mitte skripti marsruutide hooleks.
- Ühendus ilmub platvormi VPN-olekusse, seega rakendusepõhine ulatus ja alati-ühendatud kehtivad sellele.
- Ükski sisemine teenusekutse, tehingunumber ega oletatud argument ei kanna volitust.
- Ebaõnnestumine ükskõik millisel sammul ei jäta maha poolregistreeritud profiili.