Tunnelni mehmon ichida qurish ham, uni hostda qurish ham brauzer bildiradigan manzilni o'zgartiradi, va o'xshashlik shu yerda tugaydi. Mehmon egalik qiladigan tunnel o'z kalitlarini, o'z standart marshrutini va o'z hal qiluvchisini mehmon yadrosi ichida saqlaydi, host esa shifrlangan paketlarni bitta uzoq manzilga yuboradi. Host egalik qiladigan tunnel buning ko'zgu aksidir: host mijozi sessiyani ushlab turadi va marshrutlar bilan siyosatni qo'llaydi, mehmon esa chiqqan narsani qarzga oladi. Xato egasini tanlasangiz, keyingi har bir belgi sizni xato mashinaga yuboradi. Ikki buyruq bu savolni taxminan bir daqiqada hal qiladi, bu yo'riqnomaning qolgani esa javob bilan nima qilish kerakligi.

Mijozga tegishdan oldin egasini aniqlang

Qoida shifrlangan matn qayerda ishlab chiqarilishi haqida, qaysi mashina VPN belgisini ko'rsatishi haqida emas. Agar uni mehmon ishlab chiqarsa, mehmonga VPN serveriga ishlaydigan marshrut kerak, hostdan boshqa hech narsa kerak emas. Agar uni host ishlab chiqarsa, mehmonning host orqali yo'li host mijozi mahalliy trafikka yuklaydigan har qanday siyosatga dosh berishi kerak.

Odatda uch savol joylashuvni siz uchun tanlaydi. Mehmon trafigi hostdagi korporativ mijozdan o'tishi kerakmi? Unda tunnel mehmon ichida. Bir necha mehmonga bitta hisob ma'lumoti va bitta chiqish manzili kerakmi? Unda u hostda, yo'naltirish ataylab sozlangan. Mehmon trafigi hostning VPN'idan butunlay tashqarida qolishi kerakmi? Unda mehmondagi tunnel buni tuzilishi bo'yicha beradigan yagona usuldir.

Javobni VM nomi yoniga bitta satrda yozib qo'ying: guest-owned yoki host-owned. Olti mashinali laboratoriyada bu yozuv quyidagi har qanday qadamdan ko'proq vaqt tejaydi, chunki u sizni kirgan mashinada hech qachon bo'lmagan tunnelni tekshirishdan saqlaydi.

WSL1 va WSL2 qarama-qarshi holatlardir

WSL1 virtual mashina emas, shuning uchun joylashuv savoli asosan bug'lanib ketadi. Uning Linux binarlari tarjima qatlami orqali Windows tarmoq stekiga qarshi ishlaydi, Linux VPN mijozida esa sozlash uchun mustaqil interfeyslar yo'q. Ishlaydigan variant Windows tomonidagi tunnel bo'lib, distributiv hech narsaga egalik qilmasdan natijadan foydalanadi.

WSL2 buning aksi. U Hyper-V virtual kommutatori orqasidagi yengil yordamchi VM'da haqiqiy yadro ishga tushiradi, manzil fazosi esa host tomonidagi adapter orqali NAT qilinadi. Shuning uchun distributiv ichidagi Linux mijozi jismoniy Linux qutisidagidek harakat qiladi: u tun0 yoki wg0 yaratadi, o'z marshrutlarini o'rnatadi va ishlaydi. Nosozlik host tomonida yashaydi. Windows VPN mijozi mahalliy tarmoqlarda trafikni bloklaydigan siyosat bilan ulanganda, WSL2 quyi tarmog'ini ishonchsiz mahalliy tarmoq deb hisoblaydi va NAT yo'lini kesadi. Shunda distributiv DNS va tashqi kirishni yo'qotadi, uning o'z tunnel esa hali sog'lom: wg show qo'l siqishni xabar qiladi, ip route to'g'ri ko'rinadi, curl esa osilib qoladi.

Qaysi tuzatishdan foydalanish mumkinligi Windows yig'indisiga bog'liq. Eskisi WSL quyi tarmog'i uchun host mijozidagi istisno bo'lib, mijozning mahalliy tarmoq yoki bo'lingan tunnel sozlamalari ostida qo'shiladi. Yangisi, buni qo'llab-quvvatlaydigan Windows 11 yig'indilarida, ko'zgu tarmoq: %UserProfile%\.wslconfig faylining [wsl2] bo'limiga networkingMode=mirrored qo'ying, wsl --shutdown ishga tushiring, va distributiv xususiy NAT quyi tarmog'i o'rniga host interfeyslarini bo'lishadi. Ko'zgu rejim localhost va kiruvchi portlarning xatti-harakatini ham o'zgartiradi, shuning uchun uni tumbler emas, migratsiya deb biling.

NAT, ko'prik va host nima ko'ra oladi

NAT ostida mehmon tunnel paketlari VPN serverining ommaviy manziliga yo'naltiriladi va shifrlangan UDP yoki TCP sifatida host adapteridan chiqadi. Host bitta oqim va uning bayt sonini ko'radi, ichidagi manzillar haqida hech narsa ko'rmaydi. Ko'prikli adapter ostida mehmon jismoniy LAN'da o'zining 2-qatlam identifikatsiyasiga ega, o'z DHCP ijarasini oladi va MAC asosidagi har qanday siyosat uchun ikkinchi qurilma bo'lib ko'rinadi. Hech bir rejim hostga tunnel yukini o'qishga ruxsat bermaydi; ko'prikli mehmon shunchaki atrofidagi tarmoqqa ancha ko'rinadigan bo'ladi.

Izolyatsiyaning ham pastki chegarasi bor. Mehmon o'z xotirasiga ega bo'lgan mashinadan yashirina olmaydi, hostni boshqaradigan esa mehmon RAM'idan kalitlarni o'qiy oladi. Mehmondagi tunnel sizga marshrutlash chegarasi va zararli dastur chegarasini beradi, noutbukni ushlab turgan odamdan himoyani emas. Hujjatlashtirilgan adapter rejimlarini tanlayotganda ochiq ushlash arziydi, chunki rejim host ko'radigan narsani ham, LAN ko'radigan narsani ham o'zgartiradi.

Yo'riqnoma: joylashtiring, sozlang, isbotlang

Bu to'rtta tekshiruvni yangi mehmon qobig'ida tartib bilan bajaring va yozgan egangizga mos kelmaydigan birinchisida to'xtang.

  1. ip route get 1.1.1.1 tun0 yoki wg0 qaytarsa — mehmon mulki, xususiy keyingi sakrash bilan eth0 qaytarsa — host mulki.
  2. resolvectl query example.com, yoki mehmon hal qiluvchi xizmatini ishga tushirmaydigan joyda /etc/resolv.conf o'qing. Trafikni tashiyotgan, lekin DNS'ni tashimaydigan tunnel eng ko'p uchraydigan yarim sozlangan holat.
  3. Chiqishlarni solishtiring: mehmonda curl -4 -s https://ifconfig.me va hostda curl.exe -4 -s https://ifconfig.me. Turli manzillar tunnel mehmonga tegishli ekanini bildiradi, VPN'dagi host bilan uy provayderini ko'rsatayotgan mehmon esa hech narsa meros olinmagan holat.
  4. Ikkisini ham -6 bilan takrorlang. Faqat v4 tunnel v6'ni oqizadi, agar mijoz uni bloklamasa yoki marshrutlamasa, va ko'p mijozlar standart bo'yicha v6'ni jismoniy interfeysda qoldiradi.

Bir necha mehmon bitta tunnelni bo'lishadigan host-shlyuz dizaynida host yo'naltirishi va tarjima qilishi kerak. Linux hostda bu uch qism, va ularning biri bo'lmasa mehmon jimgina odatdagi marshrutiga qaytadi:

sysctl -w net.ipv4.ip_forward=1
iptables -t nat -A POSTROUTING -o wg0 -j MASQUERADE
iptables -A FORWARD -i virbr0 -o wg0 -j ACCEPT
iptables -A FORWARD -i wg0 -o virbr0 -m state --state RELATED,ESTABLISHED -j ACCEPT

WireGuard tomonida host sherigining AllowedIPs qiymati mehmonlarning quyi tarmog'ini o'z ichiga olishi kerak, masalan 192.168.122.0/24, aks holda qaytish paketlari hech qachon yetib kelmaydi va sozlama xavfsizlik devori muammosiga o'xshaydi. Windows host xuddi shu natijaga Internet Connection Sharing yoki Hyper-V kommutatoridagi NAT qoidasi bilan erishadi va xuddi shu qaytish yo'li tekshiruvini talab qiladi.

Joylashuv hali ochiq bo'lsa, bu jadval eng ko'p uchraydigan variantlarni qamrab oladi:

SituationOwnerCheck first
One VM, host also on a corporate VPNGuestDoes the host client block local networks?
Six lab VMs, one exit addressHost plus forwardingip_forward, NAT rule, server AllowedIPs
Malware or research VMGuest, NATSnapshot age and resolver state
Bridged VM on an office LANGuestDHCP lease and port security

Ikki tunnel, ikki mehmon va ular orasidagi ziddiyatlar

Bir vaqtda ikki chiqish kerak bo'lsa, dosh beradigan naqsh — har bir mehmonga bitta tunnel. Har bir VM o'z standart marshruti va hal qiluvchisini saqlaydi, host odatdagi tarmoqda qoladi, va ikki tunnel hech qachon bitta marshrutlash jadvali uchun janjallashmaydi. Ikki mehmonni ko'prik bilan ulash ham ularning marshrutlarini birlashtirmaydi: virtual tarmoq yo'l beradi, va har bir mijozga bu mahalliy trafik tunnelni aylanib o'tishi mumkinligi hali ham aytilishi kerak.

Host tunnelini va mehmon tunnelini birga ishga tushirish qonuniy, va ataylab ichma-ich joylashtirish ba'zan aynan siz xohlagan narsa: mehmon o'z tunnelidan chiqadi, u tunnel esa hostning tunnelidan chiqadi. Buni uzilishga aylantiradigan narsa — qaysi oxirgi nuqtaga qaysi qatlam orqali yetish kerakligi hech kim tomonidan yozilmagani. Manzil va egadan iborat ikki ustunli ro'yxat tuting, va marshrut ziddiyati tushdan keyingi izlanish o'rniga bitta qidiruvga aylanadi.

Tasdiqlang, keyin tiklashni egasiga qoldiring

Mehmon ichidan sinab ko'ring yangi dastur jarayoni bilan: trafik, nomlarni hal qilish, ikkala manzil oilasi va tunnel yiqilganda nima bo'ladi. Hostning VPN belgisi mehmon qamrovi haqida hech narsa demaydi, va bu butun sohada eng ko'p uchraydigan yolg'on tasdiq.

Tiklash ham egasiga tegishli. Mehmon egalik qiladigan tunnel mehmonning o'z mijozi va u yozgan marshrutlar bilan tiklanadi. Host egalik qiladigan dizayn hostning yuklanish tartibi bilan tiklanadi, va yo'naltirish qoidalari qayta yuklanishdan o'tmaydi, agar unit yoki ishga tushirish vazifasi ularni qayta qo'llamasa. Tiklangan snapshot — bu joylashtirish, bekor qilish emas, chunki u disk bilan birga eski hisob ma'lumotlari va eski marshrutlarni qaytaradi. Ishni tugagan deb e'lon qilishdan oldin ega hali yozgan satringizga mos kelishini, DNS va ikkala manzil oilasi mehmon ichida hal bo'lishini, o'lik tunnel qora tuynuk o'rniga foydalanish mumkin bo'lgan tarmoq qoldirishini va qayta yuklanish yoki snapshot tiklash xuddi shu holatni qayta hosil qilishini tasdiqlang.

O'xshash maqolalar