To'liq tunnel yoki oxirgi nuqta marshruti: VPN serverini erishish mumkin bo'lgan holda saqlash
Tunnel o'zi o'rnini bosadigan tarmoq orqali yuradi. Xost marshruti istisnosini ilova darajasidagi soket belgisi bilan solishtiring va har biri qachon ishdan chiqishini biling.
Tunnel orqali standart marshrut qo'shing, tunnelning o'z paketlari ham unga ergashadi. Shunda jadvalda o'zini yengadigan qoida bo'ladi. Serverga shifrlangan ulanish o'zi o'rnatmoqchi bo'lgan ulanishning ichida yurishga harakat qiladi.
Bu halqani ikki mexanizm oldini oladi. Biri marshrutlash jadvalida ko'rinadi, ikkinchisi ilova ichida yashaydi.
Ichki va tashqi trafik har xil qarorlar
Ilova paketi virtual interfeysga kiradi va inkapsulyatsiya qilinadi. Natija serverning ommaviy manziliga yo'naltirilgan yangi paket. Bu paketga jismoniy tarmoqda marshrut kerak, chunki uning hech bir qismi tunnelga kira olmaydi.
Ikkalasi ham marshrutlash qarorlari, va faqat birinchisi tunnelga tegishli. Mijoz serverni ham qamrab oluvchi standart marshrut o'rnatganda, tashqi paket ham ushlanadi.
Alomatlar darhol va to'liq. Qo'l berish tugaydi va keyin hech narsa oqmaydi, yoki marshrut o'rnatilgan lahzada ulanish uziladi. Ikkala holatda ham keepalive endi chiqa olmaydi.
Birinchi variant: oxirgi nuqta uchun xost marshruti
To'g'ridan-to'g'ri yondashuv server manzili uchun dastlabki shlyuz orqali marshrut qo'shadi. Bu bir qatorni oladi. Jadvalni o'qigan har kim uni ko'radi. Uni o'zgarish yozuvida tushuntirish ham oson.
Uning zaifligi ostidagi yo'l o'zgarganda namoyon bo'ladi. Saqlangan marshrut eski tarmoqdan shlyuz va interfeysni nomlaydi. Wi-Fi almashgandan so'ng bu shlyuz bo'lmasligi mumkin, marshrut esa ortda qoladi, to'g'ri ko'rinadi va hech narsa qilmaydi.
# before the tunnel: which path reaches the endpoint?
ip route get 198.51.100.7
# pin it through the current gateway
ip route add 198.51.100.7/32 via 192.168.1.1 dev wlan0
# after the tunnel is up, confirm the pin survived
ip route get 198.51.100.7
Xost nomi buni qiyinlashtiradi. Agar oxirgi nuqta bir necha manzilga hal bo'ladigan nom bo'lsa, istisno amalda ishlatiladigan manzilni qamrab olishi kerak. Keyingi so'rov marshrut hech qachon qamrab olmagan narsani qaytarishi mumkin.
Ikkinchi variant: soketni himoya qilish
Boshqa yondashuv marshrutlash jadvaliga hech qachon tegmaydi. Mijoz tunnelni tashiyotgan soketni belgilaydi yoki himoya qiladi, shuning uchun operatsion tizim siyosat bo'yicha bu soket trafigini tunneldan tashqariga yuboradi. Android bu mexanizmni VPN ilovalariga bevosita taqdim etadi. Ish stoli mijozlari ekvivalentlarini xavfsizlik devori belgilari yoki qurilmaga bog'lash chaqiruvlari bilan amalga oshiradi.
Afzallik shundaki, istisno saqlangan shlyuzga emas, ulanishga ergashadi. Tarmoq o'zgarishi ostidagi yo'lni qayta yozadi, himoyalangan soket esa u bilan birga harakatlanadi, chunki u hech qachon manzilga qadalmagan. Marshrut jadvali toza qoladi.
Narx ko'rinuvchanlik. Marshrutlash jadvalida hech narsa istisnoni ko'rsatmaydi, shuning uchun xost marshrutini qidirayotgan taqrizchi hech narsa topmaydi va dizayn xavfsiz emas deb xulosa qilishi mumkin. Himoya mijoz kodida va shu kod o'rnatadigan siyosat qoidalarida yashaydi.
Ikkalasi orasida tanlov
Mijoz qo'llab-quvvatlasa, soket darajasidagi mexanizmni tanlang, chunki u qadalgan marshrutni buzadigan tarmoq o'zgarishlariga bardosh beradi. Istisno boshqa vositalarga ko'rinishi kerak bo'lsa yoki mijoz yaxshiroq narsa taklif qilmasa, xost marshrutini tanlang.
Hech bir mexanizm server manzilining umuman erishish mumkin bo'lishi zaruratini yo'q qilmaydi. Xususiy shlyuzning ommaviy tinglash manzili bor va tunneldan tashqarida qolishi kerak bo'lgan manzil aynan shu. Uning orqasidagi ichki tarmoqlar tunnel paydo bo'lgandan keyingina erishish mumkin bo'ladi.
Nimani tanlasangiz ham, uni tunnelga ega komponentning yonida saqlang. Qo'lda qo'shilgan adashgan xost marshruti keyingi tarmoqqa qadar ishlaydi, keyin ertangi sirli uzilishga aylanadi.