Qo‘llab-quvvatlash mavzusi “simmetrik NAT, VPN bu yerda ishlamaydi” degan hukm bilan tugaydi, so‘ngra mijoz sababsiz uch marta qayta o‘rnatiladi. Yorliq zarar keltiradi, chunki hech kim bermagan savolga javob beradi. Tashqariga qat’iy serverga ulanadigan mijoz birinchi paketni yuborgan paytda xaritalash yaratadi va javob deyarli har bir tarmoq qo‘llaydigan qoidalar asosida qaytishiga ruxsat beriladi. Oxirgi nuqtaga bog‘liq xaritalashni chindan ham murakkablashtiradigan narsa — ikki tengdoshning bir vaqtda bir-biriga yetib olishga urinishi, va bu boshqa sinov.

Bitta yorliq ortida ikkita savol yashiringan

Birinchi savol — bu tarmoq ortidagi xost ma’lum ommaviy manzil va portga sessiya ocha oladimi. Tunnel mijozi uchun bu odatiy holat, va javob deyarli har doim ha. Marshrutizator ichki manbani qayd etadi, tashqi port ajratadi va javobni o‘tkazadi, chunki u ichkaridan boshlangan sessiyaga tegishli.

Ikkinchi savol — turli tarmoqlar ortidagi ikki xost o‘rtada server bo‘lmagan holda umumiy yo‘l topib, bir-biriga yubora oladimi. Bu har bir tarmoq o‘sha tashqi portlarni qanday ajratishiga bog‘liq, va xaritalash xulq-atvorining ahamiyati faqat shu yerda.

Ikkalasini aralashtirish o‘sha klassik noto‘g‘ri tashxisni keltiradi: tengdoshlar funksiyasi ishlamaydi, kimdir NAT turi sinovini ishga tushiradi, eng yomon toifani ko‘radi va oddiy tunnel ham ishlay olmaydi degan xulosaga keladi. Muvaffaqiyatsiz bo‘lgan narsa hech qachon tunnel bo‘lmagan.

Xaritalash va filtrlash — alohida xususiyatlar

RFC terminologiyasi sotuvchilar ishlatadigan nomlardan aniqroq, va uni biletdagi yozuvga ko‘chirishga arziydi, chunki u bahslarni hal qiladi. Xaritalash — tashqi port qanday ajratilishi. Filtrlash — qaysi kiruvchi paketlarga o‘tishga ruxsat berilishi. Tarmoq birida qat’iy, ikkinchisida erkin bo‘lishi mumkin, va aynan shu uyg‘unlik tengdoshlar protokoli bardosh berishi kerak bo‘lgan narsa.

BehaviourWhat it meansEffect on a direct peer path
Endpoint-independent mappingOne external port for every destinationDiscovery works if the port is advertised
Address-dependent mappingNew port per remote addressWorks only if both sides probe the same pair
Address-and-port-dependentNew port per remote address and portUsually needs a relay

Uchinchi qator — ko‘pchilik uy marshrutizatorlari va mobil operatorlar simmetrik deganda tushunadigan narsa. Yorliq faqat ajratishni tasvirlashini e’tiborga oling. Bunday xaritalash va erkin filtrlashga ega tarmoq hamon hozirgina ajratgan portga kiruvchi paketlarni qabul qilishi mumkin, shuning uchun teshik teshish ba’zilarida muvaffaqiyatli, ba’zilarida muvaffaqiyatsiz bo‘ladi.

Filtrlashning o‘z uch holati va har biriga o‘z nomi bor. “Manzil va portga bog‘liq filtrlash” nazarda tutilganda biletdagi yozuvga “simmetrik NAT” deb yozish keyingi odamni qo‘llanmaning noto‘g‘ri bobiga yuboradi. Ikkalasi sinovda boshqacha tutadi, shuning uchun xato faqat nazariy emas.

Nom berish o‘rniga xaritalashni o‘lchang

Ajratilgan portni o‘zingiz boshqaradigan har qanday UDP xizmatining server tomonidan bevosita kuzatishingiz mumkin. Ommaviy xostda ushlashni boshlang, mijozdan yuboring va paket kelgan manba portni o‘qing:

sudo tcpdump -ni eth0 -c 10 'udp port 51820'
sudo wg show wg0 endpoints
sudo conntrack -L -p udp --dport 51820

Oxirgi nuqta qatori uchtasining ichida eng foydalisi, chunki WireGuard har bir tengdoshdan olgan oxirgi manzil va portni qayd etadi. O‘sha portni mijoz ishlatadi deb o‘ylaydigan port bilan solishtiring. Har qanday tarjima sodir bo‘lganda ular farq qiladi, va muhim savol — qiymat barqaror qoladimi.

Kuzatishni ikkinchi manzil porti yoki ikkinchi serverga nisbatan takrorlang va yana solishtiring. Agar tashqi port manzilga qarab o‘zgarsa, xaritalash manzil va portga bog‘liq. Agar u o‘sha bo‘lib qolsa, tarmoq bitta xaritalash beradi va topishning imkoni bor.

STUN asosidagi vositalar o‘sha tasnifni bir qadamda bildiradi, va tarmoq ommaviy STUN serveriga chiquvchi UDP ga ruxsat bersa, ulardan foydalanish mumkin. Ruxsat bermasa, yuqoridagi ushlash usuli hamon ishlaydi va o‘zingiz allaqachon boshqaradigan xostdan boshqa hech narsani talab qilmaydi.

Nosozlikka mos tuzatishni tanlang

Agar muvaffaqiyatsiz funksiya tengdoshlar funksiyasi bo‘lsa, qo‘llab-quvvatlanadigan javoblar — reley, ikkala tengdosh ham yetib bora oladigan uchrashuv xizmati yoki boshqa topologiya. TURN aynan shu uchun mavjud, va o‘z releyini taqdim etadigan mahsulot sizga ba’zi tarmoqlar dushman bo‘lishini kutishini aytadi.

Agar muvaffaqiyatsiz funksiya oddiy tunnel bo‘lsa, xaritalash xulq-atvori sizning muammoingiz emas va yuqoridagilarning hech biri qo‘llanmaydi. Mijoz haqiqatan yuborayotganini, server paketni ko‘rayotganini va javob qaytayotganini tekshiring. Bu ketma-ketlik uchta kuzatuv va u marshrutizatorning NAT toifasi haqida hech narsa bilishni talab qilmaydi.

Ishlamaydigan narsa — biror narsa ulanmaguncha mahalliy port o‘zgarishlarini sochish. Mijozning manba portini o‘zgartirish tarmoqning xaritalashlarni qanday ajratishini o‘zgartirmaydi. Beshinchi urinishdagi tasodifiy muvaffaqiyat — yolg‘on musbat, va u oylar davomida yechim sifatida keltiriladi.

Hukmni emas, arxitekturani yozib oling

Foydali eslatma qaysi protokol, sessiya qaysi yo‘nalishda boshlanishi, yo‘lda reley bor-yo‘qligi va simda nima kuzatilganini aytadi. “simmetrik NAT, ishlamaydi” yaroqsiz, chunki u bir vaqtda tunnel haqida noto‘g‘ri va tengdosh yo‘li haqida ma’lumot bermaydi.

Agar sinab ko‘rgan bo‘lsangiz, o‘lchangan port barqarorligi va filtrlash xulq-atvorini qo‘shing. Bu ikki fakt boshqa birovga butun tekshiruvni takrorlamasdan yangi funksiya o‘sha tarmoqda ishlaydimi-yo‘qmi oldindan aytish imkonini beradi. Ular har bir yordam sahifasida biroz boshqacha ma’no bildiradigan sotuvchi toifasidan yaxshiroq qariydi.

Nihoyat, buni yozayotganda RFC 4787 terminologiyasini qo‘lingizda tuting. Aniq atamalardan foydalanish bir jumlaga tushadi va keyingi o‘quvchining o‘sha noto‘g‘ri tashxisni takrorlashiga yo‘l qo‘ymaydi, va eslatma yozishning butun maqsadi shu.

O'xshash maqolalar