Siz VPN serveri noutbukingiz manzilini paketdan o‘qib, jurnalga yozadi deb tasavvur qilasiz. U o‘qiydigan narsa oxirgi NAT sakrashi tashqi sarlavhaga qo‘ygan manzil, hotspot sifatida ishlatiladigan telefonda esa bu ko‘pincha yuzlab boshqa abonentlar bilan bo‘lishilgan manzil bo‘ladi. Mashinangizning o‘z 192.168.x.x manzili bu sarlavhada hech qachon internetdan o‘tmaydi, tunnel manzilini esa server aloqa allaqachon o‘rnatilgandan keyin beradi. Shuning uchun server jurnali va noutbukdagi ip addr mos kelmasa, ikkalasi ham xato emas; ular bitta sessiyaning turli qatlamlarini tavsiflaydi.

Uch manzil, jurnalda esa faqat bittasi

Chalkashlik uch manzilni bittaga jamlashdan kelib chiqadi. Har birining egasi boshqa, u boshqa sarlavhada yashaydi va serverga boshqa yo‘l bilan yetib boradi.

AddressWho assigns itWhere it sitsVisible to the VPN server
Device address, e.g. 192.168.1.24Your router via DHCPOuter header, before translationNo, rewritten in place
Translated address and portRouter, ISP CGNAT, or bothOuter header, after translationYes, this is the tuple it logs
Tunnel address, e.g. 10.8.0.6The VPN server itselfInner header, after decapsulationYes, but it chose it

Ulanish paytida faqat o‘rta qator noma’lum. Server uni demon turiga qarab sheriklar jadvaliga, holat fayliga yoki oqim jurnaliga yozadi: WireGuard uni oxirgi nuqta deb ataydi, OpenVPN holat fayli uni Real Address deb belgilaydi, strongSwan esa uni IKE_SA ning uzoq hosti sifatida bildiradi. Bu qiymat boshqa manbadan paket kelganda yangilanadi, shuning uchun hech kim hech narsani qayta ishga tushirmasdan o‘zgaradi.

Pastki qator — odamlar xato bilan shaxsiyat da’vosi deb o‘qiydigan narsa. U server konfiguratsiyasidagi o‘rinni belgilaydi, shaxsni emas, chunki server uni o‘z hovuzidan tanlagan. Ikki foydalanuvchi turli kunlarda bir xil tunnel manzilini olishi mumkin, bittasi esa ikki qurilmadan ikkitasini ushlab turishi mumkin.

Tunnel ishlab turganda jurnalga yozilgan kortej nima uchun o‘zgaradi

Manzillarni tarjima qilish taymerli jadval, doimiy bog‘lanish emas. Uy routeri oxirgi paketdan keyin UDP xaritasini biroz vaqt saqlaydi, operator shlyuzi portlarni o‘z jadvali bo‘yicha qayta ishlatadi, Wi-Fi dan LTE ga o‘tgan telefon esa butunlay boshqa manba bilan qaytadi. Bu yerda Linux conntrack standart qiymatlari foydali mezon: nf_conntrack_udp_timeout 30 soniya, oqim varianti esa 120, shuning uchun jim tunnel xaritani foydalanuvchi sezishidan ancha oldin yo‘qotishi mumkin.

"

Tunnel tirik qoladi, chunki protokol manzilni emas, sherikni autentifikatsiya qiladi. WireGuard qo‘l berib ko‘rishishdan keyin holatsiz, shuning uchun har qanday autentifikatsiya qilingan paket saqlangan oxirgi nuqtani yangilaydi va qayta bog‘lanish keyingi paketda tuzaladi; persistent-keepalive = 25 aynan shu uchun bor — bo‘sh turganda xaritani issiq ushlab turish uchun. OpenVPN ning --float parametri ham xuddi shu ishni qiladi va autentifikatsiya qilingan klientga yangi manzil va portdan davom etishga ruxsat beradi. float standart bo‘yicha o‘chirilgan 2.4 va 2.5 buildlarida qayta bog‘lanish sessiyani qayta tiklaydi va klient qaytadan ulanadi.

IPsec u yerga ko‘proq harakatlanuvchi qismlar bilan yetib boradi. IKEv2 NAT aniqlash yuklamalaridagi manba va manzil xeshlarini solishtirib tarjimani sezadi, UDP 4500 inkapsulyatsiyasiga o‘tadi va keepalive larni yangi kortejgacha kuzatadi. keepalive lar bloklanganda SA qog‘ozda ishlab turadi, bir yo‘nalishdagi trafik esa jimgina to‘xtaydi.

Server nimani bog‘lay oladi, nimani olmaydi

O‘ldirishga arziydigan afsona — tarjima sizni operatordan yashiradi degani. U yorliqni o‘zgartiradi, kuzatuvni emas. Operator NAT i orqasidagi shlyuz 100.64.0.0/10 maydonini yoki ko‘p abonent bo‘lishadigan bitta ommaviy manzilni ko‘radi va oqimni baribir sertifikat sub’ektiga, WireGuard ommaviy kalitiga, berilgan tunnel manziliga, bayt hisoblagichlariga va vaqt oynasiga bog‘lay oladi. Ularning hech biriga sizning LAN manzilingiz kerak emas.

Chegaralar teskari yo‘nalishda ham ishlaydi. Jurnaldagi umumiy manzil uyga emas, shlyuzga ishora qiladi; bir tarjima qilingan manzildan turli portlardagi ikki sessiya turli qurilmalar; port qayta ishlatilgan bo‘lsa, ikki turli kundagi bir xil manzil ikki bog‘lanmagan abonent bo‘lishi mumkin. Faqat sherik kalitlarini yozadigan server hisob ma’lumotlar bazasisiz ularni mijozga bog‘lay olmaydi, faqat manzillarni yozadigan server esa bir router orqasidagi noutbukni telefondan ajrata olmaydi.

Taxmin qilish o‘rniga ikki uchni solishtiring

Nima bo‘lganini aniqlash uchun bir xil aloqani ikki uchda bir vaqtda ushlang va manzilni emas, kortejni solishtiring. Klientda, har qanday tarjimadan oldin:

ss -uapn 'dport = :51820'
ip -4 route get 203.0.113.10
wg show wg0 endpoints

Keyin router yoki CGNAT shlyuzidagi tarjima yozuvini va serverga oxir-oqibat nima yetib borishini o‘qing:

conntrack -L -p udp --dport 51820
tcpdump -ni eth0 udp port 51820

Muvofiqsizliklarning ko‘pini uch naqsh tushuntiradi. Serverdagi manba porti mahalliy portdan farq qilsa, manzil esa mos kelsa: oddiy port tarjimasi. Serverdagi manba manzili sizga tegishli bo‘lmagan ISP blokiga mansub bo‘lsa: kamida bitta qo‘shimcha NAT qatlami. Paketlar bo‘sh turgandan keyin to‘xtab, yangi port bilan davom etsa: xarita muddati tugagan, marshrutlash nosozligi emas. Vaqt belgilari bir-ikki soniyadan ko‘proq farq qilsa, siz ikki turli urinishni solishtiryapsiz.

Farq qayerda narsalarni buzadi

Server nosozligidek ko‘rinadigan uzilishlar odatda shu yerdan boshlanadi. Uy manzilingizga bog‘langan kirish qoidasi ISP ijara muddati o‘zgargandan keyin ishlamay qoladi. Tarjima qilingan manzilga mos keladigan fail2ban qoidasi o‘sha shlyuz orqasidagi barcha abonentlarni birdan bloklaydi. Ruxsat etilgan uzoq manzilli sayt-sayt sherigi mobil aloqa o‘zgargandan keyin kalitlarni yangilashni to‘xtatadi. Tunnel protokoli joyida edi; tashqi kortej haqidagi taxmin unday emas edi.

Ayni chalkashlik server tomonida ham ko‘rinadi. Agar VPN qutisi o‘zi NAT orqasida bo‘lsa, port yo‘naltirish va ishlaydigan yo‘naltirish yo‘li kerak; strongSwan yo‘naltirish qo‘llanmasi IPsec uchun shu holatni qamrab oladi. Faqat shaxsiy manzilda yetib boriladigan server o‘z klientlari taqdim etadigan tarjima qilingan kortejni hech qachon ko‘rmaydi, va bu klientlarning tarjima qilinishidan boshqa muammo.

Ushbu to‘rtta tekshiruvni tartib bilan bajaring va birinchi muvaffaqiyatsizlikda to‘xtang:

  • Ikki uchda bir vaqtda ushlang; manba porti, manzil porti va vaqt belgilari mos kelishini tasdiqlang.
  • Kutgan manzilni emas, server hozir ushlab turgan manzilni sheriklar ro‘yxatidan o‘qing.
  • Yozuv va uning qolgan umri uchun conntrack yoki NAT jadvalini tekshiring.
  • Klientdagi tunnel interfeysi manzili LAN manziliga emas, server bergan manzilga mos kelishini tasdiqlang.

Agar ikkala ushlash ham kortejda kelishsa-yu, tunnel baribir ishlamasa, tarjima sizning muammoingiz emas; qo‘l berib ko‘rishish va tunnel ichidagi marshrutlash jadvaliga o‘ting.

O'xshash maqolalar