Siz sozlay olmaydigan NAT orqasidagi VPN: hali ham nima ishlaydi
Port yo'naltirishsiz kiruvchi paketning boradigan joyi yo'q. Teshik ochish, UPnP va releyellar buni o'zgartiradi, lekin faqat muayyan NAT xatti-harakati ostida.
Har bir tunnel uch nuqtasiga qarshi tomon yetib bora oladigan manzil va port kerak, siz boshqarmaydigan router esa bu talabning bajarilmasligining odatiy sababidir. Qiziq tomoni hiylalar mavjudligida emas, balki ularning har biri klientdan ko'rmaydigan xaritalash jadvalining xususiyatiga bog'liqligida. Shu xususiyatlardan ikkitasi deyarli hamma narsani hal qiladi: xaritalash qanday yaratiladi va u ichki tomon hech qachon bog'lanmagan manzildan paketlarni qabul qiladimi. Muhitni shu xususiyatlar bo'yicha tartiblang va aylanib o'tish yo'llari afsona bo'lishdan to'xtaydi.
Xaritalash jadvali hamma narsani hal qiladi
Tarmoq manzillarini o'zgartirish ichki manzil va portni ommaviy manzil va port qarshisida qayd etadigan jadvalni saqlaydi. Yozuvga mos keladigan javoblar orqaga o'giriladi, tashqaridan kelgan va mos yozuvi bo'lmagan paketning esa umuman manzili yo'q. Shu bitta xatti-harakat router orqasidagi tinglovchining internetdan nima uchun yetib bo'lmasligini tushuntiradi. Har bir yo'nalishdagi birinchi paket nima uchun ichkaridan boshlanishi kerakligini ham tushuntiradi.
Jadvalga router tomondan qarang va aylanib o'tish yo'llari ayon bo'ladi: yo biror narsa doimiy yozuv yaratadi, yo vaqtinchalik yozuv yaratib uni yangi holatda saqlaydi, yo trafik bu yo'ldan umuman o'tmaydi. Maqolaning qolgani shu uch holat tartib bilan. Bu yerda hech narsa jadval qayd etganidan tashqari sotuvchi xususiyatiga bog'liq emas.
Uchrashuv xizmati nima qila oladi va nima qila olmaydi
UDP teshik ochish filtrni yengish o'rniga chiqish yozuvini vaqtinchalik ochilish sifatida ishlatadi. Ikkala tomon uchrashuv xizmatiga murojaat qiladi, u har bir ommaviy uch nuqtani bilib, ikkinchi tomonga uning nuqtasini qaytaradi. So'ng ikkalasi bir-biriga qarab yuboradi, har bir chiqish paketi esa javobni ichkariga kiritadigan yozuvni yaratadi yoki yangilaydi. Tartib uni ishlashga majbur qiladi, tartib uni mo'rt ham qiladi: ikkinchi tomon o'z yozuvini yaratmasdan oldin yuborgan tomon shunchaki tashlab yuboriladi, bir oz keyingi qayta urinish esa muvaffaqiyatli bo'ladi. Xizmatning o'zi hech qanday VPN trafigini tashimaydi, shuning uchun uning yagona tayanchi muvofiqlashtiradigan vaqtidir.
Xaritalash xatti-harakati qolganini hal qiladi, va RFC 4787 uch shaklni nomlaydi: uch nuqtadan mustaqil, manzilga bog'liq va manzil hamda portga bog'liq. Oxirgisida tomon nishonga olishi kerak bo'lgan port har bir manzil bilan o'zgaradi, shuning uchun bashorat ishonchli bo'lmay qoladi. Shu yerda texnika o'z boshi berk ko'chasiga uriladi, chunki operator darajasidagi NAT va qat'iy korporativ xavfsizlik devori ikkalasi ham sxemaga kerak bo'lgan bashoratlilikni yo'q qiladi va qancha qayta urinish ham uni qaytarmaydi.
Keepalive, qayta yuklash va harakatlanuvchi uch nuqta
Teshilgan yo'l tinglovchi emas, oqimdir, shuning uchun uning ustida ishlaydigan hamma narsa o'zgarishga chidashi kerak. U xaritalashni davriy trafik bilan tirik saqlashi, ommaviy uch nuqta qachon harakatlanishini payqashi va router qayta yuklangandan yoki manzil qayta tayinlangandan keyin qayta o'rnatishi kerak. Mesh VPN mahsulotlari bu mantiqni o'z boshqaruv tekisligiga qo'yadi, oddiy server esa uni sizga qoldiradi. Keepalive faqat o'sha xaritalash tirik turganda yordam beradi va mobil klientda batareyani yeydi, shuning uchun tajovuzkor interval bepul emas.
Bir soat uxlagan noutbuk odatda boshqa ommaviy uch nuqtaga qaytadi. Yo'lni qayta o'rnatadigan hamma narsa yana ichkaridan ishlashi kerak, bu esa o'sha talabni klientga qaytaradi.
Yo'q yo'naltirishni chetlab o'tishning uch yo'li
Birinchi yo'l routerdan yozuvni o'zi yaratishni so'raydi, UPnP IGD, NAT-PMP yoki PCP orqali, xususiyat mavjud va yoqilgan bo'lsa. Ikkinchisi trafikni ommaviy manzilli releyga topshiradi, u doim ishlaydi va doim o'tkazuvchanlik bilan birga boshqa ishonch chegarasini sarflaydi. Uchinchisi yo'nalishni teskari o'giradi: ichki xost ommaviy serverga chiquvchi tunnel ochadi va qolgan hamma narsa uning ichida boradi.
[Peer]
PublicKey = 6yGj3kQ2wVb8sTn1pLx4dRc7hZa9mKf2uYe5oNq0iXw=
Endpoint = relay.corp.internal:51820
PersistentKeepalive = 25
AllowedIPs = 10.44.0.0/24
Reley uch nuqtasi bu almashinuvni klient konfiguratsiyasida ko'rinadigan qiladi, u yerda uch nuqta tomonning o'z manzili emas, reley. Doimiy keepalive xaritalashni issiq saqlaydi, ruxsat etilgan prefikslar esa klient u orqali nima yuborishi mumkinligini hal qiladi. Ichki xostdan teskari tunnel boshqa egasi bilan o'sha fikr va u NATga umuman o'zgartirish talab qilmaydi. Uchalasi ham kirish talabini olib tashlaydi, lekin dizayn bo'yicha so'ralmagan trafikni to'sadigan xavfsizlik devorini yengmaydi, chunki trafik baribir ichkaridan boshlanadi.
Yechimni router egasiga moslang
Agar routerni o'zingiz boshqarsangiz, statik UDP yo'naltirish har qanday teshik ochish sxemasidan osonroq tekshiriladi va siz ko'radigan yo'llar bilan muvaffaqiyatsiz bo'ladi. Boshqarmasangiz, sotuvchi reley yoki hostingdagi boshqaruv tekisligini taklif qiladimi va siyosat undan foydalanishga ruxsat beradimi, aniqlang. Ikkalasi ham bo'lmasa, qolgan tanlov teskari tunnel yoki uch nuqta tashqaridan yetib bo'lmaydi deganini qabul qilishdir. Qaysi birini ishlatganingizni yozib qo'yish ko'ringanidan muhimroq, chunki variantlar trafikni kim kuzatishi va uchinchi tomon biror narsani o'zgartirganda nima bo'lishi bilan farq qiladi.
Oxirgi yo'l to'g'ridan-to'g'ri yoki reley orqali bo'lganini belgilang, chunki shu bitta fakt ham kechikishni, ham nosozlik xatti-harakatini bashorat qiladi. RFC 4787 bularning ostidagi xaritalash xatti-harakati uchun ma'lumotnoma bo'lib qoladi va uning xaritalash bo'limini o'qish uch yo'lni ketma-ket sinashdan tezroq. Jadval qaysi variantni tanlaganingizga parvo qilmaydi; u faqat keyingi paket nima qilishi mumkinligini qayd etadi.