VPN server na Androide: root telefón dostupným neurobí
O tom, či telefón môže obsluhovať VPN klientov, rozhodujú tri oddelené problémy: prichádzajúca cesta, model oprávnení a presmerovanie. Root sa dotýka len toho stredného.
Root mení, ktoré sieťové operácie smie proces vyskúšať. Nedá telefónu verejne dostupnú adresu, nezabezpečí prichádzajúce mapovanie u operátora a neudrží démona nažive po reštarte. Ak rozhodujete, či Android telefón môže pôsobiť ako VPN server, oddeľte tri otázky: dokáže zamýšľaný klient vôbec dosiahnuť poslucháča, aký model oprávnení potrebuje implementácia servera a čo sa musí presmerovať, keď je tunel hore.
Kto sa musí dostať k telefónu a odkiaľ
Klient v tej istej povolenej LAN a klient na mobilných dátach testujú dve rôzne siete. Najprv rozhodnite, ktorá je zamýšľaná, pretože odpovede sa neprenášajú. Vo Wi-Fi zvyčajne nevyžiadaná prichádzajúca premávka potrebuje mapovanie na nadradenom smerovači a použiteľnú verejnú cestu za ním. V mobilnej sieti carrier-grade NAT znamená, že prichádzajúca IPv4 je často nedostupná, nech telefón povoľuje čokoľvek.
Práve posledný bod root neovplyvní. Miestny firewall telefónu a NAT operátora sú odlišné systémy a zmena prvého nemá vplyv na druhý. Privátna adresa rozhrania, ikona mobilných dát alebo počúvajúci socket nie sú dôkazom dostupnosti. Ak cesta operátora napriek tomu ponúka globálne smerovateľnú IPv6, stále na ňu potrebujete zámernú politiku poslucháča a firewallu; mať adresu nie je to isté ako prijímať spojenia.
| Client path | What actually decides reachability |
|---|---|
| Same LAN | The phone's listener and its local firewall |
| Wi-Fi, from the internet | A mapping on the upstream router plus a usable public path beyond it |
| Cellular IPv4 | The carrier's NAT, which the handset does not control |
| Cellular IPv6 | Address, listener and firewall policy together |
Obsluha a presmerovanie sú dva rôzne úspechy
Dokončený VPN handshake dokazuje, že tunel existuje. Nedokazuje, že klient sa dostane do LAN za telefónom, ani že telefón môže slúžiť ako internetový výstup. To sú oddelené konfigurácie postavené na vnútornom pláne adries, trasách, správaní pri návrate a úzko vymedzenej politike presmerovania pre úlohu, ktorú naozaj chcete.
Režim zlyhania je predvídateľný: handshake prejde, klient ukazuje pripojenie a nič sa nenačíta. Skôr než začnete ladiť klienta, rozhodnite, ktorú z dvoch rolí staviates. Vzdialený prístup k zariadeniu v sieti telefónu a internetový výstup cez plný tunel si vyžadujú odlišné pravidlá presmerovania a povolenie oboch, keď ste chceli jedno, rozširuje expozíciu bez pridania žiadanej schopnosti.
Model oprávnení je voľba, nie root alebo nič
Bežný démon OpenVPN používajúci kernelové zariadenie TUN potrebuje príslušné schopnosti, prístup k uzlu zariadenia a spoluprácu bezpečnostnej politiky Androidu. Root nie je plošná výnimka zo SELinuxu; privilegovaný proces je stále obmedzený politikou platformy. Preto binárka, ktorá na Linux serveri beží bez problémov, môže na telefóne zlyhať bez zjavnej chyby o povoleniach.
Implementácia brány v používateľskom priestore môže mať úplne iný model oprávnení, takže rozšírené tvrdenie, že každý VPN server na Androide potrebuje root, je príliš široké. Root vám kupuje možnosť vyskúšať viac operácií, nie záruku, že budú povolené alebo že výsledok bude dostupný.
Vlastná registrácia VPN služby v Androide je opäť iný mechanizmus. Dáva aplikácii spravované klientske rozhranie s definovaným životným cyklom; nie je to univerzálny inštalátor servera a spustenie démona z terminálu mu nedá nepretrhnutú správu, politiku pre jednotlivé aplikácie ani vlastnú cestu obnovy.
Ak chcete výstupný bod, zmeňte architektúru
Keď je cieľom jednoducho vzdialený internetový výstup cez telefón a nie kompatibilita s existujúcim profilom OpenVPN, lepšie zodpovedá podporovaný výstupný uzol v overlay sieti. Tailscale dokumentuje rolu výstupného uzla pre Android s vlastnými krokmi registrácie, autorizácie a výberu klienta.
Kompromis je skutočný a stojí za to povedať ho priamo: prijímate iný protokol, iný model dôvery a závislosť od toho účtu a koordinačnej služby. Neznamená to, že sa neupravený klient OpenVPN pripojí k overlay sieti, a nedáva vám poslucháča OpenVPN na verejnej adrese.
Čo nasadenie ešte potrebuje
Nech si vyberiete akúkoľvek cestu, prevádzkové základy rozhodujú, či vydrží týždeň. Uchovávajte prihlasovacie údaje servera v súkromí, vydávajte odlišné identity klientov a plánujte odvolanie skôr, než ho budete potrebovať. Rozhodnite, ako prichádzajú aktualizácie, čo drží službu v chode na pozadí a ako sa zotaví po reštarte alebo zmene siete.
Vyhnite sa skratkám, ktoré vyzerajú pohodlne: zastaraná statická binárka, pevne zapísané názvy rozhraní a štartovací skript, ktorý vymaže existujúcu politiku firewallu. Výsledok potom prijmite len na základe konkrétneho testu: oprávnený vzdialený klient dosiahne zamýšľaný zdroj, zakázané destinácie zostanú nedostupné a zariadenie sa samo vráti po podporovanej udalosti životného cyklu. Prístup root je jedna z možných prísad tohto výsledku a málokedy tá rozhodujúca.