Tasker жана WireGuard: бир туннел үчүн туура Intent жөнөтүү
Tasker алыстан башкаруу кабылдагычы аркылуу WireGuardдан бир аталган туннелди көтөрүүнү сурай алат. Башкаруучуга дагы эле CONTROL_TUNNELS уруксаты керек.
WireGuard ишмердүүлүгүн баштоо колдонмону алдыңкы планга чыгарат, белгилүү туннелди көтөрбөйт. Колдонмону ачып күткөн автоматташтыруу сыноодон өтөт жана телефон үй экранында отурган алгачкы жолу ишке ашпай калат. WireGuard аталган туннелдер үчүн колдоого алынган алыстан башкаруу жолун сунуштайт жана ал көп рецепттер сунуштагандан тар. Төмөнкү текшерүү тизмеси ошол жолду уруксаттан байкалган жыйынтыкка чейин жүрөт.
Алыстан башкаруу күйгүзүлгөнүн текшериңиз
Алыстан башкаруу кабылдагычы ар дайым уга бербейт. WireGuard жөндөөлөрүндө туннелдерди алыстан башкарууну күйгүзүүчү опция бар жана ал күйгүзүлмөйүнчө кабылдагыч катуу үн менен ишке ашпай калуунун ордуна сурамжылоолорду этибарга албайт. Демейки маани атайын ушундай, анткени туннелдерди көтөрө алган экспорттолгон кабылдагыч колдонмо орнотулган ар бир түзмөктө коопсуздук тешиги болмок. Аны интерфейс аркылуу күйгүзүңүз жана жасаганыңызды жазып коюңуз, анткени бул келечектеги колдонуучу эмнеге көз каранды экенин билбей эле өчүрө ала турган жөндөө.
Жогорку кабылдагыч аталган UP жана DOWN сурамжылоолорун гана иштетет, ошондуктан бул жерде туннел түзүүгө же анын конфигурациясын оңдоого жол жок. Ага таянардан мурун компонент орнотулган курулушта бар экенин ырастаңыз: adb shell dumpsys package com.wireguard.android | grep -i receiver жарыяланган кабылдагычтарды тизмелейт, ал эми алыстан башкаруу кабылдагычы жок курулуш эч качан жооп бербейт. Эгер иш агымына башка акыркы чекит же башка өнөктөш керек болсо, бул башка туннел жана колдонмонун ичиндеги өзүнчө кол менен жөндөө.
Башкаруучунун кандай уруксаты бар экенин текшериңиз
WireGuard кабылдагычты кооптуу уруксат менен коргойт, com.wireguard.android.permission.CONTROL_TUNNELS, ал башкаруучу колдонмодо болушу керек. Өздүк трансляция жөнөтүүчү эч качан жарыялаган эмес же эч качан берилбеген уруксатты жарата албайт. Бул автоматташтыруу рецепттери автоматташтырууда жок мүмкүнчүлүктү үнсүз божомолдогон кадам.
Тапшырманы жазганга чейин эки тарапты теңириңиз. Биринчи буйрук жарыяланган уруксатты тизмелейт, экинчиси башкаруучунун пакетинде анын чындап бар-жогун көрсөтөт. Уруксатты манифестинде жарыялаган, бирок аткаруу убагында эч качан ала албаган башкаруучу баары бир ишке ашпайт жана ишке ашпоо диалог катары эмес, үнсүздүк катары келет.
adb shell pm list permissions -g -d | grep -i control_tunnels
adb shell dumpsys package net.dinglisch.android.taskerm | grep -i control_tunnels
Эгер башкаруучуда уруксат жок болсо, трансляцияны кол менен куруунун ордуна колдонмо чындап колдогон интеграцияны колдонуңуз. Intent жөнөтүп, чакыруу ийгиликтүү болгонун көрүү Android аны кабыл алганын гана далилдейт, WireGuard ага ылайык аракет кылганын эмес. Текшерилбеген жөнөтүүнү белгисиз деп кабыл алыңыз, ийгилик деп эмес.
Intent талааларын орнотулган колдонмо менен салыштырыңыз
Төрт талаа бүт сурамжылоону алып жүрөт жана ар биринин башкаларга так окшош ишке ашпоо ыкмасы бар. Аракетти, туннелдин кошумча талаасын, пакетти жана максатты бир топтом катары туура алыңыз.
Action: com.wireguard.android.action.SET_TUNNEL_UP
Extra: tunnel:lab-wg
Package: com.wireguard.android
Target: Broadcast Receiver
Аракет UP же DOWN деп атайт, башка эч нерсе эмес, кошумча талаа так конфигурацияланган туннел атын алып жүрөт, пакет жеткирүүнү WireGuard менен чектейт, ал эми максат аракет эмес, кабылдагыч болушу керек. Жазуу катасы бар туннел аты өчүрүлгөн кабылдагыч сыяктуу эле үнсүздүк жаратат, ошондуктан автоматташтыруу бузулду деген тыянакка келүүдөн мурун атты колдонмодон окуңуз. DOWN аракети ошол эле кошумча талаа жана пакет менен com.wireguard.android.action.SET_TUNNEL_DOWN. Сыноо убагында бир убакта бир сурамжылоо жөнөтүңүз, анткени бири-бирин кууп жеткен эки трансляция эч ким таба албаган абалды жаратат.
Ошол эле сурамжылоону түзмөктөгү shellден сынап көрүңүз, Intentти автоматташтыруудан ажыратуу үчүн. Эгер ошол буйрук ишке ашпай, Tasker тапшырмасы ийгиликтүү болсо, айырма талаалардын мааниси эмес, жөнөтүүчүнүн уруксаты.
adb shell am broadcast -a com.wireguard.android.action.SET_TUNNEL_UP -e tunnel lab-wg --receiver-permission com.wireguard.android.permission.CONTROL_TUNNELS
Триггер эмнени камтыбаганын текшериңиз
Колдонмонун башталышы же алдыңкы планга чыгуу окуясы байланыш сурай алат, бирок колдонмо бул окуя иштетилгенге чейин эле ат издөөнү же баштапкы сурамжылоону аракет кылган болушу мүмкүн. Триггер система абал өзгөрүүсүн байкаганда иштеп баштайт, бул колдонмо иштей баштагандан кийин. Эгер колдонмо туннелден тышкары эч качан байланышпашы керек болсо, баштоо триггери блоктоо эрежеси эмес жана ага кечиктирүү кошуу менен аны ошондой кылууга болбойт. Блоктоо жүрүм-туруму үчүн колдоого алынган дайыма күйүк же колдонмо боюнча саясатты конфигурациялаңыз, ал эми триггерди ыңгайлуулук үчүн гана калтырыңыз.
Блоктоо жүрүм-туруму такыр башка жерде жашайт. adb shell settings get global always_on_vpn_app дайыма күйүк деп бекитилген пакетти атайт, ал эми adb shell dumpsys connectivity | grep -i vpn система азыр көзөмөлдөп жаткан VPN тармактарын көрсөтөт. Алардын эч бирин баштоо триггери алмаштыра албайт.
Ошол эле ой жүгүртүү сессиянын экинчи учуна да тиешелүү. Бир терезе фокусту жоготкону үчүн туннелди түшүрүү фондук ишти, аутентификация жардамчыларын жана байланышка таянган башка колдонмолорду бузат. Фокус өзгөрүүсүнүн ордуна атайын сессия аягын аныктаңыз жана автоматташтыруу контекстти алмаштырганда ылдам UP жана DOWN ырааттуулуктарынан качыңыз.
Жыйынтыкты текшериңиз, жөнөтүүнү эмес
Катасыз кайткан трансляцияны Android кабыл алды, андан ашык эмес. Туннелдин абалын колдонмодон окуңуз, ал эми иш агымынын даярдыгын кийинки кадамга чындап керектүү нерседен окуңуз. Булар эки башка текшерүү жана биринчиден өтүү экинчисин билдирбейт.
Интерфейстин абалын да түз окуңуз: adb shell ip -brief addr show tun0 туннелдин интерфейсин жана анын дарегин басып чыгарат, ал эми дареги жок интерфейс көтөрүлгөнү менен пайдаланууга жараксыз. Андан кийин жеке кызматтын өзүн текшериңиз, анткени кол алышуусуз же маршрутсуз көтөрүлгөн туннел маанилүү болгон тапшырмада баары бир ишке ашпайт. Бир аталган байланышты өз уруксатынын чыныгы чектеринде башкарган автоматташтырууга интерфейске тийүү, root буйругун иштетүү же Androidдин тармактык коргоосун алсыратуу керек эмес.