A WireGuard tevékenységének elindítása az alkalmazást hozza előtérbe, nem emel fel egy adott alagutat. Egy automatizálás, amely megnyitja az alkalmazást és vár, átmegy a teszten, és az első alkalommal meghiúsul, amikor a telefon már a kezdőképernyőn ül. A WireGuard támogatott távvezérlési útvonalat kínál megnevezett alagutakhoz, és ez szűkebb, mint amit a legtöbb recept sugall. Az alábbi ellenőrzőlista ezt az útvonalat járja be az engedélytől a megfigyelt eredményig.

Ellenőrizze, hogy a távvezérlés engedélyezve van-e

A távvezérlő vevő nem mindig figyel. A WireGuard beállításai között van egy kapcsoló, amely engedélyezi az alagutak távvezérlését, és amíg az a kapcsoló be nincs kapcsolva, a vevő figyelmen kívül hagyja a kéréseket ahelyett, hogy hangosan meghiúsulna. Az alapértelmezés szándékos, mert egy exportált vevő, amely fel tudna emelni alagutakat, biztonsági rés lenne minden eszközön, amelyre az alkalmazás telepítve van. Engedélyezze a felületen keresztül, és jegyezze fel, hogy megtette, mert ez olyan beállítás, amelyet egy későbbi felhasználó kikapcsolhat anélkül, hogy tudná, mi függött tőle.

A fenti vevő csak megnevezett UP és DOWN kéréseket kezel, így itt nincs útvonal alagút létrehozására vagy konfigurációjának szerkesztésére. Mielőtt támaszkodna rá, erősítse meg, hogy az összetevő jelen van a telepített buildben: adb shell dumpsys package com.wireguard.android | grep -i receiver felsorolja a deklarált vevőket, és a távvezérlő vevő nélküli build soha nem válaszol. Ha a munkafolyamatnak más végpontra vagy más partnerre van szüksége, az másik alagút és külön kézi beállítás az alkalmazáson belül.

Ellenőrizze, milyen engedéllyel rendelkezik a vezérlő

A WireGuard egy veszélyes engedéllyel védi a vevőt, com.wireguard.android.permission.CONTROL_TUNNELS, amellyel a vezérlő alkalmazásnak rendelkeznie kell. Egy saját adás nem tud olyan engedélyt létrehozni, amelyet a küldő soha nem deklarált, vagy amelyet soha nem kapott meg. Ez az a lépés, ahol az automatizálási receptek csendesen feltételeznek egy képességet, amellyel az automatizálás nem rendelkezik.

A feladat megírása előtt ellenőrizze mindkét oldalt. Az első parancs felsorolja a deklarált engedélyt, a második pedig megmutatja, hogy a vezérlő csomagja valóban rendelkezik-e vele. Az a vezérlő, amely a manifestjében deklarálja az engedélyt, de futásidőben soha nem kapta meg, továbbra is meghiúsul, és a hiba csendként érkezik, nem párbeszédablakként.

adb shell pm list permissions -g -d | grep -i control_tunnels
adb shell dumpsys package net.dinglisch.android.taskerm | grep -i control_tunnels

Ha a vezérlő nem rendelkezik az engedéllyel, használja azt az integrációt, amelyet az alkalmazás valóban támogat, ahelyett hogy kézzel építene adást. Egy Intent elküldése és annak látása, hogy a hívás sikerült, csak azt bizonyítja, hogy az Android elfogadta, nem azt, hogy a WireGuard cselekedett rá. Az ellenőrizetlen küldést ismeretlenként kezelje, ne sikeresként.

Ellenőrizze az Intent mezőit a telepített alkalmazás ellenében

Négy mező hordozza az egész kérést, és mindegyiknek van egy hiba módja, amely pontosan úgy néz ki, mint a többi. A műveletet, az alagút kiegészítőt, a csomagot és a célpontot együtt, készletként állítsa helyesen.

Action:  com.wireguard.android.action.SET_TUNNEL_UP
Extra:   tunnel:lab-wg
Package: com.wireguard.android
Target:  Broadcast Receiver

A művelet UP vagy DOWN nevet ad és semmi mást, a kiegészítő a pontosan beállított alagútnevet hordozza, a csomag a WireGuardra korlátozza a kézbesítést, és a célpontnak a vevőnek kell lennie, nem egy tevékenységnek. Az elgépelt alagútnév ugyanazt a csendet eredményezi, mint egy letiltott vevő, ezért olvassa el a nevet az alkalmazásban, mielőtt arra jutna, hogy az automatizálás elromlott. A DOWN művelet com.wireguard.android.action.SET_TUNNEL_DOWN, ugyanazzal a kiegészítővel és csomaggal. Tesztelés közben egyszerre egy kérést küldjön, mert két egymással versengő adás olyan állapotot hoz létre, amelyet senki nem tud hozzárendelni.

Ugyanezt a kérést tesztelje az eszköz shelljéből, hogy elválassza az Intentet az automatizálástól. Ha az a parancs meghiúsul, miközben a Tasker feladata sikerül, a különbség a küldő engedélye, nem a mezőértékek.

adb shell am broadcast -a com.wireguard.android.action.SET_TUNNEL_UP -e tunnel lab-wg --receiver-permission com.wireguard.android.permission.CONTROL_TUNNELS

Ellenőrizze, mit nem fed le a kiváltó

Egy alkalmazásindítási vagy előtér-esemény kapcsolatot kérhet, de az alkalmazás már megkísérelhetett névfeloldást vagy kezdeti kérést, mielőtt ezt az eseményt kezelik. A kiváltó akkor tüzel, amikor a rendszer észleli az állapotváltozást, ami azután van, hogy az alkalmazás elkezdett dolgozni. Ha az alkalmazás soha nem kommunikálhat az alagúton kívül, az indítási kiváltó nem blokkolási szabály, és nem tehető azzá késleltetés hozzáadásával. A blokkolási viselkedéshez konfiguráljon támogatott mindig bekapcsolt vagy alkalmazásonkénti szabályzatot, és a kiváltót csak kényelemből tartsa meg.

A blokkolási viselkedés egészen máshol él. adb shell settings get global always_on_vpn_app megnevezi a mindig bekapcsoltként rögzített csomagot, és adb shell dumpsys connectivity | grep -i vpn megmutatja a VPN hálózatokat, amelyeket a rendszer jelenleg követ. Egyik sem olyan, amelyet egy indítási kiváltó helyettesíteni tudna.

Ugyanez az érvelés érvényes a munkamenet másik végén. Az alagút leengedése amiatt, hogy egy ablak elvesztette a fókuszt, megtöri a háttérmunkát, a hitelesítési segédeket és minden más alkalmazást, amely a kapcsolatra támaszkodott. Határozzon meg szándékos munkamenet-véget a fókuszváltás helyett, és kerülje a gyors UP és DOWN sorozatokat, amikor az automatizálás kontextust vált.

Az eredményt ellenőrizze, ne a küldést

Egy hiba nélkül visszatérő adást az Android elfogadott, és semmi többet. Olvassa ki az alagút állapotát az alkalmazásból, és a munkafolyamat készségét abból, amire a következő lépésnek valóban szüksége van. Ez két különböző ellenőrzés, és az első átlépése nem jelenti a másodikat.

Olvassa ki közvetlenül a felület állapotát is: adb shell ip -brief addr show tun0 kiírja az alagút felületét és címét, és a cím nélkül létező felület fent van anélkül, hogy használható lenne. Ezután ellenőrizze magát a privát szolgáltatást, mert a kézfogás vagy útvonal nélkül fent lévő alagút továbbra is meghiúsul abban a feladatban, amely számított. Egy megnevezett kapcsolatot a valódi engedélyhatárain belül vezérlő automatizálásnak nem kell megérintenie a felületet, root parancsot futtatnia vagy gyengítenie az Android hálózati védelmeit.

Kapcsolódó cikkek