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-ын сүлжээний хамгаалалтыг сулруулах шаардлагагүй.