Wi-Fi o’zgarganda yoki Ethernet ulanganda VPNingiz nima uchun uziladi
'Yangi SSID, kirish nuqtalari o’rtasidagi rouming va ulangan kabel tunnelni uch xil joyda uzadi. Manba manzilini, keyin marshrutni, keyin protokolni tekshiring.'
Ikki narsa bitta nosozlik sifatida xabar qilinadi: noutbuk boshqa Wi-Fi tarmog’iga o’tdi yoki Wi-Fi ishlab turganda kabel ulandi. Mijoz hali ham ulangan deydi, belgi sog’lom ko’rinadi va tunnel hech narsa tashimaydi. Ostida faqat uchta holat bo’lagi siljishi mumkin - ulanish, mahalliy manzil, standart marshrut - va qaysi biri siljiganligi tunnel o’zi tiklanadimi yoki qayta ulanish kerakmi ekanini hal qiladi. Men ularni shu tartibda tekshiraman, chunki hisob sozlamalarini o’zgartirish ularning birortasini ham hech qachon tuzatmagan.
Ulanish, manzil va marshrut mustaqil ravishda siljiydi
Bir tarmoqning kirish nuqtalari o’rtasidagi rouming odatda L2 hodisasi. Radio qayta bog’lanadi, interfeys o’z manzili va shlyuzini saqlaydi, tunnel bog’liq bo’lgan hech narsa o’zgarmaydi, shuning uchun katta ofisda yurish ba’zan sezilmay o’tadi. Boshqa SSIDga qo’shilish bunday emas: eski interfeys tushishi mumkin, DHCP yangi manzil, yangi shlyuz va yangi hal qiluvchilar beradi, tunnel ishlatgan tashqi oqim esa mavjud bo’lmay qoladi.
Ethernet uchinchi shaklni qo’shadi. Wi-Fi hech qachon tushmaydi, shuning uchun ulanish hodisasi umuman yuz bermaydi, lekin simli interfeys o’z manzili bilan paydo bo’ladi va ko’pincha metrika bo’yicha standart marshrutni yutib oladi. Tunnel endi afzal ko’rilmagan yo’lda davom etadi yoki mijoz soketini boshlagan simsiz tarmoqqa bog’lab qo’yadi. Brauzerdan ikkalasi bir xil ko’rinadi: kabel qulaganda sahifalar to’xtaydi.
Demak birinchi savol Wi-Fi o’zgardimi emas. Tunnel ishlab turganda siz bog’langan manzil yoki oxirgi nuqtagacha marshrut o’zgardimi.
Tashqi soket hozir g’oyib bo’lgan manzilga bog’langan
Har bir tunnel tashqi oqim: mahalliy manzil va port server manzili va porti bilan gaplashadi. Linuxda bu eski manbaga bog’langan UDP soket; manzilni ushlab turgan interfeys olib tashlanganda, yuborishlar EADDRNOTAVAIL bilan muvaffaqiyatsiz bo’ladi yoki server hech qachon ko’rmagan manba bilan yangi interfeys orqali chiqadi.
Uzoq tomon o’z bog’lamini saqlaydi. MOBIKEsiz IKEv2 SA manzillar jufti bilan aniqlanadi, va OpenVPN sessiyasi o’rgangan tengdosh manziliga bog’langan, NAT xaritasi esa uni yaratgan xususiy manzil, port va ommaviy manzilga tegishli. Boshqa NAT orqasiga o’tsangiz, har bir javob endi mavjud bo’lmagan xaritaga ketadi. Mashinangizda hech narsa noto’g’ri sozlanmagan; beshlik siz tark etgan tarmoqqa ishora qiladi.
Nazariya qurishdan oldin holatni o’qing:
ss -unphar bir tunnel soketi aslida ushlab turgan mahalliy manzil va portni ko’rsatadi.ip route get 203.0.113.10yadro hozir oxirgi nuqta uchun ishlatadigan manba manzili va qurilmani chop etadi.wg show wg0 endpoints,swanctl --list-sasyoki mijoz jurnali uzoq tomon gaplashyapti deb o’ylagan tengdosh manzilini ko’rsatadi.
Agar soket manzili va marshrut qidiruvi mos kelmasa, siz uzilishni topdingiz va hech qanday ishonch ma’lumoti o’zgarishi unga tegmaydi.
Har bir protokol yangi manba manzili bilan nima qiladi
Mijozlar o’zgarishni turli darajada singdiradi va jadval qayta ulanish xulqidan taxmin qilish o’rniga men mijoz sozlamalari bilan solishtiradigan narsadir.
| Tunnel | Recovery behaviour | Failure signature |
|---|---|---|
| WireGuard | Updates the peer endpoint when an authenticated packet arrives from a new address; no handshake needed if traffic continues. | Handshake current, no return traffic; wg show still lists the old endpoint. |
| IKEv2/IPsec | MOBIKE (RFC 4555) moves the SA to the new address; without it the responder discards packets from an unknown source. | DPD or keepalive timeouts, then a full rekey or a dead SA. |
| OpenVPN over UDP | --float accepts a packet from a new source mid-session; otherwise the session stays tied to the original peer address. | Idle until ping-restart fires, then a visible reconnect. |
| OpenVPN over TCP | The tunnel is a byte stream, so a changed source address breaks it outright. | Immediate reset and a new connection attempt. |
WireGuard rouming qoidasi faqat bir yo’nalishda ishlaydi: mijoz avval yangi manzildan yuborishi kerak. Eski interfeysga hali bog’langan soket buni hech qachon qilmaydi, shuning uchun tunnel tirik ko’rinishi mumkin, ammo uning qo’l berish taymeri qariydi. protokol tavsifi oxirgi nuqtani yangilash shartini aniq ko’rsatadi va sozlamani o’zgartirishdan oldin uni o’qishga arziydi.
MOBIKE kelishuv orqali hal qilinadi, taxmin qilinmaydi. Agar server uni taklif qilmasa, mijoz qaytadan o’rnatishi kerak va bu SA ro’yxati yoki jurnaldan tasdiqlaydigan fakt, aylanayotgan g’ildirakdan chiqaradigan xulosa emas.
Yo’lni marshrut ustuvorligi hal qiladi, Wi-Fi belgisi emas
Ikkala interfeys ham yuqorida bo’lsa, yadro metrika va prefiks uzunligi bo’yicha tanlaydi. ip route show default nomzodlarni sanab chiqadi va ip route get 203.0.113.10 manba manzilini qo’shgan holda haqiqiy qarorni hal qiladi. Metrikasi 100 simli standart va 600 simsiz standart oxirgi nuqta kabel o’tirgan lahzada siljishini bildiradi, avval soket ochgan har bir dastur esa eski manbasini saqlaydi.
Windows ham avtomatik interfeys metrikalari bilan xuddi shunday qiladi, aloqa tezligi ta’sirida. Get-NetRoute -DestinationPrefix 0.0.0.0/0 nomzodlarni saralaydi va Find-NetRoute -RemoteIPAddress 203.0.113.10 stek tanlaydigan interfeys va manbani qaytaradi. Tashqi soketini bitta interfeysga bog’lagan mijoz metrika teskari o’zgargandan keyin ham undan foydalanadi; bu bog’lash qarori, marshrutlash nosozligi emas.
Android bo’linishni ko’rinadigan qiladi: ConnectivityManager mavjud tarmoqlar va alohida standart haqida xabar beradi, soketni Network obyektiga bog’laydigan VPN ilovasi esa qayta bog’lamaguncha bu bog’lanishni saqlaydi. macOSda scutil --nwi asosiy interfeys va tizim ishlatadigan tartibni chop etadi.
DNS, MTU va IPv6 ulanish bilan birga siljiydi
Yangi ulanish yangi hal qiluvchilar olib keladi. systemd-resolved bilan DNS har bir aloqa uchun, resolvectl status qaysi aloqa nomga javob berishini ko’rsatadi va o’z hal qiluvchisini tarqatadigan mehmon tarmog’i aloqa yana afzal bo’lmaguncha tunnel itargan DNSni ishlatilmay qoldirishi mumkin. Tutib oluvchi portal vaziyatni yomonlashtiradi: birinchi HTTPS so’roviga oxirgi nuqta o’rniga portal javob beradi va mijoz o’lik serverni qayd etadi.
Yo’lning MTU ham o’zgaradi. Ethernet va Wi-Fi odatda 1500 bayt tashiydi, PPPoE 1492, mobil aloqalar esa ko’pincha kamroq. Kichikroq MTU meros olgan tunnel katta paketlarda to’xtaydi, kichik so’rovlar o’tadi, bu yarim buzilgan ulanish sifatida o’qiladi. ping -M do -s 1472 203.0.113.10 DF o’rnatilgan 1500 baytli paket yuboradi; sukunat yo’l siz o’ylagandan kichikroq ekanini bildiradi.
IPv6 ikkinchi yarmi. Yangi prefiks beradigan tarmoq ikki qatlamli mijoz ishlatadigan manbani o’zgartiradi va faqat v4 tunnel siyosat yetguncha v6 trafigini tashqarida qoldiradi. ip -6 route show default va ip -6 addr show yangi aloqada umuman v6 yo’li bor-yo’qligiga javob beradi.
Tasvirlash o’rniga o’tishni qayta hosil qiling
Bitta zararsiz so’rovni tanlang va o’zgarishning ikki tomonida o’sha uchta buyruqni bajaring: ip -br addr, ip route show default, ip route get 203.0.113.10. Keyin tunnel hali ham paket chiqarayotganini kuzating - tcpdump -ni any udp port 51820 WireGuard uchun bu, qolgan hamma narsa uchun mos port. Eski manbadan chiqayotgan paketlar bog’lash muammosini bildiradi. Yangi manbadan javobsiz chiqayotgan paketlar uzoq tomon yoki oradagi NATni bildiradi.
Birinchi nosozlik bilan qaysi hodisa to’g’ri kelganini yozib qo’ying: ulanish uzilishi, manzil o’zgarishi yoki standart marshrut o’zgarishi. Bular turli mas’ullarga ishora qiladi - qayta bog’lanishi kerak mijoz, qayta olinishi kerak manzil yoki sozlama fayliga tegishli, doimiy chetlab o’tish qoidasiga tegishli bo’lmagan marshrut.
Tuzatildi deyishdan oldin to’g’ridan-to’g’ri trafik bloki bo’shliq davomida ham turishini va nomlar yangi ulanish orqali hal bo’lishini tasdiqlang. Agar almashtirishdan keyin ham mijoz eski oxirgi nuqtani ushlab tursa, avval rouming yoki float sozlamasini tuzating. Agar to’g’ri rouming qilib, baribir javob olmasa, serverdagi tengdosh identifikatsiyasi va yo’ldagi NATga qarang, va keyingi odam solishtira olishi uchun ikkala tarmoq kontekstini yozuvda saqlang.