Vaš razdeljeni tunel izključuje zaganjalnik, ne igre
Zaganjalnik za dvoboj zažene drugo izvršljivo datoteko in ta proces ima svoje vtičnice. Poiščite pravi proces, ujemite pravilen identifikator in nato preizkusite.
Zaganjalnik dodate na seznam izjem, prenos skoči s počasnega na hitro, dvoboj pa še vedno pristane na oddaljenem strežniku. Nič ni pokvarjeno. Zaganjalnik in igra sta dva procesa z dvema naboroma vtičnic, izključitev enega pa ne pove ničesar o drugem. Prenos se je pospešil, ker je bil prenos promet zaganjalnika; dvoboj je povezava nekoga drugega, ki jo je odprla izvršljiva datoteka, ki je vaše pravilo nikoli ni videlo.
En nameščevalnik, veliko procesov
Sodobna igralna programska oprema je majhno ozvezdje. Obstaja odjemalec, ki vas prijavi, posodabljalnik, ki pridobiva vsebino, zaganjalnik, ki zažene igro, in izvršljiva datoteka igre, ki lahko sama ustvari drugi proces za protigoljufijo ali za sloj za sestavljanje dvobojev. Vsak od njih lahko vzdržuje svoje povezave do svojih ciljev.
Pravilo izjeme običajno imenuje enega od njih. Katerega imenuje, je popolnoma odvisno od identifikatorja, ki ga podpira odjemalec VPN, in to je del, ki ga uporabniki redko preverijo. Nekateri odjemalci ujemajo pot do izvršljive datoteke, drugi identifikator paketa ali bundlea, tretji ime procesa, ki si ga lahko delita dva nepovezana binarna zapisa. Preberite pravilo pred seznamom procesov, ker pravilo omejuje celo to, kar lahko izrazite.
Simptom torej ni „razdeljeni tunel je pokvarjen“. Je „pravilo pokriva proces, ki ni tisti, ki nosi promet, ki mi je pomemben“, kar je veliko ožja in veliko bolj popravljiva trditev. Ko to rečete tako, naslednji korak ni več ugibanje.
Poiščite proces, ki ima v lasti povezavo dvoboja
Zaženite igro, vstopite v dvoboj in poglejte, kdo ima v lasti vtičnice, namesto kaj je na zaslonu. V sistemu Windows seznam procesov in poizvedba o vtičnicah za vsak proces odgovorita na to z dvema ukazoma:
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
Drugi ukaz izpiše ID procesa, ne imena, zato oba izhoda povežite po ID. Vrstica, ki jo iščete, je tista, katere oddaljeni naslov pripada igralni storitvi, in proces, ki jo ima v lasti, je izvršljiva datoteka, ki jo mora vaše pravilo imenovati.
V sistemu Linux isto vprašanje zahteva en ukaz na vrsto vtičnice, in vredno je preveriti oba, ker je povezava dvoboja lahko UDP, medtem ko je vse drugo TCP:
ss -tunp state established | grep -i game
ss -tunp | awk 'NR==1 || /udp/'
Če igra teče v vsebniku ali v sloju združljivosti, je najdeni proces lahko shim in ne binarna datoteka, ki ste jo namestili. V tem primeru je pomemben identifikator tisti, ki ga vidi odjemalec, kar je lahko pot shima, in nobeno urejanje izvirne datoteke tega ne bo spremenilo.
Ujemite identifikator, ki ga podpira vaš odjemalec
Preden kar koli dodate, preberite dokumentacijo odjemalca o pravilu izjeme. Trije običajni modeli se obnašajo različno, eden od njih pa je past.
| Identifier | How it behaves | Failure mode |
|---|---|---|
| Executable path | Matches exactly the file at that path | Breaks when an update moves the binary |
| Process name | Matches any binary with that name | Too broad; catches unrelated software |
| Package or bundle id | Matches a signed application group | May include services you did not intend |
Pravila poti so najbolj natančna in najbolj krhka. Posodobitev zaganjalnika, ki premakne izvršljivo datoteko, pusti pravilo usmerjeno na datoteko, ki se ne izvaja več, in simptom se vrne, ne da bi se kaj očitno spremenilo. Pravila paketa to preživijo in lahko tudi tiho pokrijejo pomožne procese, o katerih niste nikoli razmišljali, kar je priročno ali zaskrbljujoče glede na pomočnika.
Karkoli odjemalec podpira, ne dodajajte vnosov za vsako izvršljivo datoteko, ki jo najdete. Seznam, sestavljen s poskusi in napakami, dokler ena seja ni delovala, ni pregleden in bo tiho kopičil izjeme za nepovezano programsko opremo. Poimenujte proces, ki ste ga našli, in zapišite, čemu je bil namenjen.
Preizkusite na dvoboju, ne na prenosu
Hitrost prenosa zaganjalnika je najslabši možni preizkus, ker obremenjuje natanko tisti proces, ki je bil že izključen. Uporabite tisto, kar ni delovalo, in preverite pot, ne lastnega prikaza zmogljivosti igre:
ip route get 203.0.113.55
Get-NetTCPConnection -State Established | Where-Object RemotePort -eq 27015
Prvi ukaz potrebuje naslov, na katerega se je razrešil strežnik dvoboja, kar lahko da dnevnik povezav igre ali vaš odjemalec. Če pot navaja fizični vmesnik, pravilo deluje. Drugi pokaže, ali seja sploh obstaja, kar loči „izključeno, a strežnik je mrtev“ od „ni izključeno“.
Med preizkusom ohranite regijo in dostopovno omrežje nespremenjena. Dvoboj, ki vsak poskus pristane v drugem podatkovnem središču, ustvari različne naslove in na koncu boste lovili premikajočo se tarčo namesto preverjali pravilo. Dva zagona z istim naslovom sta vredna več kot deset z različnimi.
Po naslednji posodobitvi preverite znova
Vsako pravilo, ki temelji na poti, ima rok uporabnosti, merjen v ciklih popravkov. Ko igra mesec dni pozneje preneha spoštovati izjemo, najprej preverite, ali se je izvršljiva datoteka premaknila, in drugo, ali se je ob njej pojavil nov pomožni proces.
Model izključitve aplikacij, ki ga dokumentira en odjemalec, je razumen referenčni vir za to, kako so ta pravila opisana, čeprav se podrobnosti med izdelki razlikujejo. Preberite svojega, zabeležite uporabljeni identifikator in zapišite datum. Prav ta zapis spremeni skrivnost v petminutno popravilo ob naslednji izdaji posodobitve zaganjalnika.
Če odjemalec preprosto ne more izraziti meje, ki jo potrebujete, je odobrena širša politika boljša od kopice nedokumentiranih izjem. Široko in razumljeno premaga ozko in napačno, zlasti ko je ozka različica tisto, kar vsi verjamejo, da velja.