WireGuard faoliyatini ishga tushirish ilovani oldingi planga chiqaradi, muayyan tunnelni ko'tarmaydi. Ilovani ochib kutadigan avtomatlashtirish sinovdan o'tadi va telefon allaqachon bosh ekranda o'tirgan birinchi holatda muvaffaqiyatsiz bo'ladi. WireGuard nomlangan tunnellar uchun qo'llab-quvvatlanadigan masofadan boshqarish yo'lini taqdim etadi va u ko'pchilik retseptlar taklif qilganidan torroq. Quyidagi tekshiruv ro'yxati o'sha yo'lni ruxsatdan kuzatilgan natijagacha bosib o'tadi.

Masofadan boshqarish yoqilganini tekshiring

Masofadan boshqarish qabulqilgichi har doim ham tinglamaydi. WireGuard sozlamalarida tunnellarni masofadan boshqarishni yoqadigan parametr bor va u yoqilmaguncha qabulqilgich baland ovozda muvaffaqiyatsiz bo'lish o'rniga so'rovlarni e'tiborsiz qoldiradi. Standart qiymat ataylab shunday, chunki tunnellarni ko'tara oladigan eksport qilingan qabulqilgich ilova o'rnatilgan har bir qurilmada xavfsizlik teshigi bo'lardi. Uni interfeys orqali yoqing va qilganingizni yozib qo'ying, chunki bu keyingi foydalanuvchi nimaga bog'liq bo'lganini bilmasdan o'chirib qo'yishi mumkin bo'lgan sozlamadir.

Yuqoridagi qabulqilgich faqat nomlangan UP va DOWN so'rovlarini qayta ishlaydi, shuning uchun bu yerda tunnel yaratish yoki uning konfiguratsiyasini tahrirlash yo'li yo'q. Unga tayanishdan oldin komponent o'rnatilgan qurilishda borligini tasdiqlang: adb shell dumpsys package com.wireguard.android | grep -i receiver e'lon qilingan qabulqilgichlarni sanab chiqadi va masofadan boshqarish qabulqilgichisiz qurilish hech qachon javob bermaydi. Agar ish oqimiga boshqa so'nggi nuqta yoki boshqa sherik kerak bo'lsa, bu boshqa tunnel va ilova ichidagi alohida qo'lda sozlashdir.

Boshqaruvchida qanday ruxsat borligini tekshiring

WireGuard qabulqilgichni xavfli ruxsat bilan himoya qiladi, com.wireguard.android.permission.CONTROL_TUNNELS, uni boshqaruvchi ilova egalik qilishi kerak. O'z translyatsiyasi jo'natuvchi hech qachon e'lon qilmagan yoki hech qachon berilmagan ruxsatni yarata olmaydi. Bu avtomatlashtirish retseptlari avtomatlashtirishda yo'q imkoniyatni jimgina taxmin qiladigan qadamdir.

Vazifani yozishdan oldin ikkala tomonni tekshiring. Birinchi buyruq e'lon qilingan ruxsatni sanab chiqadi, ikkinchisi boshqaruvchining paketida u haqiqatan bor-yo'qligini ko'rsatadi. Ruxsatni manifestida e'lon qilgan, lekin bajarilish vaqtida hech qachon berilmagan boshqaruvchi baribir muvaffaqiyatsiz bo'ladi va muvaffaqiyatsizlik dialog emas, sukunat sifatida keladi.

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

Agar boshqaruvchida ruxsat bo'lmasa, translyatsiyani qo'lda qurish o'rniga ilova haqiqatan qo'llab-quvvatlaydigan integratsiyadan foydalaning. Intent yuborib, chaqiruv muvaffaqiyatli bo'lganini ko'rish faqat Android uni qabul qilganini isbotlaydi, WireGuard unga ko'ra harakat qilganini emas. Tekshirilmagan yuborishni noma'lum deb qabul qiling, muvaffaqiyat deb emas.

Intent maydonlarini o'rnatilgan ilova bilan solishtiring

To'rt maydon butun so'rovni tashiydi va har birining boshqalarga aynan o'xshab ko'rinadigan muvaffaqiyatsizlik usuli bor. Harakat, tunnel qo'shimcha maydoni, paket va maqsadni bir to'plam sifatida to'g'ri sozlang.

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

Harakat UP yoki DOWN deb nomlaydi va boshqa hech narsa emas, qo'shimcha maydon aniq sozlangan tunnel nomini tashiydi, paket yetkazib berishni WireGuard bilan cheklaydi, maqsad esa faoliyat emas, qabulqilgich bo'lishi kerak. Imlo xatosi bo'lgan tunnel nomi o'chirilgan qabulqilgich kabi sukunat keltiradi, shuning uchun avtomatlashtirish buzilgan degan xulosaga kelishdan oldin nomni ilovada o'qing. DOWN harakati xuddi shu qo'shimcha maydon va paket bilan com.wireguard.android.action.SET_TUNNEL_DOWN. Sinov paytida bir vaqtda bitta so'rov yuboring, chunki bir-birini quvib o'tadigan ikki translyatsiya hech kim bog'lay olmaydigan holat yaratadi.

Intentni avtomatlashtirishdan ajratish uchun xuddi shu so'rovni qurilmadagi shell'dan sinab ko'ring. Agar o'sha buyruq muvaffaqiyatsiz bo'lib, Tasker vazifasi muvaffaqiyatli bo'lsa, farq maydon qiymatlari emas, jo'natuvchining ruxsatidir.

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

Trigger nimani qamrab olmasligini tekshiring

Ilovani ishga tushirish yoki oldingi planga chiqish hodisasi ulanish so'rashi mumkin, lekin ilova bu hodisa ko'rib chiqilishidan oldin nom qidiruvini yoki boshlang'ich so'rovni sinab ko'rgan bo'lishi mumkin. Trigger tizim holat o'zgarishini sezganda ishga tushadi, bu ilova ishlay boshlaganidan keyingi payt. Agar ilova hech qachon tunneldan tashqarida aloqa qilmasligi kerak bo'lsa, ishga tushirish triggeri bloklash qoidasi emas va unga kechikish qo'shib, uni shunday qilib bo'lmaydi. Bloklash xatti-harakati uchun qo'llab-quvvatlanadigan doim yoqilgan yoki har bir ilova siyosatini sozlang va triggerni faqat qulaylik uchun saqlang.

Bloklash xatti-harakati butunlay boshqa joyda yashaydi. adb shell settings get global always_on_vpn_app doim yoqilgan deb mahkamlangan paketni nomlaydi, adb shell dumpsys connectivity | grep -i vpn tizim hozir kuzatayotgan VPN tarmoqlarini ko'rsatadi. Ularning hech birini ishga tushirish triggeri almashtira olmaydi.

Xuddi shu mantiq sessiyaning ikkinchi uchiga ham tegishli. Bitta oyna fokusni yo'qotgani uchun tunnelni tushirish fon ishini, autentifikatsiya yordamchilarini va ulanishga tayangan har qanday boshqa ilovani buzadi. Fokus o'zgarishi o'rniga ataylab sessiya tugashini belgilang va avtomatlashtirish kontekstlarni almashtirganda tez UP va DOWN ketma-ketliklaridan saqlaning.

Natijani tekshiring, yuborishni emas

Xatosiz qaytgan translyatsiyani Android qabul qildi va boshqa hech narsa emas. Tunnel holatini ilovadan o'qing, ish oqimining tayyorligini esa keyingi qadamga haqiqatan kerak bo'lgan narsadan o'qing. Bular ikki xil tekshiruv va birinchisidan o'tish ikkinchisini anglatmaydi.

Interfeys holatini ham to'g'ridan-to'g'ri o'qing: adb shell ip -brief addr show tun0 tunnel interfeysi va uning manzilini chop etadi, manzilsiz mavjud interfeys esa ko'tarilgan bo'lsa ham foydalanishga yaroqsiz. Keyin xususiy xizmatning o'zini tekshiring, chunki qo'l berish yoki marshrutsiz ko'tarilgan tunnel muhim bo'lgan vazifada baribir muvaffaqiyatsiz bo'ladi. Bitta nomlangan ulanishni o'z ruxsatining haqiqiy chegarasida boshqaradigan avtomatlashtirish interfeysga tegishi, root buyrug'ini ishga tushirishi yoki Android tarmoq himoyasini zaiflashtirishi shart emas.

O'xshash maqolalar