Android дээр аппаар VPN: аппыг хасах нь түүнийг блоклох биш
Дэлгэц дээрх апп тус бүрийн жагсаалт нэг л туннелийн эзэмшигчид хамаардаг бөгөөд аппыг хасах нь түүнийг тэр туннелийг тойруулан чиглүүлдэг, сүлжээнээс гаргадаггүй. Тэндээс эхэл.
Хоёр хүн ижил асуулт тавьж, хоорондоо нийцэхгүй хариулт авдаг, учир нь тэд өөр өөр газар зогсож байна. Нэгнийх нь өмнө системийн VPN тохиргооны дэлгэц нээлттэй бөгөөд тэр аппын жагсаалтыг засварлаж байна. Нөгөө нь редакторт VpnService.Builder.addDisallowedApplication() бичиж байна. Хоёулаа үүнийг апп тус бүрийн VPN шүүлтүүр гэж нэрлэдэг. Тэдний зөвхөн нэг нь өөрийн дүрсэлж буй удирдлагыг эзэмшинэ, хоёулаа юуг ч блоклохгүй байна.
Хэрэглэгчийн харж буй дэлгэцээс эхэл
Тохиргоог нээж, VPN бичлэгийг олоод үнэхээр идэвхтэй холболтыг хар. Хэрэв клиент апп тус бүрийн жагсаалт санал болгодог бол тэр жагсаалт клиентийн өөрийн туннельд хамаарна. Платформ нь хамааралгүй апп өөр VPN-ийн аппын сонголтыг унших эсвэл өөрчлөх боломж олгодог ерөнхий API нийтэлдэггүй, тиймээс хоёр дахь апп хэрэглэгчийн оронд тэр жагсаалтыг засаж чадахгүй.
Энэ бол замын эхний салаа. Хэрэв суулгасан VPN-д ийм тохиргоо байхгүй бол кодоор тойрох зүйл байхгүй: туннелийг эзэмшдэг бүтээгдэхүүнд тэр боломж байхгүй. Хэрэв байвал зөв засвар нь тэр дэлгэцэнд, түүнийг нээж чадах хүний гарт.
Багцыг туннель руу дага
Таны өөрийн апп туннель барьж байхдаа TUN интерфейс үүсгэж, аль аппын урсгал түүн рүү ордог талаар зарладаг. Гишүүнчлэлийн дуудлагууд интерфейс тогтоохоос өмнө явагддаг бөгөөд дараа нь тэр сессэд дүрмийн багц тогтмол болно:
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 hereТэдгээр дуудлага зөвхөн таны аппын дөнгөж үүсгэсэн туннельд хамаарах бөгөөд өөр юунд ч хамаарахгүй. Тэд төхөөрөмжийн хэмжээний бодлого биш, бусад клиентэд үлдэхгүй, бусдын VPN руу нэвтрэх ч боломжгүй. Багцыг шийдвэрлэх боломжгүй тул бүтээгчийн дуудлага үл хамаарах зүйл шидэхэд интерфейс хэзээ ч тогтоохгүй бөгөөд энэ нь чимээгүй биш, цэвэр бүтэлгүйтэл.
Яагаад хасалт блоклоо мэт харагдсан бэ
Хасагдсан аппын урсгал таны туннелийг тойрон доод сүлжээнд чиглэгддэг. Энэ нь түүнийг блоклохын эсрэг: урсгал төхөөрөмжөөс гарсаар байна, зөвхөн таны удирдаж буй интерфейсийн гадна. Галт хана хэв маягийн апп эсрэгээр хийдэг. Тэр аппын урсгалыг өөрийн туннельд хүлээн аваад дараа нь багцуудыг хаясан эсвэл дамжуулахаас татгалздаг, тиймээс интерфейс ижил, бодлогын чиглэл эргэсэн байна.
Тэр эргэлтийн ард байгаа ажил нь тохиргооны туг биш. Та туннелийн тайлбараас IP багцуудыг уншиж, урсгал тус бүрээр шийдэж, дараа нь хамгаалагдсан сокетоор дамжуулах эсвэл хаядаг. Таны шийдээгүй бүхэн зүгээр л зогсдог, тиймээс хагас бэлэн туннель ажиллаж буй шүүлтүүр биш, эвдэрсэн сүлжээ мэт харагддаг. Зорилго нь блоклох бол багц боловсруулалт, урд талын үйлчилгээ, ангилж чадахгүй урсгалын бичмэл бодлогыг төлөвлө.
Өөрөө бүтээхэд юу эвдэрдэг вэ
Android ерөнхийдөө нэг зэрэг зөвхөн нэг идэвхтэй VPN зөвшөөрдөг, тиймээс бүтээгдэхүүнүүд гинжилэхийг дэмжихгүй бол таны шүүх туннель болон нууцлалын туннель нэг газрын төлөө өрсөлдөнө. Үргэлж асаалттай VPN холболтыг блоклохтой хамт бүтэлгүйтлийн аргыг энд чухал байдаг байдлаар өөрчилдөг: туннельд орж чадахгүй урсгал шууд илгээгдэхийн оронд хаягддаг, үүнийг алдагдлаас сэргийлэх загвар хүсдэг, дибаг хийх сесс бараг хүлээдэггүй.
Багцын харагдах байдал хоёр дахь урхи. Аппын багцын нэрийг шийдвэрлэх нь NameNotFoundException-тэй бүтэлгүйтэж болно, шинэ Android хувилбаруудад таны харж болох багцын багц нь таны зарласан асуулгаас хамаарна. Бүх нэр шийдэгдэнэ гэж таамаглахын оронд үл хамаарах зүйлийг зохицуул, аппуудыг суулгах эсвэл устгах үед жагсаалтыг дахин унш, үүрд кэшлэхээс зайлсхий.
Удирдлагатай төхөөрөмжүүд гурав дахь эзнийг нэмдэг. Аж ахуйн нэгжийн хөдөлгөөнт бодлого нь апп тус бүрийн VPN эсвэл үргэлж асаалттай профайл тогтоож болох бөгөөд энгийн апп үүнийг дарж чадахгүй. Өөрийн кодоо дибаг хийхээс өмнө төхөөрөмж удирдлагатай эсэхийг шалга, учир нь тэр тохиолдолд өөрчлөх гэж буй жагсаалтыг утас барьж буй хэн ч засварлаж чадахгүй байж болно.
Өөрийн удирддаг аппаар турш
Шүүх гэж буй аппаараа бүү турш. Сүлжээний зан төлөвийг нь ажиглаж болох хоёр дахь аппыг ашигла, түүний урсгал таны туннелээр гарч байгаа эсэх, зорилтынх гарч байгаа эсэхийг шалга. Хоёулаа дотроо үлдвэл бодлого ажиллаж, зорилт хасагдсан байна; аль нь ч гарч чадахгүй бол туннель өөрөө буруу, аппын жагсаалт асуудал биш.
Дараа нь гурван зүйлийн алинаас нь бодитоор бүтээж байгаагаа шийд. Апп тус бүрийн туннель бол бүтээгчийн API, жагсаалт нь таны профайлын хэсэг. Төхөөрөмжийн галт хана бол багц боловсруулалт дээр өмгөөлж чадах амьдралын мөчлөг. Бусдын VPN-ийг өөрчлөх нь огт дэмжигддэггүй зам бөгөөд тэнд шударга хариулт нь тэр тохиргоо тэр бүтээгдэхүүнд хамаарна гэсэн үг.