Tasker eta WireGuard: tunel baterako Intent egokia bidaltzea
Taskerrek WireGuard-en bila dezake tunel izendatu bat urruneko kontrol-hartzailearen bidez altxa dezan. Kontrolagailuak CONTROL_TUNNELS baimena behar du oraindik.
WireGuard-en jarduera abiarazteak aplikazio bat ekartzen du aurrera, ez du tunel zehatz bat altxatzen. Aplikazioa ireki eta itxaroten duen automatizazio batek proba gaindituko du eta huts egingo du telefonoa jada hasierako pantailan dagoen lehen aldian. WireGuard-ek urruneko kontrol bide bateragarri bat eskaintzen du izendatutako tunelentzat, eta errezeta gehienek iradokitzen dutena baino estuagoa da. Beheko kontrol-zerrendak bide hori egiten du baimenetik behatutako emaitzara.
Egiaztatu urruneko kontrola gaituta dagoela
Urruneko kontrol-hartzailea ez dago beti entzuten. WireGuard-en ezarpenek tunelen urruneko kontrola gaitzen duen aukera bat daukate, eta aukera hori piztuta egon arte hartzaileak eskaerak ez ditu kontuan hartzen, ozenki huts egin beharrean. Lehenetsitako balioa nahita da, tunelak altxa zitzakeen kanporatutako hartzaile bat segurtasun-zulo izango litzatekeelako aplikazioa instalatu zuen gailu bakoitzean. Gaitu ezazu interfazearen bidez eta idatzi egin duzula, etorkizuneko erabiltzaile batek itzali dezakeen ezarpena delako, zeren mende zegoen jakin gabe.
Goiko hartzaileak izendatutako UP eta DOWN eskaerak baino ez ditu lantzen, beraz hemen ez dago tunel bat sortzeko edo haren konfigurazioa editatzeko biderik. Egiaztatu osagaia instalatutako bertsioan dagoela hari fidatu aurretik: adb shell dumpsys package com.wireguard.android | grep -i receiver deklaratutako hartzaileak zerrendatzen ditu, eta urruneko kontrol-hartzailea gabeko bertsio batek ez du inoiz erantzungo. Lan-fluxuak beste mutur puntu edo beste pare bat behar badu, hori beste tunel bat da eta aplikazioaren barruan eskuzko ezarpen bereizia.
Egiaztatu kontrolagailuak duen baimena
WireGuard-ek hartzailea baimen arriskutsu batekin babesten du, com.wireguard.android.permission.CONTROL_TUNNELS, kontrolatzen duen aplikazioak eduki behar duena. Norbere emisio batek ezin du sortu bidaltzaileak inoiz deklaratu ez zuen edo inoiz eman ez zitzaion baimen bat. Hau da automatizazio-errezetek isilik suposatzen duten urratsa, automatizazioak ez duen gaitasun bat.
Egiaztatu bi aldeak zeregina idatzi aurretik. Lehenengo komandoak deklaratutako baimena zerrendatzen du, eta bigarrenak kontrolagailuaren paketeak benetan daukala erakusten du. Baimena manifestuan deklaratzen duen baina exekuzio garaian inoiz jaso ez zuen kontrolagailu batek huts egiten du oraindik, eta hutsegitea isiltasun gisa iristen da, ez elkarrizketa gisa.
adb shell pm list permissions -g -d | grep -i control_tunnels
adb shell dumpsys package net.dinglisch.android.taskerm | grep -i control_tunnels
Kontrolagailuak baimena ez badu, erabili aplikazioak benetan onartzen duen integrazioa, eskuz emisio bat eraiki beharrean. Intent bat bidaltzeak eta deia ondo joan dela ikusteak Android-ek onartu zuela baino ez du frogatzen, ez WireGuard-ek horren arabera jardun zuenik. Egiaztatu gabeko bidalketa ezezagun gisa hartu, ez arrakasta gisa.
Egiaztatu Intent-en eremuak instalatutako aplikazioaren aurka
Lau eremuk daramate eskaera osoa, eta bakoitzak besteekin berdin-berdin ikusten den hutsegite modu bat du. Asmatu ekintza, tunelaren eremu gehigarria, paketea eta helburua multzo gisa.
Action: com.wireguard.android.action.SET_TUNNEL_UP
Extra: tunnel:lab-wg
Package: com.wireguard.android
Target: Broadcast Receiver
Ekintzak UP edo DOWN izendatzen du eta besterik ez, eremu gehigarriak konfiguratutako tunel-izena zehazki darama, paketeak entrega WireGuard-era mugatzen du, eta helburua hartzailea izan behar da, ez jarduera bat. Tunel-izen batek letra-errore batekin hartzaile desgaituta batek bezalako isiltasuna sortzen du, beraz irakurri izena aplikazioan automatizazioa hondatuta dagoela ondorioztatu aurretik. DOWN ekintza com.wireguard.android.action.SET_TUNNEL_DOWN da, eremu gehigarri eta pakete berarekin. Bidali eskaera bat aldi berean probatzen duzun bitartean, elkarren bila dabiltzan bi emisiok inork egozten ez dezakeen egoera sortzen dutelako.
Probatu eskaera bera gailuko shell batetik, Intent-a automatizaziotik bereizteko. Komando horrek huts egiten badu Tasker-en zereginak arrakasta duen bitartean, aldea bidaltzailearen baimena da, ez eremuen balioak.
adb shell am broadcast -a com.wireguard.android.action.SET_TUNNEL_UP -e tunnel lab-wg --receiver-permission com.wireguard.android.permission.CONTROL_TUNNELS
Egiaztatu abiarazleak estaltzen ez duena
Aplikazioaren abiarazte edo aurreko planoko gertaera batek konexio bat eska dezake, baina aplikazioak jada izen-bilaketa edo hasierako eskaera saiatu izana gerta daiteke gertaera hori landu aurretik. Abiarazlea sistemak egoera-aldaketa nabaritzen duenean pizten da, hau da aplikazioa lanean hasi ondoren. Aplikazioak inoiz tunelaren kanpoan komunikatu behar ez badu, abiarazte-abiarazle bat ez da blokeo-arau bat, eta ezin da halakoa bihurtu atzerapen bat gehituta. Konfiguratu beti aktibo edo aplikazio bakoitzeko politika bateragarria blokeo-jokabiderako, eta gorde abiarazlea erosotasunerako soilik.
Blokeo-jokabidea erabat beste leku batean bizi da. adb shell settings get global always_on_vpn_app beti aktibo gisa finkatutako paketea izendatzen du, eta adb shell dumpsys connectivity | grep -i vpn sistemak une honetan jarraitzen dituen VPN sareak erakusten ditu. Bi horietako bat ere ez da abiarazte-abiarazle batek ordezka dezakeen zerbait.
Arrazoi berbera saioaren beste muturrean aplikatzen da. Tunela jaistea leiho batek fokua galdu duelako atzeko planoko lana, autentifikazio-laguntzaileak eta konexioan oinarritzen zen beste edozein aplikazio hausten ditu. Definitu saio-amaiera deliberatua, foku-aldaketa izan beharrean, eta saihestu UP eta DOWN segida azkarrak automatizazioak testuinguruak aldatzen dituenean.
Egiaztatu emaitza, ez bidalketa
Akatsik gabe itzultzen den emisio bat Androidek onartu du eta besterik ez. Irakurri tunelaren egoera aplikaziotik, eta irakurri lan-fluxuaren prestutasuna hurrengo urratsak benetan behar duenetik. Bi egiaztapen desberdin dira, eta lehenengoa gainditzeak ez du bigarrena esan nahi.
Irakurri interfazearen egoera ere zuzenean: adb shell ip -brief addr show tun0 tunelaren interfazea eta haren helbidea inprimatzen ditu, eta helbiderik gabe existitzen den interfaze bat goraino dago baina ez da erabilgarria. Ondoren egiaztatu zerbitzu pribatua bera, esku-ematerik edo ibilbiderik gabe altxatutako tunel batek oraindik huts egiten duelako axola zuen zereginean. Konexio izendatu bat bere benetako baimen-mugen barruan kontrolatzen duen automatizazioak ez du interfazea ukitu, root komando bat exekutatu edo Android-en sare-babesak ahuldu behar.