Mýtus je, že L2TP na Androide je ďalšia vec, ktorú môže shell skript spustiť: pridaj trasu, zavolaj starú službu, hotovo. Nemôže to tak byť, pretože štyri rôzne vrstvy sa musia zhodnúť, kým tunel prenesie paket. Vrstva IPsec chráni cestu, L2TP prenáša reláciu, PPP vyjednáva spojenie a Android musí výsledok zaregistrovať ako VPN, okolo ktorej môže smerovať. Videl som to skúšať dvakrát s kopírovanými príkazmi a v oboch prípadoch trasa existovala, kým nič nebolo šifrované.

Čo zmena trasy skutočne dosiahne

Pridanie trasy rozhoduje, kam paket pôjde ďalej. Nevyjednáva bezpečnostnú asociáciu, neotvára reláciu L2TP a nespúšťa výmenu PPP, ktorá vytvára adresu, partnera a nastavenia DNS. Na telefóne je viditeľným výsledkom premávka, ktorá odchádza nesprávnou cestou, alebo odchádza a umiera, bez akéhokoľvek stavu tunela kdekoľvek.

To isté platí pre volanie služby skopírované zo staršieho vydania. Interné VPN potrubie Androidu nie je publikované API automatizácie a číslovaná transakcia z inej verzie môže zasiahnuť inú operáciu alebo vyžadovať oprávnenia, ktoré skript nemá. Automatizácia, ktorá nesie heslo, by nikdy nemala závisieť od uhádnutých interných argumentov, pretože režim zlyhania je buď tichý no-op, alebo na polovicu vytvorený profil, ktorý nikto nečistí.

Štyria vlastníci a skript nie je nikto z nich

Vezmite ich po poradí. IPsec vytvára a udržiava chránenú cestu a autentifikuje partnerov. L2TP prenáša reláciu po nej a práve vrstvenie je dôvod, prečo ich štandard považuje za samostatné mechanizmy, a nie za jeden protokol. Vnútri toho PPP vyjednáva parametre spojenia, ktoré bude klient používať. Potom Android vlastní stranu platformy: registrované rozhranie VPN, rozsah pre aplikáciu, stav always-on a životný cyklus, ktorý rozhoduje, čo sa stane po zabití aplikácie.

Skript vidí len poslednú z týchto vrstiev, a to zvyčajne nepriamo. Môže požiadať klienta o pripojenie, ak ten klient sprístupňuje zdokumentovanú kontrolu, a potom môže sledovať stav rozhrania. Nemôže nahradiť tri vrstvy pod ním a nemôže prinútiť platformu, aby neregistrované rozhranie považovala za VPN.

Prečo ani démon nie je skratka

Spustenie privilegovaného Linux démona v zariadení vyzerá ako chýbajúci diel a často skutočne zdvihne tunel. Čo však nerobí, je registrácia toho tunela v Androide. Rozhranie existuje v jadre, ale výber VPN platformy, smerovanie pre aplikáciu, politika always-on a životný cyklus o ňom nevedia a vlastné zmeny trasy a DNS démona súťažia so správcom siete o tie isté tabuľky.

Výsledkom je pripojenie, ktoré funguje pre premávku démona a záhadne nie pre aplikáciu, na ktorej vám záležalo, alebo také, ktoré prežije, kým systém znova nevyhodnotí svoje siete. Žiadny z týchto výsledkov nie je chyba platformy; je to hranica medzi vlastníctvom socketu a vlastníctvom VPN funkcionality.

Ako vyzerajú podporované cesty

Ak organizácia môže prejsť na profil, ktorý Android sám poskytuje, cestou platformy je tá čestná. Od API 30 VpnManager podporuje poskytovanie a kontrolu profilov VPN platformy aplikáciami, s autorizačným tokom naviazaným na volajúcu aplikáciu. Nie je to konvertor L2TP: profilový model, ktorý poskytuje pre IKEv2, neprekladá existujúcu konfiguráciu L2TP a zmena protokolu je migrácia, nie premenovanie. Identity, trasy, súkromné DNS a prístupové oprávnenia treba preniesť zámerne.

Ak služba musí zostať na L2TP/IPsec, podporovanou kombináciou je klient a vydanie OS, ktoré operátor skutočne dokumentuje, a jeho zmluva o automatizácii, ak existuje. Keď neexistuje zdokumentovaná kontrola bez dohľadu, správnou odpoveďou je podporované manuálne pripojenie, nie krehký privilegovaný skript, ktorý náhodou funguje na jednom builde.

Čo robí správna automatizácia

S zdokumentovanou kontrolou má automatizácia malú a obhájiteľnú úlohu: požiadať o pomenované pripojenie, čakať na pripravenosť, zastaviť sa pri zlyhaní autentifikácie alebo nastavenia, spustiť zamýšľanú prácu a nechať čistenie komponentu, ktorý pripojenie vlastní. Prihlasovacie údaje zostávajú u klienta, ktorý vie, ako ich uchovávať a rotovať.

Zapíšte, ktorý komponent vlastní ktorú vrstvu, skôr než napíšete prvý riadok, a overte výsledok podľa toho:

  • IPsec a PPP spracúva klient, nie trasy skriptu.
  • Pripojenie sa zobrazuje v stave VPN platformy, preto sa naň vzťahuje rozsah pre aplikáciu a always-on.
  • Žiadne interné volanie služby, číslo transakcie ani uhádnutý argument nenesie prihlasovací údaj.
  • Zlyhanie v ktoromkoľvek kroku nezanechá na polovicu zaregistrovaný profil.

Súvisiace články