Tunnel ishlayapti, wg show yaqinda bo’lgan handshake haqida xabar beradi, serverning tunnel manziliga ping qilishingiz mumkin va undan narida hech narsa javob bermaydi. Birinchi fikr kalitlarni qayta yaratish yoki konfiguratsiyani qayta ulashish bo’ladi. Bu esa allaqachon ishlashi isbotlangan yo’l qismini o’zgartiradi.

Tugallangan handshake ikki tomon kalitlar bo’yicha kelishganini, UDP oxirgi nuqtaga yetib borishini va kripto marshrutlash paketni qabul qilishini bildiradi. Paket keyin serverdan chiqa oladimi — bu haqda hech narsa demaydi.

Shuning uchun taxmin qilish o’rniga bitta paketni kuzatib boring. U o’lishi mumkin bo’lgan to’rtta joy bor va har biri boshqacha iz qoldiradi.

Handshake aslida nimani isbotlaydi

WireGuard — Noise handshake bilan sessiya o’rnatadigan va keyin sherik uchun paketlarni shifrlaydigan UDP protokoli. wg show bir necha sekundlik handshake va o’sib borayotgan uzatish hisoblagichini ko’rsatsa, oxirgi nuqta, kalitlar va sherikning ochiq kaliti — barchasi to’g’ri.

U isbotlamaydigan narsa: sizning mijozingiz internetga yo’naltirilgan trafikni interfeysga umuman yuboradimi, server uni uzatishga tayyormi yoki javob qaytish yo’lini topa oladimi. Bular yadro marshrutlashi va xavfsizlik devori qarorlari bo’lib, tunneldan tashqarida qabul qilinadi.

Serverning tunnel manziliga ping qilish shunchalik chalg’ituvchi sinov bo’lishining sababi shu. U paket serverning o’ziga yo’naltirilgan, shuning uchun u mahalliy tugaydi. Unga hech qachon uzatish, hech qachon tarjima va hech qachon internetdan qaytish marshruti kerak emas.

AllowedIPs — marshrutlash qarori

Mijozda AllowedIPs ikkita ish qiladi. Bu qaysi manzil yo’nalishlari shu sherikning tunneliga yuborilishini hal qiladigan kriptokalit marshrutlash jadvali va sherik sizdan qabul qiladigan manba manzillari ro’yxati. Agar mijoz konfiguratsiyasida faqat 10.8.0.0/24 ko’rsatilgan bo’lsa, ommaviy manzillar interfeysga hech qachon kirmaydi va odatdagi standart marshrutingiz ularni tunneldan tashqariga olib chiqadi. Shunda tunnel mukammal ishlaydi va siz xohlagan hech narsani qilmaydi.

Konfiguratsiya fayli nima deyishiga emas, mijoz aslida nima o’rnatganiga qarang:

wg show wg0 allowed-ips
ip route get 1.1.1.1

Ikkinchi buyruq hal qiluvchi. Agar javob jismoniy interfeysingiz va odatdagi shlyuzni aytsa, paket tunneldan o’tmayapti va server tomonidagi hech qanday o’zgarish buni tuzatmaydi. IPv4 uchun 0.0.0.0/0 va IPv6 uchun ::/0 alohida qo’shing; bir oila uchun hammasini qamrab oluvchi qoida ikkinchisini o’zining asl yo’lida qoldiradi va bu ishlaydigan IPv4 tunnel hamda qotib qolgan IPv6 qidiruvining keng tarqalgan sababi.

Paket shlyuzda qayerda o’ladi

Marshrut to’g’ri bo’lsa-yu, paket baribir hech qayerga bormasa, u serverga yetib boradi va shu yerda to’xtaydi. To’rtta tekshiruv shlyuzlarning ko’pini qamrab oladi.

Uzatish. sysctl net.ipv4.ip_forward 0 qaytarishi klassik javob va ko’plab distributivlar hanuz standart bo’yicha 0 da. U 1 bo’lishi kerak va qayta yuklashda yo’qoladigan buyruq bilan emas, sysctl faylida doimiy o’rnatilishi kerak. IPv6 uzatishi alohida kalit.

Filtr siyosati. Standart drop siyosatiga ega FORWARD zanjiri tunnel trafigini tashlab, xostning o’ziga ketayotgan trafikni o’tkazadi, bu esa alomatga aynan mos keladi. Saqlangan faylni emas, tirik qoidalar to’plamini o’qing: nft list ruleset yoki iptables -S.

Tarjima yoki marshrutlash. Xususiy tunnel manzillaridan foydalanadigan mijozlarga yo serverning chiqish interfeysida manba NAT, yo yuqori tarmoq qaytarishni biladigan marshrutlangan prefiks kerak. Ularning orasidagi tanlov manzillar rejasiga bo’ysunadi. Prefiksingizni allaqachon qaytarib marshrutlaydigan tarmoqqa MASQUERADE qo’shish zararsiz, ammo ma’nosiz, marshrut yo’q joyda uni tashlab ketish esa javoblarni marshrutlanmaydigan xususiy diapazonga yo’naltirilgan holda qoldiradi.

Qaytish yo’li. Marshrutlangan loyihalarda yuqori routerga serveringizga ishora qiluvchi marshrut kerak. Provayder tarmog’i ham buni to’sishi mumkin: bir nechta bulut instansda manba va manzil tekshiruvini yoqadi, u esa manbasi instansning o’z manzili bo’lmagan paketlarni o’sha tekshiruv o’chirilgunga qadar jimgina tashlaydi.

DNS marshrutlashdan boshqacha muvaffaqiyatsiz bo’ladi

Ma’lum manzilga paket va nom qidiruvi ikki alohida nosozlik, xato xabarlari esa qarama-qarshi yo’nalishlarda chalg’itadi. Agar ping 1.1.1.1 ishlayotgan bo’lsa-yu, brauzer hech narsani yuklay olmasa, marshrut joyida, nomlarni hal qilish esa yo’q. Agar pingning o’zi ishlamasa, DNS ahamiyatsiz va siz oldingi bo’limga qaytdingiz.

wg-quick konfiguratsiyadagi DNS = satridan resolver o’rnatishi mumkin, systemd-resolved esa har bir ulanish uchun o’z xulq-atvoriga ega. Resolverni faqat tunnel ichida yetib boriladigan manzil bilan almashtiruvchi VPN tunnel yiqilgan lahza har bir qidiruvni barbod qiladi, bu esa tunnel internetni buzayotgandek ko’rinadi.

SymptomLayer to inspect
Tunnel address pings, nothing else doesClient route, then gateway forwarding
Public IP pings, hostnames failResolver selection and reachability
Handshake completes, no reply everFORWARD policy or missing NAT on the server
Small requests work, large transfers stallMTU and TCP MSS clamping

Dalil beradigan tartib

Avval mijoz tomonidagi tekshiruvni bajaring, chunki bu bitta buyruq va imkoniyatlarning yarmini yo’qotadi. Keyin server umuman internet chiqishi uchun mo’ljallanganini tasdiqlang; xususiy kirish uchun qurilgan shlyuz ommaviy manzillar ishlamaganda buzilgan hisoblanmaydi.

Serverda mijozdan ping yuborayotganda interfeysni kuzating: tcpdump -ni wg0 icmp so’rovni ko’rsatishi kerak, tcpdump -ni eth0 icmp esa uning chiqib borayotganini, tarjima qilingan yoki qilinmaganini ko’rsatishi kerak. Agar u birinchisida ko’rinib, ikkinchisida hech qachon ko’rinmasa, to’xtash serverning o’zida. Agar u chiqib, javob qaytmasa, muammo yuqorida va bu boshqa suhbat.

Nihoyat, tuzatish qayta yuklashdan keyin ham saqlanishini ta’minlang. Uzatish sysctl fayliga, xavfsizlik devori qoidalari ularni yuklaydigan xizmatga, mijoz marshrutlari esa interfeysni ko’taradigan konfiguratsiyaga tegishli, siz unutadigan shellga emas. Qayta ulanib, o’sha ikki sinovni takrorlang va hisoblagichlar harakatlanayotganini tasdiqlang.

O'xshash maqolalar