Sinu jaotatud tunnel välistab käivitaja, mitte mängu
Käivitaja käivitab matši jaoks teise käivitatava faili ja sellel protsessil on oma soklid. Leia tegelik protsess, sobi õige identifikaator ja seejärel testi.
Lisad käivitaja välistuste nimekirja, allalaadimine hüppab aeglasest kiireks ja matš maandub ikka kaugel serveril. Miski pole katki. Käivitaja ja mäng on kaks protsessi kahe soklikomplektiga ning ühe välistamine ei ütle teise kohta midagi. Allalaadimine kiirenes, sest allalaadimine oli käivitaja liiklus; matš on kellegi teise ühendus, mille avas käivitatav fail, mida sinu reegel pole kunagi näinud.
Üks paigaldaja, palju protsesse
Kaasaegne mängutarkvara on väike tähtkuju. Seal on klient, mis logib sind sisse, uuendaja, mis tõmbab sisu, käivitaja, mis käivitab mängu, ja mängu käivitatav fail, mis võib ise luua teise protsessi petuvastuse või matšide ühendamise kihi jaoks. Igaüks neist võib hoida oma ühendusi oma sihtkohtadega.
Välistusreegel nimetab tavaliselt ühte neist. Millist see nimetab, sõltub täielikult identifikaatorist, mida VPN-klient toetab, ja see on osa, mida kasutajad harva kontrollivad. Mõned kliendid sobitavad käivitatava faili tee, mõned paketi või bundle'i identifikaatori ja mõned protsessi nime, mida kaks mitteseotud binaarfaili võivad jagada. Loe reeglit enne protsesside nimekirja, sest reegel piirab isegi seda, mida saad väljendada.
Sümptom ei ole seega „jaotatud tunnel on katki”. See on „reegel hõlmab protsessi, mis ei ole see, mis kannab liiklust, millest mul on huvitav”, mis on palju kitsam ja palju parandatavam väide. Kui seda nii öelda, ei ole järgmine samm enam oletus.
Leia protsess, millele matši ühendus kuulub
Käivita mäng, mine matši ja vaata, kellele soklid kuuluvad, mitte mida ekraanil näha on. Windowsis vastavad protsesside nimekiri pluss sokli päring iga protsessi kohta sellele kahe käsuga:
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
Teine käsk trükib protsessi ID, mitte nime, seega ühenda kaks väljundit ID järgi. Rida, mida otsid, on see, mille kaugadress kuulub mänguteenusele, ja seda omav protsess on käivitatav fail, mille sinu reegel peab nimetama.
Linuxis nõuab sama küsimus ühte käsku sokli tüübi kohta ja mõlemat tasub kontrollida, sest matši ühendus võib olla UDP, samal ajal kui kõik muu on TCP:
ss -tunp state established | grep -i game
ss -tunp | awk 'NR==1 || /udp/'
Kui mäng töötab konteineris või ühilduvuskihis, võib leitud protsess olla shim, mitte binaarfail, mille paigaldasid. Sel juhul on oluline identifikaator see, mida klient näeb, mis võib olla shimi tee, ja ükski algse faili muutmine seda ei mõjuta.
Sobi identifikaator, mida sinu klient toetab
Loe kliendi dokumentatsiooni välistusreegli kohta enne millegi lisamist. Kolm tavapärast mudelit käituvad erinevalt ja üks neist on lõks.
| 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 |
Tee-reeglid on kõige täpsemad ja kõige hapramad. Käivitaja uuendus, mis teisaldab käivitatava faili, jätab reegli osutama failile, mis enam ei tööta, ja sümptom naaseb ilma, et midagi nähtavalt muutuks. Paketireeglid peavad sellele vastu ja võivad vaikselt katta ka abiprotsesse, mille peale sa kunagi ei mõelnud, mis on sõltuvalt abilisest kas mugav või murettekitav.
Ükskõik mida klient toetab, ära lisa kirjeid iga leitud käivitatava faili jaoks. Nimekiri, mis on kokku pandud katse-eksituse meetodil, kuni üks seanss töötas, ei ole ülevaadatav ja kogub vaikselt erandeid mitteseotud tarkvarale. Nimeta leitud protsess ja kirjuta üles, mille jaoks see oli.
Testi matšil, mitte allalaadimisel
Käivitaja allalaadimiskiirus on halvimm võimalik test, sest see rakendab täpselt seda protsessi, mis oli juba välistatud. Kasuta seda, mis ebaõnnestus, ja kontrolli teed, mitte mängu enda jõudluse kuva:
ip route get 203.0.113.55
Get-NetTCPConnection -State Established | Where-Object RemotePort -eq 27015
Esimene käsk vajab aadressi, milleks matši server lahendus, mille võib anda mängu ühenduslogi või sinu klient. Kui marsruut nimetab füüsilist liidest, töötab reegel. Teine näitab, kas seanss üldse olemas on, mis eristab olekut „välistatud, aga server on maas” olekust „pole välistatud”.
Hoia testimise ajal piirkond ja juurdepääsuvõrk fikseerituna. Matš, mis maandub igal katsel erinevas andmekeskuses, tekitab erinevaid aadresse ja sa lõpetad liikuva sihtmärgi tagaajamisega reegli valideerimise asemel. Kaks jooksu sama aadressiga on väärt rohkem kui kümme erinevatega.
Kontrolli uuesti pärast järgmist uuendust
Igal teepõhisel reeglil on paikade tsüklites mõõdetav säilivusaeg. Kui mäng lõpetab kuu aja pärast välistuse austamise, kontrollid esimesena, kas käivitatav fail liikus, ja teisena, kas selle kõrvale ilmus uus abiprotsess.
Ühe kliendi dokumenteeritud rakenduste välistamise mudel on mõistlik viide sellele, kuidas neid reegleid kirjeldatakse, kuigi üksikasjad erinevad toodete vahel. Loe oma, registreeri kasutatud identifikaator ja märgi kuupäev. Just see kirje muudab järgmisel korral, kui käivitaja uuenduse välja annab, mõistatuse viie minuti paranduseks.
Kui klient lihtsalt ei suuda vajalikku piiri väljendada, on kinnitatud laiem poliitika parem kui hunnik dokumenteerimata erandeid. Lai ja mõistetav võidab kitsa ja vale üle, eriti kui kitsas versioon on see, mida kõik usuvad kehtivat.