Android'da har bir ilova uchun VPN: ilovani chetlab o'tish uni bloklash emas
Ekrandagi har bir ilova ro'yxati bitta tunnel egasiga tegishli, ilovani chetlab o'tish esa uni tarmoqdan chiqarmaydi, o'sha tunnel atrofidan olib o'tadi. O'shandan boshlang.
Ikki kishi bir xil savol beradi va bir-biriga mos kelmaydigan javoblar oladi, chunki ular turli joyda turibdi. Birining oldida tizimning VPN sozlamalari ekrani ochiq va u ilovalar ro'yxatini tahrirlaydi. Ikkinchisi muharrirda VpnService.Builder.addDisallowedApplication() yozadi. Ikkalasi ham buni har bir ilova uchun VPN filtri deb ataydi. Faqat bittasi o'zi tasvirlayotgan boshqaruvga ega va hech biri hech narsani bloklamaydi.
Foydalanuvchi ko'radigan ekrandan boshlang
Sozlamalarni oching, VPN bandini toping va haqiqatan faol ulanishni ko'ring. Agar mijoz har bir ilova ro'yxatini taklif qilsa, bu ro'yxat mijozning o'z tunneliga tegishli. Platforma begona ilova boshqa VPN ilovalar tanlovini o'qiy yoki o'zgartira oladigan umumiy API e'lon qilmaydi, shuning uchun ikkinchi ilova bu ro'yxatni foydalanuvchi uchun tuzata olmaydi.
Bu yo'lning birinchi ayrilishi. Agar o'rnatilgan VPN'da bunday sozlama bo'lmasa, kod bilan chetlab o'tadigan narsa yo'q: bu xususiyat tunnelga ega mahsulotda yo'q. Agar bo'lsa, to'g'ri tuzatish o'sha ekranda va uni ocha oladigan kishi bajaradi.
Paketni tunnelga qadar kuzatib boring
O'z ilovangiz tunnel qurganda, u TUN interfeysini yaratadi va qaysi ilovalar trafigi unga kirayotganini e'lon qiladi. A'zolik chaqiruvlari interfeys o'rnatilishidan oldin bo'ladi, shundan keyin qoidalar to'plami o'sha sessiya uchun qat'iy bo'ladi:
val builder = VpnService.Builder()
builder.addAddress("10.8.0.2", 32)
builder.addRoute("0.0.0.0", 0)
builder.addDisallowedApplication("com.example.bypass")
val tun = builder.establish() // membership decided hereBu chaqiruvlar faqat ilovangiz hozir yaratgan tunnelga tegishli, boshqa hech narsaga emas. Ular butun qurilma siyosati emas, boshqa mijozlar uchun saqlanmaydi va boshqa birovning VPN'iga yeta olmaydi. Paketni hal qilib bo'lmagani uchun quruvchi chaqiruvi istisno tashlasa, interfeys hech qachon o'rnatilmaydi, bu toza muvaffaqiyatsizlik, jim emas.
Nega chetlab o'tish blokday ko'rindi
Chetlab o'tilgan ilova sizning tunnelingiz atrofidan pastdagi tarmoqqa yo'naltiriladi. Bu uni bloklashning aksi: trafik hali ham qurilmadan chiqadi, faqat siz boshqaradigan interfeysdan tashqarida. Xavfsizlik devori uslubidagi ilova buning aksini qiladi. U ilova trafigini o'z tunneliga qabul qiladi va keyin paketlarni tashlab yuboradi yoki ularni uzatishdan bosh tortadi, shuning uchun interfeys bir xil, siyosat yo'nalishi esa teskari.
Bu teskari aylantirish ortidagi ish sozlama bayrog'i emas. Siz tunnel tavsifidan IP paketlarini o'qiysiz, har bir oqim bo'yicha qaror qabul qilasiz, so'ng ularni himoyalangan soket orqali uzatasiz yoki tashlaysiz. Siz ishlamagan hamma narsa shunchaki to'xtaydi, shuning uchun yarim tugallangan tunnel ishlaydigan filtr emas, buzilgan tarmoqday ko'rinadi. Maqsad bloklash bo'lsa, paketlarni qayta ishlash, oldingi reja xizmati va siz tasniflay olmaydigan trafik uchun yozma siyosatni rejalashtiring.
O'zingiz qurganda nima buziladi
Android odatda bir vaqtda faqat bitta faol VPN'ga ruxsat beradi, shuning uchun mahsulotlar zanjirlashni qo'llab-quvvatlamasa, sizning filtrlash tunnelingiz va maxfiylik tunneli bir joy uchun raqobatlashadi. Doim yoniq VPN ulanishlarni bloklash bilan muvaffaqiyatsizlik usulini bu yerda muhim bo'lgan tarzda o'zgartiradi: tunnelga kira olmaydigan trafik to'g'ridan-to'g'ri yuborilish o'rniga tashlanadi, buni oqishning oldini olish dizayni xohlaydi va disk raskadrovka sessiyasi kamdan-kam kutadi.
Paketlarning ko'rinishi ikkinchi tuzoq. Ilova paketi nomini hal qilish NameNotFoundException bilan muvaffaqiyatsiz bo'lishi mumkin, yangi Android versiyalarida ko'rishingiz mumkin bo'lgan paketlar to'plami siz e'lon qilgan so'rovlarga bog'liq. Har bir nom hal bo'ladi deb taxmin qilish o'rniga istisnoni boshqaring va ilovalar o'rnatilganda yoki olib tashlanganda ro'yxatni qayta o'qing, uni abadiy keshda saqlash o'rniga.
Boshqariladigan qurilmalar uchinchi egasini qo'shadi Korporativ mobillik siyosati har bir ilova uchun VPN yoki doim yoniq profil o'rnatishi mumkin va oddiy ilova buni bekor qila olmaydi. O'z kodingizni disk raskadrovka qilishdan oldin qurilma boshqariladimi-yo'qmi tekshiring, chunki bu holatda siz o'zgartirmoqchi bo'lgan ro'yxatni telefon ushlab turgan hech kim tahrirlay olmasligi mumkin.
O'zingiz boshqaradigan ilova bilan sinab ko'ring
Filtrlamoqchi bo'lgan ilova bilan sinamang. Tarmoqdagi xatti-harakatini kuzatishingiz mumkin bo'lgan ikkinchi ilovadan foydalaning va uning trafigi sizning tunnelingiz orqali chiqadimi, nishonniki esa chiqmaydimi, tekshiring. Ikkalasi ham ichkarida qolsa, siyosat ishlaydi va nishon chetlab o'tilgan; hech biri chiqmasa, tunnelning o'zi xato va ilovalar ro'yxati muammo emas.
Keyin uchta narsadan qaysi birini haqiqatan qurayotganingizni hal qiling. Har bir ilova uchun tunnel bu quruvchi API'si, ro'yxat esa profilingizning qismi. Qurilma xavfsizlik devori paketlarni qayta ishlash va siz himoya qila oladigan hayot tsiklidir. Boshqa birovning VPN'ini o'zgartirish umuman qo'llab-quvvatlanadigan yo'l emas va u yerda halol javob bu sozlama o'sha mahsulotga tegishli ekanidir.