Jūs pievienojat palaidēju izņēmumu sarakstam, lejupielāde no lēnas kļūst ātra, un mačs joprojām nonāk attālā serverī. Nekas nav salauzts. Palaidējs un spēle ir divi procesi ar diviem ligzdu kopumiem, un viena izslēgšana neko neizsaka par otru. Lejupielāde paātrinājās, jo lejupielāde bija palaidēja trafiks; mačs ir kāda cita savienojums, ko atvēris izpildāmais fails, kuru jūsu noteikums nekad nav redzējis.

Viens instalētājs, daudz procesu

Mūsdienu spēļu programmatūra ir neliels zvaigznājs. Ir klients, kas jūs piesakās, atjauninātājs, kas velk saturu, palaidējs, kas palaiž spēli, un spēles izpildāmais fails, kas pats var radīt otru procesu pretkrāpšanas vai maču saskaņošanas slānim. Katrs no tiem var turēt savus savienojumus uz saviem galamērķiem.

Izņēmuma noteikums parasti nosauc vienu no tiem. Kuru tas nosauc, pilnībā atkarīgs no identifikatora, ko atbalsta VPN klients, un tā ir daļa, ko lietotāji reti pārbauda. Daži klienti saskaņo izpildāmā faila ceļu, daži pakotnes vai bundle identifikatoru, bet daži procesa nosaukumu, ko var koplietot divi nesaistīti binārie faili. Izlasiet noteikumu pirms procesu saraksta, jo noteikums ierobežo pat to, ko jūs varat izteikt.

Tāpēc simptoms nav “sadalītais tunelis ir salauzts”. Tas ir “noteikums aptver procesu, kas nav tas, kurš pārvadā man svarīgo trafiku”, un tas ir daudz šaurāks un daudz labāk labojams apgalvojums. Kad to tā pasakāt, nākamais solis pārstāj būt minējums.

Atrodiet procesu, kuram pieder mača savienojums

Palaidiet spēli, iekļūstiet mačā un skatieties, kam pieder ligzdas, nevis kas ir ekrānā. Programmā Windows procesu saraksts un ligzdu vaicājums katram procesam atbild ar divām komandām:

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

Otrā komanda izdrukā procesa ID, nevis nosaukumu, tāpēc savienojiet abas izvades pēc ID. Rinda, kuru meklējat, ir tā, kuras attālā adrese pieder spēles servisam, un to piederošais process ir izpildāmais fails, kuru jūsu noteikumam jānosauc.

Operētājsistēmā Linux tas pats jautājums prasa vienu komandu katram ligzdas tipam, un ir vērts pārbaudīt abus, jo mača savienojums var būt UDP, kamēr viss pārējais ir TCP:

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

Ja spēle darbojas konteinerā vai saderības slānī, atrastais process var būt shim, nevis jūsu instalētais binārais fails. Tādā gadījumā svarīgais identifikators ir tas, ko redz klients, un tas var būt shim ceļš, un nekāda oriģinālā faila rediģēšana to neietekmēs.

Saskaņojiet identifikatoru, ko atbalsta jūsu klients

Pirms kaut ko pievienojat, izlasiet klienta dokumentāciju par izņēmuma noteikumu. Trīs parastie modeļi uzvedas atšķirīgi, un viens no tiem ir slazds.

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

Ceļa noteikumi ir visprecīzākie un visplānākie. Palaidēja atjauninājums, kas pārvieto izpildāmo failu, atstāj noteikumu vērstu uz failu, kas vairs nedarbojas, un simptoms atgriežas bez acīmredzamām izmaiņām. Pakotnes noteikumi to pārdzīvo, un tie var arī klusi aptvert palīgprocesus, par kuriem jūs nekad neesat domājis, kas ir ērti vai satraucoši atkarībā no palīga.

Lai ko klients atbalstītu, nepievienojiet ierakstus katram atrastajam izpildāmajam failam. Saraksts, kas veidots ar mēģinājumiem un kļūdām, līdz viena sesija strādāja, nav pārskatāms, un tas klusi uzkrās izņēmumus nesaistītai programmatūrai. Nosauciet atrasto procesu un pierakstiet, kam tas bija paredzēts.

Pārbaudiet mačā, nevis lejupielādē

Palaidēja lejupielādes ātrums ir sliktākais iespējamais tests, jo tas vingrina tieši to procesu, kas jau bija izslēgts. Izmantojiet to, kas neizdevās, un pārbaudiet ceļu, nevis pašas spēles veiktspējas displeju:

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

Pirmajai komandai nepieciešama adrese, uz kuru atrisinājās mača serveris, un to var dot spēles savienojumu žurnāls vai jūsu klients. Ja maršruts nosauc fizisko interfeisu, noteikums darbojas. Otrā parāda, vai sesija vispār pastāv, kas atdala “izslēgts, bet serveris ir izslēgts” no “nav izslēgts”.

Pārbaudes laikā turiet reģionu un piekļuves tīklu fiksētu. Mačs, kas katru reizi nonāk citā datu centrā, rada dažādas adreses, un jūs beigsiet dzīties pēc kustīga mērķa, nevis validēt noteikumu. Divi palaidieni ar vienu un to pašu adresi ir vērtīgāki par desmit ar dažādām.

Pēc nākamā atjauninājuma pārbaudiet vēlreiz

Jebkuram uz ceļu balstītam noteikumam ir derīguma termiņš, ko mēra ielāpu ciklos. Kad spēle pēc mēneša pārstāj ievērot izņēmumu, vispirms pārbaudiet, vai izpildāmais fails ir pārvietots, un otrais, vai tam blakus nav parādījies jauns palīgprocess.

Viena klienta dokumentētais lietojumprogrammu izslēgšanas modelis ir saprātīga atsauce uz to, kā šie noteikumi tiek aprakstīti, lai gan detaļas atšķiras starp produktiem. Izlasiet savu, pierakstiet izmantoto identifikatoru un atzīmējiet datumu. Tieši šis ieraksts pārvērš noslēpumu piecu minūšu labojumā nākamreiz, kad palaidējs izlaidīs atjauninājumu.

Ja klients vienkārši nevar izteikt vajadzīgo robežu, apstiprināta plašāka politika ir labāka par nedokumentētu izņēmumu kaudzi. Plašs un saprotams uzvar šauru un nepareizu, jo īpaši tad, ja šaurā versija ir tas, ko visi uzskata par spēkā esošu.

Saistītie raksti