Неліктен kill switch серверді ауыстырғанда трафикті тастайды
Неліктен kill switch серверді ауыстыру кезінде трафикті бұғаттайды, клиент сол сәтте не істейді және қалыпты үзілісті кептеліп қалған бұғаттан қалай ажыратуға болады.
Сіз жақынырақ көрінген серверді таңдап, қосылуды басасыз, ал жаңа туннель көтерілмей тұрып браузер жүктеуді тоқтатады. Белгіше қосылу күйіне ауысып, әр қосымша беттің уақыты бітпейінше сол күйде тұрады. Бұл үзіліс әдетте kill switch-тің жоба бойынша жұмысы: клиентте трафикті жіберетін туннель жоқ кезде ол бұғатталады. Үзіліс қабылдарлық па, ол клиенттің сол секундтарда не істейтініне және ол бұғат ашылды дегенде шынымен ашыла ма, соған байланысты.
Клиент екі сервердің арасында не істейді
Соңғы нүктені ауыстыру — бір ажыратқыш емес, бірнеше қадам. Клиент ағымдағы туннельді бұзады, бұғаттау ережелерін жаңартады, жаңа соңғы нүктені шешіп, оған туннельден тыс жетеді, содан кейін жаңа маршруттарды орнатып, бұғатты ашады. Сіз сезінетін үзіліс бірінші және соңғы қадамның арасында.
Мұнда реттілік жылдамдықтан маңыздырақ. Егер бұғаттау ережелері жаңа соңғы нүкте үшін ерекшеліктен бұрын күшіне енсе, клиент қол алысуды аяқтай алмайды және уақыт бітпейінше қосылу күйінде қалады. Егер ерекшелік ескі сервер мекенжайының көшірмесі болса, жаңа қол алысу кез келген шығыс пакет сияқты көрініп, тасталады. Екі жағдай да браузерден бірдей көрінеді, сондықтан алты секундтан кейін қалпына келетін ауысу мен ешқашан қалпына келмейтін ауысудың себебі бір болуы мүмкін.
Жаңа соңғы нүктеге бұғатта тесік керек
Туннельді құру үшін клиент физикалық интерфейс арқылы жаңа сервердің мекенжайы мен портына пакеттер жіберуі керек, мысалы, әдеттегі WireGuard профилі үшін UDP 51820 немесе OpenVPN үшін 1194 және 443, сіздің профиліңіз қалай көрсетсе де. Бұл трафик жаңадан жасалатын туннельдің ішінде емес, сондықтан бүкіл құрылғыға арналған бұғат сәйкес рұқсат ережесі болмаса, оны жұтып қояды.
Хост атына негізделген профильдер екінші талапты қосады: іздеудің өзі. Егер клиент бұғат көтерілмей тұрып соңғы нүктені шешсе, кэштелген мекенжайды пайдалана алады, бірақ профиль мекенжайларды ауыстырса немесе кэш жазбасы ескірсе, қол алысу рұқсат ережесі қамтымайтын мекенжайға кетеді. IPv6 мұны көрнекі етеді, өйткені қос стекті соңғы нүкте A және AAAA жазбаларын жариялай алады, ал тек v4 мекенжайын қамтитын рұқсат ережесі клиентті бұғатталған v6 мекенжайына қайта талпынуға қалдырады.
Опция атаулары мен әдепкі мәндер клиент пен нұсқаға қарай өзгереді, сондықтан экран суреттерінен болжамай, өз клиентіңіз үшін құжатталған тізімді оқыңыз. OpenVPN Connect параметрлерінің анықтамалығы openvpn.net/connect-docs/app-settings-windows мекенжайында клиенттің бұғаттау және бөлінген туннель опцияларын қалай сипаттайтынына мысал.
Fail-closed — күй машинасы, ажыратқыш емес
Клиенттердің көбі бұғатты өртқабырға саясаты ретінде үш күйде білдіреді: туннель жоғары, трафик туннельден өтеді және бұғат жоқ; туннель төмен, бұғат белсенді; және ауысу, бұғат белсенді плюс соңғы нүкте үшін уақытша ерекшеліктер. Қателер дәл үшінші күйде тұрады, өйткені ол бірнеше секунд ішінде екі рет өзгеруі керек, ал одан шыға алмау тұрақты бұғатқа дәл ұқсайды.
Механизм платформаға қарай өзгереді, сәтсіздік те. Windows Filtering Platform сүзгілерінің салмағы бар, сондықтан сіздің рұқсатыңыздан басым бұғат сүзгісі рұқсат болса да пакеттерді тастай береді, ал өлтірілген клиент процесі қалдырған сүзгілер қолданба кеткеннен кейін де машинаны желіден тыс ұстай алады. macOS клиенттері әдетте pf ережелерін якорьге жазады, онда ереже реті мен жылдам шешімдер қай ереженің қолданылатынын анықтайды. Linux клиенттері әдетте drop саясатымен және соңғы нүкте, туннель интерфейсі мен loopback үшін айқын рұқсаттармен nftables немесе iptables тізбегін басқарады. Android-тың always-on VPN функциясы VPN жоқ қосылымдарды бұғаттау опциясымен топтағы ең қатаң, өйткені операциялық жүйе бұғатты қолданбаға емес, бүкіл құрылғыға қолданады.
WireGuard-ке жеке ескертпе керек, өйткені AllowedIPs — маршрут таңдаушысы, бұғаттаушы емес. Ол қандай мақсаттардың туннельге кіретінін шешеді; туннелі жоқ пакеттің Wi-Fi арқылы шығуын тоқтату үшін ол ештеңе істемейді. Тек WireGuard және өртқабырға ережесі жоқ конфигурацияда kill switch іс жүзінде маршруттың жоқтығы, ал тасталған қол алысудан кейін физикалық интерфейс арқылы нақты пакет шығуы мүмкін.
Белгішеге қараудың орнына үзілісті өлшеңіз
Күй шамын емес, пакеттерді бақылаңыз. Linux-те бір терминалда ашық мекенжайға баяу ping бастаңыз, ал екіншісінде физикалық интерфейсте туннельдің тасымал портын ұстаңыз:
ping -i 0.2 -c 100 1.1.1.1 | tail -5
sudo tcpdump -ni eth0 'udp port 51820'
Екеуі де жұмыс істеп тұрғанда клиентте серверді ауыстырыңыз. Үш нәрсе маңызды: ping қанша уақыт тоқтайды, түсіру қол алысудың жаңа соңғы нүктеге жеткенін көрсете ме, және трафик клиент күйі қосылғанға ауысқанға дейін бе, кейін бе қайтады. Егер ping үзілісі бірінші бітсе, бұғат не ерте ашылған, не индикатор мойындамай тұрып туннель көтерілген. Егер үзіліс кейінірек бітсе, индикатор тым оптимистік.
Windows-та netsh wfp show state клиент өзін ажыратылған деп жатқанда әлі бар бұғат сүзгілерін іздеуге болатын сурет жазады. macOS-та sudo pfctl -sr жүктелген ережелер мен олардың ретін тізімдейді. Кез келген суретті клиенттің өз журналымен қосыңыз; ping-нен алынған уақыт сызығы бұғат кеш біткенін немесе мүлде бітпегенін айтады.
Қалыпты қараңғылық қарсы кептеліп қалған бұғат
Біраз үзіліс осы мүмкіндіктің мәні, сондықтан кез келген параметрді өзгертуден бұрын сараптаңыз:
| What you see | Usually means | Next check |
|---|---|---|
| Two or three seconds of timeouts, then normal browsing | Expected fail-closed gap | Nothing to fix |
| State says connected, traffic stays dead | Block filter or route left behind | Firewall snapshot, client log |
| One app dead while others work | TCP session bound to the old exit address | Restart the app |
| LAN devices unreachable after the switch | LAN exception not reapplied | Allow-LAN or split-tunnel setting |
| New server hangs, the old one reconnects | Permit covers only the old address | Resolved address of the new host, including AAAA |
Екінші немесе бесінші қатарға түссеңіз, сынау үшін kill switch-ті өшірмеңіз, өйткені бұл маршрут қатесін ағып кетуге айналдырады. Клиент қызметін қайта іске қосыңыз немесе процесті өлтіргенде сүзгілер сақталатын жерде құрылғыны қайта жүктеңіз, содан кейін бұғат тазара ма, қараңыз. Егер тазарса, ақау бұғаттың өзінде емес, ауысу кезіндегі тазалауда.
Келесі ауысу алдында төрт нәрсені растаңыз: соңғы нүкте рұқсаты профиліңіз шешетін әр мекенжай тобын қамтиды, клиент журналы ауысудың аяқталғанын көрсетеді, ping сынағыңыз белгішені емес, үзілісті өлшейді және клиентті жабу қалыпты байланысты қалпына келтіреді. Ауысу кезінде ұстап, кейін жіберетін kill switch өз жұмысын істейді. Ерте немесе ешқашан жібермейтінін жөндеу керек.