Kill switch күтпеген бағытта сүрінеді: олар туннель өшіп тұрғанда трафикті бұғаттауға құрылған, ал туннельді тұрғызатын пакеттердің өзі трафик. Бұл — бүкіл қате. Туннельден шықпайтынның бәрін тастайтын ережелер жиынтығы туннельді көтеретін қол алысуды да тастайды, сондықтан клиент циклде қайталап әрекет етеді, ал қате бірінші тексерілген кезеңге жазылады. Файрволды кеңейтпес бұрын үш кезеңнің қайсысы қабылданбай жатқанын анықтаңыз: атауды іздеу, серіктеске баратын сыртқы пакет немесе қайтып келетін жауап.

Туннель мен оның өз тасымалы бір-біріне қалай тәуелді

VPN клиентін бір сокет жолын бөлісетін екі желілік күй ретінде оқыңыз. Туннель пайда болмай тұрып, клиент физикалық адаптерде сокет ашып, шифрланған фреймдерді серіктестің мекенжайы мен портына жібереді. Осы алмасу сәтті болғаннан кейін ғана ол туннель құрылғысын жасап, бағыттарды орнатады. Kill switch — екінші күй туралы саясат, екеуіне де қолданылатындай кең жазылған.

Интерфейске негізделген ережелер — әдеттегі нысан: мына жерден шығатынын қабылдаңыз: tun0 немесе wg0, шығыс жолының қалғанын тастаңыз. Бұл тұжырым клиенттің серверге өз қосылымын ерекшелей алмайды, сондықтан дұрыс іске асыру бұл ерекшелікті анық қосады, ережелерді қолмен жазғанда сіз де солай жасайсыз. Windows пен macOS-та қолданба бойынша ережелер интерфейстің орнына процесті сәйкестендіріп, мұның бір бөлігін айналып өтеді, бірақ процесс бәрібір туннель пайда болмай тұрып сыртқа шығуы керек.

Үш кезең, орындалатын ретімен

Бірінші кезең — шешу. Профиль сөзбе-сөз мекенжайдың орнына хост атын сақтаса, клиент бірдеңе жібермес бұрын DNS жауабын қажет етеді. DNS-ті туннель шешушісіне бағыттайтын профиль тұйыққа әкеледі: шешушіге тек іздеу іске қосуы тиіс туннель арқылы ғана жетуге болады. Туннельден тыс шешу немесе соңғы нүктені мекенжайға бекіту бұл екіұштылықты жояды.

Екінші кезең — сыртқы пакет, ол осы ретпен алдымен бағыттаудан, содан кейін файрволдан өтуі керек. wireguard-tools WireGuard үшін бұның бағыттау жартысын өзі атқарады: өз пакеттерін белгілеп, енді орнатқан әдепкі бағытты аттап кетуі үшін саясат ережесін қосады; wg-quick нұсқаулық беті сол ережені және оның қолданатын кестесін сипаттайды. Бұл бағыттауды қолмен қайта құрыңыз немесе ережелерді екінші құралға қайта жаздырыңыз, сонда белгіленген пакеттер құруға тиіс туннельге қайта жіберілуі мүмкін.

Үшінші кезең — қайтару жолы. Жауапсыз қол алысу сыртқа тастаудың дәлелі емес; ол сервердің кіріс ережесіне немесе байланыстыруды ұмытқан NAT құрылғысына да бірдей сәйкес келеді. Клиентке тимей тұрып бұларды ажыратыңыз.

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

Клиенттер анықтаған симптомды жазады, сәтсіз кезеңді емес, сондықтан кесте әдетте журналдан жылдам.

Санауыштар журналдардан жылдам шешеді

Linux-та, nft list ruleset немесе iptables -vnL OUTPUT әр ереже үшін пакет санауышын шығарады. Бір рет қосылыңыз, сәтсіз болуына жол беріңіз, содан кейін санауыштарды қайта оқыңыз. Санауышы жылжыған ереже — қол алысу тиген ереже; еш жерде ештеңе жылжымаса, пакет файрволға ешқашан жетпеген. Мен ережелер жиынтығының өз қол алысуын тастағанын көрдім, оны тек санауыштар айтты.

Файрволға ешқашан жетпегенін хосттан ешқашан шықпағанынан ажырату үшін интерфейстің өзін бақылаңыз. ip -s link show dev wlan0 жіберілген пакеттерді хабарлайды, ал tcpdump -ni wlan0 udp port 51820 фреймдерді көрсетеді. Клиент қайта әрекет етіп жатқанда ол тегіс тұрса, ақау netfilter-ден жоғары: жетпейтін серіктес бағыты, әлі жоқ құрылғыға сілтейтін саясат ережесі немесе клиент жұтып қоятын сокет қатесі.

Ерекшеліктерді мынадай құжаттық мекенжайлармен тексеріңіз: 203.0.113.10, қателесу біреудің хостін зерттей алмауы үшін.

Ескірген соңғы нүкте ерекшелігі сервердің тоқтауы ретінде оқылады

Ең шатастыратын нұсқа серіктестің мекенжайы өзгерген соң пайда болады: динамикалық мекенжай қызметі оны жылжытты, хост қайта құрылды немесе желіңіздің шығыс мекенжайы басқа. Ерекшелік әлі ескі мекенжайды атайды, сондықтан жаңасына баратын пакеттер тастау ережесіне түседі. Дәл сол конфигурация кеше жұмыс істеп тұрған, сол себепті адамдар серверді тексеруден бастайды.

Файрвол ережесінің ішіндегі хост аты сізді құтқармайды. nftables-те атау ережелер жиынтығы жүктелгенде шешіледі, сондықтан сол сәтте болған мекенжайды бекітіп, сөзбе-сөз мекенжай сияқты ескіреді. Тұрақты шешім — соңғы нүкте өзгергенде ерекшелікті жаңарту және оны тар ұстау: бір серіктес мекенжайы, бір тасымал порты. Мекенжай өзгерісін шыдайтындай кең ауқым байланысы жоқ трафикті де шығаруға жеткілікті кең.

Kill switch сервер хостінде жұмыс істегенде

Дәл сол тәуелділік екінші жақта да бар, ол жақта оны байқамау оңайырақ. Егер VPN серверіңіз болып табылатын машина kill switch-і бар жұмыс үстелі клиентін немесе ноутбуктен көшірілген файрвол профилін де іске қосса, оның тастау ережелері туннельдерді аяқтайтын қызметке қолданылады. Клиенттің қол алысуына жауаптар тасталады, сондықтан сервер сау көрініп, туннель интерфейсі пайдаланылмай тұрса да, әр клиент қосыла алмайды.

Бұл хостқа тастау алдында үш тар рұқсат керек: физикалық интерфейстегі тыңдау порты, шифры ашылған трафик үшін туннель интерфейсі және туннельден клиенттер жетуі тиіс жерге қарай берілу. Орнатылған жиынтықты мынамен оқыңыз: nft list ruleset, iptables -S, немесе pfctl -sr , бірдеңені өзгертпес бұрын, және сақталған ережелер жиынтығы қайта жүктеуден кейін де қалатынын есте ұстаңыз, сондықтан ондағы қате оны жасаған процестен ұзақ өмір сүреді.

Машинаны жабық ұстайтын қалпына келтіру реті

Профильден сыртқа қарай жұмыс істеңіз. Клиент қолданатын серіктес мекенжайы мен портын оқыңыз, хост атының туннельсіз шешілетінін растаңыз, содан кейін тек физикалық адаптерде сол мекенжай мен порт үшін бір ерекшелік қосыңыз. Қайта қосылып, жіберу санауышын бақылаңыз; аяқталған қол алысу екінші кезеңнің түзетілгенінің белгісі.

Сынақ кезінде тастау саясатының қалғанын орнында қалдырыңыз. Зиянсыз тексеру — байланысы жоқ құжаттық мекенжайға қосылуға әрекет етіп, оның әлі де уақыт бойынша аяқталатынын растау, бұл kill switch-тің өшірілгенін емес, жұмыс істеп тұрғанын көрсетеді. Туннель тұрақтанған соң ерекшелікті қатайтыңыз және ыңғайлы деп клиент бағдарламасына мәңгілік бәріне рұқсат қалдырмаңыз.

Туннель көтеріліп, қолданба әлі сәтсіз болса, қалған кезеңдер бұл емес: бөлінген DNS, MTU және қолданба бойынша бағыттау — әрқайсысы қосылған туннель мен бұзылған трафик береді, әрқайсының бірінші тексерісі бөлек.

Қатысты мақалалар