Root змяняе, якія сеткавыя аперацыі працэс мае права спрабаваць. Ён не дае тэлефону публічна дасяжны адрас, не рэзервуе ўваходнае адлюстраванне ў аператара і не трымае дэман жывым пасля перазагрузкі. Калі вы вырашаеце, ці можа Android-тэлефон выступаць як VPN-сервер, раздзяліце тры пытанні: ці можа меркаваны кліент увогуле дасягнуць слухача, якая мадэль прывілеяў патрэбна рэалізацыі сервера і што трэба перасылаць пасля ўзняцця тунэля.

Хто і адкуль павінен дасягнуць тэлефона

Кліент у той жа дазволенай LAN і кліент на мабільных даных правяраюць дзве розныя сеткі. Спачатку вызначцеся з меркаванай, бо адказы не пераносяцца. У Wi-Fi непатрабаваны ўваходны трафік звычайна патрабуе адлюстравання на вышэйшым маршрутызатары і прыдатнага публічнага шляху за ім. У сотавай сетцы carrier-grade NAT азначае, што ўваходны IPv4 часта недаступны, незалежна ад таго, што дазваляе тэлефон.

Менавіта апошні пункт root не можа закрануць. Лакальны firewall тэлефона і NAT аператара — розныя сістэмы, і змена першай не ўплывае на другую. Прыватны адрас інтэрфейсу, значок мабільных даных або сокет, які слухае, не з'яўляюцца доказам дасяжнасці. Калі шлях аператара ўсё ж прапануе глабальна маршрутызуемы IPv6, вам усё роўна патрэбна мэтанакіраваная палітыка слухача і firewall для яго; мець адрас — гэта не тое самае, што прымаць злучэнні.

Client pathWhat actually decides reachability
Same LANThe phone's listener and its local firewall
Wi-Fi, from the internetA mapping on the upstream router plus a usable public path beyond it
Cellular IPv4The carrier's NAT, which the handset does not control
Cellular IPv6Address, 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 — адзін з магчымых складнікаў гэтага выніку і рэдка вырашальны.

Падобныя артыкулы