VPN-сервер на Android: root не робіць тэлефон дасяжным
Тры асобныя праблемы вырашаюць, ці можа тэлефон абслугоўваць VPN-кліентаў: уваходны шлях, мадэль прывілеяў і перасыланне. Root закранае толькі сярэднюю.
Root змяняе, якія сеткавыя аперацыі працэс мае права спрабаваць. Ён не дае тэлефону публічна дасяжны адрас, не рэзервуе ўваходнае адлюстраванне ў аператара і не трымае дэман жывым пасля перазагрузкі. Калі вы вырашаеце, ці можа Android-тэлефон выступаць як VPN-сервер, раздзяліце тры пытанні: ці можа меркаваны кліент увогуле дасягнуць слухача, якая мадэль прывілеяў патрэбна рэалізацыі сервера і што трэба перасылаць пасля ўзняцця тунэля.
Хто і адкуль павінен дасягнуць тэлефона
Кліент у той жа дазволенай LAN і кліент на мабільных даных правяраюць дзве розныя сеткі. Спачатку вызначцеся з меркаванай, бо адказы не пераносяцца. У Wi-Fi непатрабаваны ўваходны трафік звычайна патрабуе адлюстравання на вышэйшым маршрутызатары і прыдатнага публічнага шляху за ім. У сотавай сетцы carrier-grade NAT азначае, што ўваходны IPv4 часта недаступны, незалежна ад таго, што дазваляе тэлефон.
Менавіта апошні пункт root не можа закрануць. Лакальны firewall тэлефона і NAT аператара — розныя сістэмы, і змена першай не ўплывае на другую. Прыватны адрас інтэрфейсу, значок мабільных даных або сокет, які слухае, не з'яўляюцца доказам дасяжнасці. Калі шлях аператара ўсё ж прапануе глабальна маршрутызуемы IPv6, вам усё роўна патрэбна мэтанакіраваная палітыка слухача і firewall для яго; мець адрас — гэта не тое самае, што прымаць злучэнні.
| 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 |
Абслугоўванне і перасыланне — два розныя поспехі
Завершаны ручны абмен VPN даказвае, што тунэль існуе. Ён не даказвае, што кліент можа дасягнуць LAN за тэлефонам, і не даказвае, што тэлефон можа служыць выхадам у інтэрнэт. Гэта асобныя канфігурацыі, пабудаваныя на ўнутраным плане адрасоў, маршрутах, паводзінах вяртання і вузкай палітыцы перасылання для задачы, якую вы сапраўды хочаце.
Рэжым збою прадказальны: ручны абмен праходзіць, кліент паказвае злучэнне, і нічога не загружаецца. Перш чым адладжваць кліента, вырашыце, якую з дзвюх роляў вы будуеце. Аддалены доступ да прылады ў сетцы тэлефона і выхад у інтэрнэт праз поўны тунэль патрабуюць розных правілаў перасылання, і дазвол абодвух, калі вы хацелі адно, пашырае ўздзеянне, не дадаючы магчымасці, якую вы прасілі.
Мадэль прывілеяў — гэта выбар, а не root ці нічога
Звычайны дэман OpenVPN, які выкарыстоўвае TUN-прыладу ядра, патрабуе адпаведных магчымасцяў, доступу да вузла прылады і супрацоўніцтва з палітыкай бяспекі Android. Root не з'яўляецца поўным вызваленнем ад SELinux; прывілеяваны працэс усё роўна абмежаваны палітыкай платформы. Таму бінарнік, які спакойна працуе на Linux-серверы, можа збаіць на тэлефоне без відавочнай памылкі пра дазволы.
Рэалізацыя шлюза ў прасторы карыстальніка можа мець зусім іншую мадэль прывілеяў, таму агульнае сцвярджэнне, што кожнаму VPN-серверу на Android патрэбен root, занадта шырокае. Root дае вам магчымасць спрабаваць больш аперацый, а не гарантыю, што іх дазволяць або што вынік будзе дасяжны.
Уласная рэгістрацыя VPN-сэрвісу Android — зноў асобны механізм. Яна дае праграме кіраваны кліенцкі інтэрфейс з вызначаным жыццёвым цыклам; гэта не ўніверсальны ўсталёўшчык сервера, і запуск дэмана з тэрмінала не дае яму кіравання пастаяннага ўключэння, палітыкі для асобных праграм ці ўласнага шляху аднаўлення.
Калі вам патрэбен пункт выхаду, змяніце архітэктуру
Калі мэта — проста аддалены выхад у інтэрнэт праз тэлефон, а не сумяшчальнасць з існуючым профілем OpenVPN, лепш падыходзіць падтрыманы выхадны вузел у накладзенай сетцы. Tailscale дакументуе ролю выхаднога вузла Android з уласнымі крокамі рэгістрацыі, аўтарызацыі і выбару кліента.
Камраміс рэальны і варты таго, каб сказаць прама: вы прымаеце іншы пратакол, іншую мадэль даверу і залежнасць ад таго ўліковага запісу і службы каардынацыі. Гэта не далучае нязменены кліент OpenVPN да накладзенай сеткі і не дае вам слухача OpenVPN на публічным адрасе.
Што яшчэ патрэбна разгортванню
Які б шлях вы ні выбралі, аперацыйныя асновы вырашаюць, ці пражыве гэта тыдзень. Трымайце ўліковыя даныя сервера ў тайне, выдавайце асобныя ідэнтычнасці кліентаў і плануйце адкліканне да таго, як яно спатрэбіцца. Вырашыце, як прыходзяць абнаўленні, што трымае службу запушчанай у фоне і як яна аднаўляецца пасля перазагрузкі або змены сеткі.
Пазбягайце зручных на выгляд скаротаў: састарэлы статычны бінарнік, жорстка зашытыя імёны інтэрфейсаў і стартавы скрыпт, які скідвае існуючую палітыку firewall. Затым прымайце вынік толькі па канкрэтным тэсце: аўтарызаваны аддалены кліент дасягае патрэбнага рэсурсу, забароненыя пункты прызначэння застаюцца недаступнымі, а прылада сама вяртаецца пасля падтрыманай падзеі жыццёвага цыклу. Доступ root — адзін з магчымых складнікаў гэтага выніку і рэдка вырашальны.