Tasker və WireGuard: bir tunel üçün düzgün Intent göndərmək
Tasker uzaqdan idarəetmə qəbuledicisi vasitəsilə WireGuard-dan bir adlı tuneli qaldırmağı xahiş edə bilər. Nəzarətçi yenə də CONTROL_TUNNELS icazəsinə sahib olmalıdır.
WireGuard fəaliyyətini işə salmaq tətbiqi ön plana gətirir, konkret tuneli yuxarı qaldırmır. Tətbiqi açıb gözləyən avtomatlaşdırma sınaqda keçəcək və telefon artıq əsas ekranda oturduğu ilk anda uğursuz olacaq. WireGuard adlı tunellər üçün dəstəklənən uzaqdan idarəetmə yolu təqdim edir və bu, əksər reseptlərin təklif etdiyindən dardır. Aşağıdakı yoxlama siyahısı bu yolu icazədən müşahidə olunan nəticəyə qədər addımlayır.
Uzaqdan idarəetmənin aktiv olduğunu yoxlayın
Uzaqdan idarəetmə qəbuledicisi həmişə dinləmir. WireGuard parametrlərində tunellərin uzaqdan idarəetməsini aktivləşdirən seçim var və bu seçim yandırılmayana qədər qəbuledici sorğuları yüksək səslə uğursuz olmaq əvəzinə nəzərə almır. Standart davranış qəsdəndir, çünki tunelləri qaldıra bilən ixrac edilmiş qəbuledici tətbiqi quraşdıran hər cihazda təhlükəsizlik deşiyi olardı. Onu interfeys vasitəsilə aktivləşdirin və bunu etdiyinizi yazın, çünki bu, gələcək istifadəçinin nədən asılı olduğunu bilmədən söndürə biləcəyi bir parametrdir.
Yuxarı qəbuledici yalnız adlı UP və DOWN sorğularını emal edir, ona görə burada tunel yaratmaq və ya onun konfiqurasiyasını redaktə etmək üçün yol yoxdur. Etibar etməzdən əvvəl komponentin quraşdırılmış buraxılışda olduğunu təsdiqləyin: adb shell dumpsys package com.wireguard.android | grep -i receiver elan edilmiş qəbulediciləri sadalayır və uzaqdan idarəetmə qəbuledicisi olmayan buraxılış heç vaxt cavab verməyəcək. Əgər iş axını başqa son nöqtə və ya başqa həmkar tələb edirsə, bu başqa tunel və tətbiqin içində ayrıca əl quraşdırmasıdır.
Nəzarətçinin sahib olduğu icazəni yoxlayın
WireGuard qəbuledicini təhlükəli bir icazə ilə qoruyur, com.wireguard.android.permission.CONTROL_TUNNELS, və nəzarətçi tətbiq onda sahib olmalıdır. Fərdi yayım göndərənin heç vaxt elan etmədiyi və ya heç vaxt verilmədiyi icazəni yarada bilməz. Bu, avtomatlaşdırma reseptlərinin avtomatlaşdırmanın malik olmadığı bir qabiliyyəti sakitcə fərz etdiyi addımdır.
Tapşırığı yazmazdan əvvəl hər iki tərəfi yoxlayın. Birinci əmr elan edilmiş icazəni sadalayır, ikincisi isə nəzarətçi paketinin həqiqətən ona sahib olub-olmadığını göstərir. İcazəni manifestində elan edən, lakin icra zamanı heç vaxt verilməyən nəzarətçi yenə də uğursuz olur və uğursuzluq dialoq kimi deyil, sükut kimi gəlir.
adb shell pm list permissions -g -d | grep -i control_tunnels
adb shell dumpsys package net.dinglisch.android.taskerm | grep -i control_tunnels
Nəzarətçi icazəyə sahib deyilsə, əl ilə yayım qurmaq əvəzinə tətbiqin həqiqətən dəstəklədiyi inteqrasiyadan istifadə edin. Intent göndərib çağırışın uğurlu olduğunu görmək yalnız Android-in onu qəbul etdiyini sübut edir, WireGuard-ın ona uyğun hərəkət etdiyini yox. Yoxlanılmamış göndərişə naməlum kimi yanaşın, uğur kimi yox.
Intent sahələrini quraşdırılmış tətbiqə uyğun yoxlayın
Dörd sahə bütün sorğunu daşıyır və hər birinin digərləri ilə tamamilə eyni görünən uğursuzluq rejimi var. Fəaliyyəti, tunel əlavəsini, paketi və hədəfi bir dəst kimi düzgün əldə edin.
Action: com.wireguard.android.action.SET_TUNNEL_UP
Extra: tunnel:lab-wg
Package: com.wireguard.android
Target: Broadcast Receiver
Fəaliyyət UP və ya DOWN adlandırır, başqa heç nə, əlavə dəqiq konfiqurasiya edilmiş tunel adını daşıyır, paket çatdırılmanı WireGuard ilə məhdudlaşdırır və hədəf fəaliyyət deyil, qəbuledici olmalıdır. Yazı səhvi olan tunel adı söndürülmüş qəbuledici ilə eyni sükutu yaradır, ona görə avtomatlaşdırmanın pozulduğu qənaətinə gəlməzdən əvvəl adı tətbiqdə oxuyun. DOWN fəaliyyəti eyni əlavə və paketlə com.wireguard.android.action.SET_TUNNEL_DOWN-dir. Sınaq zamanı bir dəfəyə bir sorğu göndərin, çünki bir-biri ilə yarışan iki yayım heç kimin aid edə bilmədiyi vəziyyət yaradır.
Intent-i avtomatlaşdırmadan ayırmaq üçün eyni sorğunu cihazdakı qabıqdan sınayın. Əgər o əmr uğursuz olur, Tasker tapşırığı isə uğurlu olursa, fərq sahə dəyərləri deyil, göndərənin icazəsidir.
adb shell am broadcast -a com.wireguard.android.action.SET_TUNNEL_UP -e tunnel lab-wg --receiver-permission com.wireguard.android.permission.CONTROL_TUNNELS
Tetikləyicinin əhatə etmədiyini yoxlayın
Tətbiqin işə salınması və ya ön plan hadisəsi bağlantı tələb edə bilər, lakin tətbiq həmin hadisə emal edilməzdən əvvəl artıq ad axtarışı və ya ilkin sorğu cəhd etmiş ola bilər. Tetikləyici sistem vəziyyət dəyişikliyini fərq etdikdə işə düşür, bu isə tətbiq işə başladıqdan sonradır. Əgər tətbiq heç vaxt tuneldən kənarda əlaqə saxlamamalıdırsa, işə salma tetikləyicisi bloklama qaydası deyil və gecikmə əlavə etməklə ona çevrilə bilməz. Bloklama davranışı üçün dəstəklənən həmişə açıq və ya tətbiq başına siyasət konfiqurasiya edin və tetikləyicini yalnız rahatlıq üçün saxlayın.
Bloklama davranışı tamamilə başqa yerdə yaşayır. adb shell settings get global always_on_vpn_app həmişə açıq kimi bərkidilmiş paketi adlandırır, adb shell dumpsys connectivity | grep -i vpn isə sistemin hazırda izlədiyi VPN şəbəkələrini göstərir. Bunların heç biri işə salma tetikləyicisinin əvəz edə biləcəyi şey deyil.
Eyni məntiq sessiyanın digər ucunda da tətbiq olunur. Bir pəncərə fokusunu itirdiyi üçün tuneli aşağı salmaq fon işlərini, autentifikasiya köməkçilərini və bağlantıya güvənən hər hansı digər tətbiqi pozur. Fokus dəyişikliyi əvəzinə qəsdən sessiya sonu təyin edin və avtomatlaşdırma kontekstləri dəyişdikdə sürətli UP və DOWN ardıcıllıqlarından çəkinin.
Nəticəni yoxlayın, göndərişi yox
Xətasız qayıdan yayım Android tərəfindən qəbul edilib və başqa heç nə. Tunel vəziyyətini tətbiqdən oxuyun və iş axınının hazırlığını növbəti addımın həqiqətən ehtiyac duyduğu şeydən oxuyun. Bunlar iki fərqli yoxlamadır və birincini keçmək ikincini nəzərdə tutmur.
İnterfeys vəziyyətini də birbaşa oxuyun: adb shell ip -brief addr show tun0 tunel interfeysini və ünvanını çap edir və ünvanı olmayan mövcud interfeys istifadə edilə bilmədən yuxarıdadır. Sonra şəxsi xidmətin özünü yoxlayın, çünki əl sıxışması və ya marşrutu olmayan yuxarı tunel yenə də vacib olan tapşırıqda uğursuz olur. Bir adlı bağlantını real icazə sərhədi daxilində idarə edən avtomatlaşdırmanın interfeysə toxunmağa, root əmri işlətməyə və ya Android şəbəkə qorumalarını zəiflətməyə ehtiyacı yoxdur.