Kill switch kutilmagan yo'nalishda ishlamay qoladi: ular tunnel pastda bo'lganda trafikni bloklash uchun qurilgan, tunnelni quradigan paketlarning o'zi esa trafik. Butun xato shunda. Tunnel orqali chiqmaydigan hamma narsani tashlaydigan qoidalar to'plami tunnelni ko'tarishi kerak bo'lgan qo'l siqishni ham tashlaydi, shuning uchun mijoz siklda qayta urinadi va xato birinchi tekshirilgan bosqichga yoziladi. Firewallni kengaytirishdan oldin uch bosqichdan qaysi biri rad etilayotganini aniqlang: nom qidiruvi, peerga ketayotgan tashqi paket yoki qaytib kelayotgan javob.

Tunnel va uning o'z transporti bir-biriga qanday bog'liq

VPN mijozini bitta soket yo'lini bo'lishadigan ikki tarmoq holati deb o'qing. Tunnel paydo bo'lishidan oldin mijoz fizik adaptterda soket ochadi va shifrlangan freymlarni peerning manzili va portiga yuboradi. Faqat shu almashinuv muvaffaqiyatli bo'lgach, u tunnel qurilmasini yaratadi va marshrutlarni o'rnatadi. Kill switch ikkinchi holat haqidagi siyosat bo'lib, ikkalasiga ham tegishli bo'ladigan darajada keng yozilgan.

Interfeysga asoslangan qoidalar odatiy shakl: shu yerdan chiqadiganini qabul qiling tun0 yoki wg0, chiqish yo'lining qolganini tashlang. Bu shakl mijozning serverga o'z ulanishini istisno qila olmaydi, shuning uchun to'g'ri amalga oshirish bu istisnoni aniq qo'shadi, qoidalarni qo'lda yozganda siz ham shunday qilasiz. Windows va macOSda har bir dastur bo'yicha qoidalar interfeys o'rniga jarayonni moslashtirib, buning bir qismini chetlab o'tadi, lekin jarayon ham tunnel paydo bo'lishidan oldin chiqishi kerak.

Uch bosqich, sodir bo'lish tartibida

Birinchi bosqich — hal qilish. Profil so'zma-so'z manzil o'rniga xost nomini saqlasa, mijoz biror narsa yuborishdan oldin DNS javobiga muhtoj. DNSni tunnel hal qiluvchisiga yo'naltiruvchi profil boshi berk ko'chaga olib keladi: hal qiluvchi faqat qidiruv ochishi kerak bo'lgan tunnel orqali yetib boriladi. Tunneldan tashqarida hal qilish yoki so'nggi nuqtani manzilga mahkamlash bu noaniqlikni yo'q qiladi.

Ikkinchi bosqich — tashqi paket, u shu tartibda avval marshrutlashdan, keyin firewalldan o'tishi kerak. wireguard-tools WireGuard uchun bu marshrutlashning yarmini o'zi bajaradi: o'z paketlarini belgilaydi va hozir o'rnatgan standart marshrutni chetlab o'tishlari uchun siyosat qoidasini qo'shadi; wg-quick qo'llanma sahifasi o'sha qoidani va u ishlatadigan jadvalni tavsiflaydi. Bu marshrutlashni qo'lda qayta quring yoki ikkinchi asbob qoidalarni qayta yozishiga ruxsat bering, belgilangan paketlar o'zlari yaratishi kerak bo'lgan tunnelga qaytarilishi mumkin.

Uchinchi bosqich — qaytish yo'li. Javobsiz qo'l siqish chiqishda tashlashning isboti emas; u serverning kirish qoidasi yoki xaritalashni unutgan NAT qurilmasi bilan ham birdek mos keladi. Mijozga tegishdan oldin bularni ajrating.

What you seeStageWhere to look
The client log repeats a resolve step and no packets appear on the wire1, name lookupResolver path while the tunnel is down
The send counter on the physical adapter stays flat2, routingPeer route and policy rules
The send counter rises and a firewall drop counter rises2, firewallRule order, mark, and interface match
Packets leave and nothing comes back3, return pathServer input rules, NAT, listening port

Mijozlar aniqlagan simptomni yozadi, muvaffaqiyatsiz bosqichni emas, shuning uchun jadval odatda jurnaldan tezroq.

Hisoblagichlar jurnallardan tezroq qaror qiladi

Linuxda, nft list ruleset yoki iptables -vnL OUTPUT har bir qoida uchun paket hisoblagichini chiqaradi. Bir marta ulanib, muvaffaqiyatsiz bo'lishiga yo'l qo'ying, so'ng hisoblagichlarni yana o'qing. Hisoblagichi siljigan qoida qo'l siqish urgan qoidadir; hech qayerda hech narsa siljimagan bo'lsa, paket firewallga hech qachon yetib bormagan. Men qoidalar to'plamining o'z qo'l siqishini tashlaganini ko'rdim va buni faqat hisoblagichlar aytdi.

Hech qachon firewallga yetmaganini hech qachon xostdan chiqmaganidan ajratish uchun interfeysning o'zini kuzating. ip -s link show dev wlan0 yuborilgan paketlar haqida xabar beradi, va tcpdump -ni wlan0 udp port 51820 freymlarni ko'rsatadi. Mijoz qayta urinayotganda u tekis qolsa, nosozlik netfilterdan yuqorida: peer marshruti yetishmayapti, hali mavjud bo'lmagan qurilmaga ishora qiluvchi siyosat qoidasi yoki mijoz yutib yuboradigan soket xatosi.

Istisnolarni hujjat manzillarida sinab ko'ring, masalan 203.0.113.10, xato boshqaning xostini tekshira olmasligi uchun.

Eskirgan so'nggi nuqta istisnosi server uzilishi deb o'qiladi

Eng chalg'ituvchi versiya peer manzili o'zgargandan keyin paydo bo'ladi: dinamik manzil xizmati uni ko'chirdi, xost qayta qurildi yoki tarmog'ingizning chiqish manzili boshqa. Istisno hanuz eski manzilni nomlaydi, shuning uchun yangisiga ketayotgan paketlar tashlash qoidasiga tushadi. Xuddi shu konfiguratsiya kecha ishlagan, shuning uchun odamlar serverni tekshirishdan boshlaydi.

Firewall qoidasi ichidagi xost nomi sizni qutqarmaydi. nftablesda nom qoidalar to'plami yuklanganda hal qilinadi, shuning uchun o'sha paytda mavjud bo'lgan manzilni qotiradi va so'zma-so'z manzil kabi eskiradi. Barqaror yechim — so'nggi nuqta o'zgarganda istisnoni yangilash va uni tor saqlash: bitta peer manzili, bitta transport porti. Manzil o'zgarishiga bardosh beradigan darajada keng diapazon aloqasiz trafikni ham chiqarishga yetarlicha keng.

Kill switch server xostida ishlaganda

Xuddi shu bog'liqlik narigi uchda ham bor va u yerda uni o'tkazib yuborish osonroq. Agar VPN serveringiz bo'lib xizmat qiladigan mashina kill switchli ish stoli mijozini yoki noutbukdan ko'chirilgan firewall profilini ham ishga tushirsa, uning tashlash qoidalari tunnellarni tugatuvchi xizmatga taalluqli bo'ladi. Mijozning qo'l siqishiga javoblar tashlanadi, shuning uchun server sog'lom ko'rinib, tunnel interfeysi foydalanilmay yotganda ham har bir mijoz ulana olmaydi.

Bu xostga tashlashdan oldin uchta tor ruxsat kerak: fizik interfeysdagi tinglash porti, shifri ochilgan trafik uchun tunnel interfeysi va tunneldan mijozlar yetishi kerak bo'lgan joyga yo'naltirish. O'rnatilgan to'plamni quyidagi bilan o'qing: nft list ruleset, iptables -S, yoki pfctl -sr biror narsani o'zgartirishdan oldin, va saqlangan qoidalar to'plami qayta yuklashdan omon qolishini unutmang, shuning uchun u yerdagi xato uni yaratgan jarayondan uzoq yashaydi.

Mashinani yopiq holda saqlaydigan tiklash tartibi

Profildan tashqariga qarab ishlang. Mijoz ishlatadigan peer manzili va portini o'qing, xost nomi tunnelsiz hal qilinishini tasdiqlang, so'ng faqat fizik adapotrda o'sha manzil va port uchun bitta istisno qo'shing. Qayta ulanib, yuborish hisoblagichini kuzating; tugallangan qo'l siqish ikkinchi bosqich tuzatilganining belgisidir.

Sinov paytida tashlash siyosatining qolganini joyida qoldiring. Zararsiz tekshiruv — aloqasiz hujjat manziliga ulanishga urinib, u hanuz vaqt tugashi bilan yakunlanishini tasdiqlash, bu kill switch o'chirilganini emas, ishlayotganini ko'rsatadi. Tunnel barqaror bo'lgach istisnoni qattiqlashtiring va qulay deb mijoz dasturiga abadiy hamma narsaga ruxsat qoldirmang.

Tunnel ko'tarilib, dastur hanuz muvaffaqiyatsiz bo'lsa, qolgan bosqichlar bu emas: bo'lingan DNS, MTU va har bir dastur bo'yicha marshrutlash — har biri ulangan tunnel va buzilgan trafik beradi, har birining birinchi tekshiruvi boshqacha.

O'xshash maqolalar