Дзе павінна жыць правіла файрвола Android, калі VPN уключаны
Актыўным можа быць толькі адзін VpnService, таму праграма файрвола і праграма VPN не складваюцца. Прайдзіце адзін працоўны запыт і пастаўце кожнае правіла там, дзе яго трафік сапраўды праходзіць.
У вас адно сказ правіла: гэтая праграма можа дасягаць працоўнай службы, і больш нічога. Наступнае пытанне выглядае як выбар прадукту, але гэта пытанне месца, бо кожны магчымы пункт прымянення бачыць розную частку трафіку тэлефона. Шлюз бачыць толькі тое, што ўваходзіць у тунель. Фільтр на баку тэлефона бачыць толькі тое, што яму дазволена назіраць. Калі правесці адзін запыт праз абодва, адказ робіцца відавочным.
Пачніце са сказа, а не з прадукту
Разгарніце патрабаванне, перш чым што-небудзь выбіраць. Гэта значыць пакет і профіль, у якім ён працуе, бо праграма ў працоўным профілі — гэта іншы карыстальнік, чым тая ж праграма ў асабістым профілі. Гэта значыць пункт прызначэння: хост, порт і пратакол, а не назва службы. Гэта значыць шлях DNS, які вырашае гэтую назву, і гэта значыць, што павінна адбыцца, калі тунель недаступны.
У запісаным выглядзе правіла для прыкладу — гэта чатыры радкі: працоўная праграма можа дасягаць працоўнай службы; працоўная праграма не можа дасягаць нічога іншага; іншыя праграмы не змяняюцца; без тунеля працоўнай праграме адмаўляюць, а не дазваляюць адкат. У кожнага радка ёсць уладальнік, і гэта не адзін і той жа ўладальнік.
Крок 1: што можа забяспечыць сам тэлефон
Файрвол Android без root — гэта VpnService, які збірае трафік лакальна, нават калі за ім няма аддаленага тунеля. Android дазваляе адну актыўную службу VPN на профіль карыстальніка, таму другая праграма файрвола не ўстанаўліваецца за першай. Яна замяняе яе, і інтэрфейс, які фільтравала першая праграма, знікае.
Менавіта таму ўсталёўка файрвола побач з кліентам VPN рэдка дае тое спалучэнне, якога чакаюць людзі. Калі файрвол запускаецца, а VPN адключаецца, нічога не аб’ядналася; двое памяняліся месцамі. Замена інтэрфейса — гэта не супрацоўніцтва, і сімптом — тунель, які ўвесь час абрываецца, калі адкрываюць другую праграму.
Падтрымліваемыя варыянты існуюць: фільтраванне, убудаванае ў кліент VPN, які вы ўжо выкарыстоўваеце, кіраваныя сродкі платформы праз кантролер палітыкі прылады або працоўны профіль, ці архітэктура, якую дакументуе вытворца. Усё іншае — гэта эксперымент, які трэба пераправяраць пасля кожнага абнаўлення праграм.
Крок 2: што можа забяспечыць шлюз
Пасля таго як трафік расшыфраваны на далёкім канцы, шлюз можа абмежаваць перасылаемыя пакеты зацверджанымі адрасамі, службамі або аўтэнтыфікаванымі ідэнтычнасцямі VPN. Гэта сапраўднае прымяненне для ўсяго, што выходзіць праз яго, і гэта правільнае месца, каб абмежаваць доступ да прыватных падсетак.
Чаго ён не атрымлівае — гэта ідэнтычнасць праграмы тэлефона, прымацаваная да кожнага звычайнага IP-пакета. Некалькі праграм, якія дзеляць адзін адрас тунеля, для шлюза — адзін суб’ект, калі праект не дае ім асобных адрасоў або асобных аўтэнтыфікаваных ідэнтычнасцяў. Таму правіла на карыстальніка на шлюзе не з’яўляецца правілам на праграму на тэлефоне, як бы кансоль кіравання яго ні называла.
Крок 3: пералічыце тое, што ніколі не прыходзіць
Праграма, выключаная з VPN, якая звяртаецца да блізкай прылады, ніколі не дасягае шлюза, таму знешні файрвол не можа адмовіць у пакеце, які ён не атрымлівае. Тое ж датычыцца выпадковага прамога маршруту падчас збою і ўваходнага ўздзеяння ў лакальнай сетцы доступу. Гэта лакальныя межы па вызначэнні.
І наадварот: лакальнае правіла, якое дазваляе злучэнне, не дае доступу праз ACL прыватнай сеткі шлюза. Адзін запыт можа падлягаць абедзвюм межам, і задавальненне адной нічога не кажа пра другую.
Крок 4: прызначце кожнае правіла шляху
Змесціце рашэнне ў табліцу, перш чым нешта наладжваць, бо пустыя ячэйкі — гэта месца, дзе праекты правальваюцца.
| Шлях | Хто можа гэта забяспечыць | Сляпое пляма |
|---|---|---|
| Працоўная праграма да працоўнай службы, тунель уключаны | ACL шлюза па адрасе і службе, плюс лакальная блакіроўка іншых шляхоў | Шлюз не бачыць, якая праграма адправіла пакет |
| Працоўная праграма да іншых прызначэнняў, тунель уключаны | Лакальны фільтр, які ўлічвае праграмы, або шлюз, калі гэтыя прызначэнні адрасаваныя там | Лакальны фільтр павінен быць актыўным VpnService |
| Працоўная праграма без тунеля | Лакальная адмова, каб праграма не магла выбраць прамы шлях | Патрабуе, каб фільтр перажыў знікненне тунеля |
| Блізкая прылада LAN | Толькі лакальная палітыка | Шлюз ніколі гэтага не бачыць |
Працаздольная форма — дзве межы з дзвюма задачамі. Лакальная мяжа, якая ўлічвае праграмы, кіруе паводзінамі тэлефона, уключаючы прамы адкат, а мяжа шлюза кіруе аддаленымі рэсурсамі. Бок шлюза можа дазволіць працоўную службу і адмовіць кожнай іншай прыватнай падсетцы, а палітыка на баку тэлефона прымае ўласнае рашэнне пра прамы шлях, які праграма магла б выбраць.
Крок 5: трымайце транспарт жывым, потым праверце
Якую б лакальную палітыку вы ні выбралі, яна павінна дазваляць транспарт, які ўсталёўвае і падтрымлівае VPN. Блакіроўка гэтага транспарту пакідае тэлефон без тунеля і без палітыкі, што не забяспечвае нічога паслядоўна і цяжка дыягнастуецца, бо праграма проста не мае сеткі.
Затым праверце кожны радок зыходнага сказа, а не агульнае ўражанне: працоўная праграма дасягае працоўнай службы, тая ж праграма атрымлівае адмову на іншым прызначэнні, праграма не для працы паводзіць сябе як раней, і пры спыненым тунелі працоўная праграма не адкочваецца да прамога злучэння. Праверце шлях DNS асобна, бо прыватны DNS або шыфраваны рэзалвер могуць абысці фільтр, які правярае толькі адрасы.
Калі адзін з гэтых крокаў немагчыма задаволіць на тэлефоне, патрабаванне — гэта пытанне архітэктуры, а не налада файрвола. Падзел палітыкі паміж прыладай, якой вы кіруеце, і шлюзам, якім вы кіруеце, звычайна і ёсць сумленны адказ, а дакументацыя па злучэннях Android VPN — гэта месца, дзе можна пацвердзіць, што платформа дазволіць і не дазволіць адной службе.