Қайта жүктеу — адамдар ажыратқышты сынайтын ең кең тараған әдіс және ол ең жиі өтірік айтатын сынақ. Клиенттегі құсбелгі — тек қана қалау; маңыздысы — желілік стек көтерілетін сәт пен туннель шын мәнінде орнатылатын сәт аралығында бірдеңе бұғаттауды міндеттей ме. Windows-та бұл бірдеңе әдетте Windows Filtering Platform-тағы сүзгі, Linux-та бірлік жүктейтін ережелер жиынтығы, macOS-та pf ұстағышы, Android-та жүйенің өз әрдайым-қосулы және құлыптау жалаушалары. Бұл құрылымдар қайта жүктеу кезінде өте өзгеше әрекет етеді және тек платформа деңгейіндегілері ғана біреу кіре алмай тұрып орнында болады.

Қайта жүктеу үш бөлек сұрақ қояды

Сұрақты бөліңіз. Біріншіден, саясат дискіде жүктеу кезінде бірдеңе оқитын пішінде бар ма? Екіншіден, сол оқырман кез келген трафик шыға алмай тұрып іске қосыла ма? Үшіншіден, саясат сізге маңызды трафикті қамти ма, яғни әрбір процесс, екі мекенжай тобы және DNS. Біріншісіне «иә» және екіншісіне «жоқ» деп жауап беру дәл адамдар қайта жүктеуден кейін сақталмайтын ажыратқыш деп сипаттайтын ақаулықты тудырады: іске қосылу кезінде трафик бірнеше секундқа сыртқа шығып кетеді және біреу тексеруге бармайынша ешкім байқамайды.

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

Бұғаттауды қалпына келтіретін нысанды табыңыз

Linux-та netfilter ережелері ядрода тұрады. Өзіңіз реттемесеңіз, жүктеу кезінде ешнәрсе оларды қайта жазбайды: iptables-save қоса netfilter-persistent, nftables.service жүктейтін /etc/nftables.conf, немесе өз скриптіңізді іске қосатын systemd бірлігі. Не қосылғанын тексеріңіз, өзіңіз конфигурациялады деп есте қалғанын емес.

systemctl is-enabled nftables netfilter-persistent 2>/dev/null
sudo nft list ruleset
sudo iptables -S OUTPUT

Жүктеуден кейін бірнеше секундтан кейінгі бос ережелер жиынтығы — тақырыптағы сұрақтың жауабы. Windows-та клиент қызметінен оның қалай басталатынын сұраңыз, содан кейін туннель төменде тұрғанда платформа сүзгісінің күйін шығарыңыз.

Get-Service | Where-Object { $_.Name -match 'vpn' } | Select-Object Name, Status, StartType
netsh wfp show state

Екінші команда wfpstate.xml-ні ағымдағы қалтаға жазады. Клиент қосылмай тұрып бұғаттау әрекеті бар сүзгілерді іздеңіз. Base Filtering Engine жүктеудің ерте кезеңінде басталады және тұрақты жалаушамен қосылған сүзгілерді қалпына келтіреді, сондықтан кейбір ажыратқыштар клиент терезесі пайда болмай тұрып трафикті бұғаттайды, кейбіреулері бұғаттамайды. macOS-та sudo pfctl -s info pf қосулы ма деп хабарлайды, sudo pfctl -s rules не жүктелгенін көрсетеді, ал VPN клиенттері әдетте өз ережелерін негізгі жиынтыққа емес, ұстағышқа тіркейді. utun3 деп атайтын ереже келесі жүктеуден кейін басқа интерфейсті көрсетуі мүмкін, өйткені бұл нөмір орындалу кезінде беріледі.

Желі көтерілуі мен туннель көтерілуі арасындағы саңылауды бақылаңыз

Қауіпті аралық — бүкіл қайта жүктеу емес, саңылау. Интерфейс бір сәтте жалгерлік пен әдепкі маршрут алады, VPN қызметі басқа сәтте басталады, ал туннель одан да кеш аутентификацияланады, кейде пайдаланушы кіріп, тіркелгі деректері агенті іске қосылғаннан кейін ғана. Егер бұғаттау соңында қолданылса, саңылаудағының бәрі ашық күйде шығып кетеді.

systemd хосттарында болжамай, ретті оқыңыз. VPN және өртқабырға бірліктерінде systemctl cat-ді іске қосыңыз және After= мен Before=-ке қатысты network-pre.target немесе network-online.target-ті іздеңіз. network-online.target-тен кейін реттелген өртқабырға бірлігі интерфейске ұтылады; ал network-pre.target талап ететін және оның алдында реттелген бірлік жеңеді. Windows-та балама сұрақтар — қызметтің іске қосылу түрі мен оның тәуелділіктері, өйткені Manual-ға қойылған қызмет жүктеу кезіндегі процесті бұғаттай алмайды. Егер талабыңыз кіруге дейінгі трафикті қамтыса, оны тек құрылғы деңгейіндегі құрылым қанағаттандырады: Always On VPN құрылғы туннелі машина сертификатымен аутентификацияланады және пайдаланушы кірмей тұрып қосылады, және Microsoft құрылғы туннелінің конфигурациясын құжаттайды пайдаланушы туннелінен бөлек. Android басқа жолды таңдайды, әрдайым-қосулы VPN-ді міндеттеп, онсыз қосылымдарды қолданба процесінен емес, жүйеден бұғаттайды.

Сынақты орындаңыз, содан кейін екі уақыт сызығын салыстырыңыз

Егер ағып кетсе ештеңе тұрмайтын межеге қарай қайта жүктеңіз және күйді саңылаудан кейін емес, саңылау кезінде түсіріңіз. Ең таза әдіс — жүктеу кезіндегі зонд: платформа рұқсат берген ең ерте уақытта басталатын, әдепкі маршрут пен өртқабырға күйін жазатын, қысқа уақыт шегімен бір сұранысты байқап көретін және жергілікті файлға жол қосатын oneshot бірлігі немесе жоспарланған тапсырма. Сол жазбаны journalctl -b -u немесе жүйе журналынан алынған VPN қызметінің басталу уақытымен салыстырыңыз.

Содан кейін қарапайым сынақты орындаңыз: туннель жоғары, қосылымды үзіңіз, тікелей трафик бұғаттала ма деп қараңыз, қалпына келтіріңіз. Екіншісінен өту және біріншісінде құлау — қалыпты нәтиже және бұл орындалу клиент жағында екенін, клиент қосылғанда қолданылатынын, жүктеу кезінде емес екенін білдіреді. Мен тексерген соңғы машинада бұғаттау NetworkManager-дің жіберуші скриптінен келді: бар және дұрыс және интерфейс көтерілмей тұрған секундтар үшін пайдасыз. Екі нәтижені де жазып қойыңыз, өйткені қайта жүктеуден аман қалу тек қай қабат аман қалғанын және қай сәттен бастап екенін айтқанда ғана мағына береді.

Қайтар жолыңызды кеспей саңылауды жабыңыз

Егер жүктеу кезінде бұғаттау жоқ болса, екінші клиент ережесін қосудың орнына орындалуды бір қабат төмен жылжытыңыз. Ережелер жиынтығын сақтаңыз және оны желі қолжетімді болмай тұрып реттелген бірліктен жүктеңіз, әрі сол бірлікке өзі қорғауы тиіс DNS сұранысы немесе желілік тіркеме қажет емес екеніне көз жеткізіңіз. Аумақ уақыт сияқты маңызды: пайдаланушы ID-іне немесе cgroup-қа сәйкес ережелер әрбір жүйелік демонды бұғаттаудан тыс қалдырады, ал тек IPv4-ті өңдейтін жиынтық IPv6 мен DNS-ті қолжетімді қалдырады.

Өзіңізге қайтар жол қалдырыңыз. Жүктеу кезінде бәрін бұғаттап, сосын аутентификациялана алмайтын машинаның желісі мүлдем жоқ, ал түзету — бұғаттауды жою емес, тіркелгі деректерін немесе ретті жөндеу. Жергілікті консольдің құжатталған рәсімін және туннельге шынымен қажет нәрсеге тар, әдейі жасалған ерекшелікті сақтаңыз, мысалы сервер мекенжайы мен туннельге дейін қолданылатын шешуші.

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

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