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

Бір орнатушы, көп процесс

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

Алып тастау ережесі әдетте солардың біреуін атайды. Қайсысын атайтыны VPN клиенті қолдайтын идентификаторға толығымен байланысты, және бұл пайдаланушылар сирек тексеретін бөлік. Кейбір клиенттер орындалатын файл жолын сәйкестендіреді, кейбіреулері бума немесе пакет идентификаторын, ал кейбіреулері екі байланыссыз бинар бөлісе алатын процесс атауын сәйкестендіреді. Процестер тізімін оқымас бұрын ережені оқыңыз, өйткені ереже тіпті нені білдіре алатыныңызды шектейді.

Сондықтан симптом «бөлінген туннель бұзылған» емес. Ол «ереже маған маңызды трафикті тасымалдайтын процесс емес, басқа процесті қамтиды», бұл әлдеқайда тар және әлдеқайда түзетуге болатын тұжырым. Осылай айтқаннан кейін келесі қадам болжам болудан қалады.

Матч қосылымына ие процесті табыңыз

Ойынды іске қосыңыз, матчқа кіріңіз және экранда не бар екенін емес, сокеттер кімге тиесілі екенін қараңыз. Windows-та процесс тізімі және әр процесс бойынша сокет сұрауы бұған екі командамен жауап береді:

Get-Process | Where-Object { $_.ProcessName -match 'launcher|game|client' } | Select-Object Id,ProcessName,Path
Get-NetTCPConnection -State Established | Select-Object OwningProcess,RemoteAddress,RemotePort | Sort-Object OwningProcess

Екінші команда атауды емес, процесс ID-ін шығарады, сондықтан екі шығысты ID бойынша біріктіріңіз. Сіз іздейтін жол — қашықтағы мекенжайы ойын қызметіне тиесілі жол, ал оған ие процесс сіздің ережеңіз атайтын орындалатын файл.

Linux-та сол сұрақ сокет түріне бір команданы қажет етеді, және екеуін де тексеру керек, өйткені матч қосылымы UDP болуы мүмкін, ал қалғаны TCP:

ss -tunp state established | grep -i game
ss -tunp | awk 'NR==1 || /udp/'

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

Клиентіңіз қолдайтын идентификаторды сәйкестендіріңіз

Бірдеңе қоспас бұрын клиенттің алып тастау ережесі туралы құжаттамасын оқыңыз. Үш жалпы модель әртүрлі әрекет етеді, және олардың біреуі тұзақ.

IdentifierHow it behavesFailure mode
Executable pathMatches exactly the file at that pathBreaks when an update moves the binary
Process nameMatches any binary with that nameToo broad; catches unrelated software
Package or bundle idMatches a signed application groupMay include services you did not intend

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

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

Матчта тексеріңіз, жүктеуде емес

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

ip route get 203.0.113.55
Get-NetTCPConnection -State Established | Where-Object RemotePort -eq 27015

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

Тестілеу кезінде аймақ пен кіру желісін тұрақты ұстаңыз. Әр әрекетте басқа деректер орталығына түсетін матч әртүрлі мекенжайлар тудырады, және ережені тексерудің орнына қозғалмалы нысананы қуасыз. Бір мекенжаймен екі жүргізу әртүрлі мекенжайлармен он жүргізуден құндырақ.

Келесі жаңартудан кейін қайта тексеріңіз

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

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

Егер клиент қажет шекараны мүлде білдіре алмаса, бекітілген кеңірек саясат құжатталмаған ерекшеліктер үйіндісінен жақсы. Кең және түсінікті тар және қатеден басым, әсіресе тар нұсқа бәрі күшінде деп сенетін нұсқа болса.

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