Shton lansuesin në listën e përjashtimeve, shkarkimi kalon nga i ngadaltë në i shpejtë, dhe ndeshja përsëri zbret në një server të largët. Asgjë nuk është prishur. Lansuesi dhe loja janë dy procese me dy grupe lidhjesh, dhe përjashtimi i njërit nuk thotë asgjë për tjetrin. Shkarkimi u përshpejtua sepse shkarkimi ishte trafiku i lansuesit; ndeshja është lidhja e dikujt tjetër, e hapur nga një skedar ekzekutiv që rregulli yt nuk e ka parë kurrë.

Një instalues, shumë procese

Programi modern i lojërave është një yjësi e vogël. Ka një klient që të fut, një përditësues që tërheq përmbajtje, një lansues që nis lojën, dhe një skedar ekzekutiv i lojës që mund të krijojë vetë një proces të dytë për anti-cheat ose për shtresën e përputhjes së ndeshjeve. Secili prej tyre mund të mbajë lidhjet e veta drejt destinacioneve të veta.

Një rregull përjashtimi zakonisht emërton njërin prej tyre. Cilin emërton varet plotësisht nga identifikuesi që mbështet klienti VPN, dhe kjo është pjesa që përdoruesit rrallë e kontrollojnë. Disa klientë përputhin një shteg skedari ekzekutiv, disa një identifikues pakete ose bundle, dhe disa një emër procesi që dy binare të palidhura mund ta ndajnë. Lexo rregullin përpara listës së proceseve, sepse rregulli kufizon edhe atë që mund të shprehësh.

Prandaj simptoma nuk është «tuneli i ndarë është prishur». Është «rregulli mbulon një proces që nuk është ai që mbart trafikun për të cilin më intereson», që është një pohim shumë më i ngushtë dhe shumë më i riparueshëm. Pasi ta thuash kështu, hapi tjetër nuk është më hamendje.

Gjej procesin që zotëron lidhjen e ndeshjes

Nis lojën, hyr në një ndeshje dhe shiko kush zotëron lidhjet, jo çfarë është në ekran. Në Windows lista e proceseve plus një pyetje për lidhjet për çdo proces përgjigjen me dy komanda:

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

Komanda e dytë shtyp një ID procesi, jo një emër, prandaj bashko dy daljet sipas ID-së. Rreshti që kërkon është ai adresa e largët e të cilit i përket shërbimit të lojës, dhe procesi që e zotëron është skedari ekzekutiv që rregulli yt duhet të emërtojë.

Në Linux e njëjta pyetje kërkon një komandë për çdo lloj lidhjeje, dhe ia vlen të kontrollohen të dyja, sepse lidhja e ndeshjes mund të jetë UDP ndërsa gjithçka tjetër është TCP:

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

Nëse loja ekzekutohet në një kontejner ose në një shtresë përputhshmërie, procesi që gjen mund të jetë një shim dhe jo binari që ke instaluar. Në atë rast identifikuesi që ka rëndësi është ai që sheh klienti, i cili mund të jetë shtegu i shim-it, dhe asnjë redaktim i skedarit origjinal nuk do ta ndikojë atë.

Përputh identifikuesin që mbështet klienti yt

Lexo dokumentacionin e klientit për rregullin e përjashtimit përpara se të shtosh diçka. Tre modelet e zakonshme sillen ndryshe, dhe njëri prej tyre është kurth.

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

Rregullat e shtegut janë më të sakta dhe më të brishta. Një përditësim i lansuesit që zhvendos skedarin ekzekutiv e lë rregullin duke treguar një skedar që nuk ekzekutohet më, dhe simptoma kthehet pa ndryshuar asgjë dukshëm. Rregullat e paketës i mbijetojnë kësaj, dhe gjithashtu mund të mbulojnë në heshtje procese ndihmëse për të cilat nuk ke menduar kurrë, gjë që është e përshtatshme ose alarmante në varësi të ndihmësit.

Çfarëdo që mbështet klienti, mos shto zëra për çdo skedar ekzekutiv që gjen. Një listë e ndërtuar me provë dhe gabim derisa një sesion funksionoi nuk mund të rishikohet, dhe do të grumbullojë në heshtje përjashtime për programe të palidhura. Emërto procesin që gjeve dhe shkruaj për çfarë ishte.

Testo në ndeshje, jo në një shkarkim

Shpejtësia e shkarkimit të lansuesit është testi më i keq i mundshëm, sepse ushtron pikërisht procesin që ishte tashmë i përjashtuar. Përdor atë që dështonte dhe kontrollo shtegun, jo ekranin e performancës së vetë lojës:

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

Komanda e parë ka nevojë për adresën në të cilën zgjidhi serveri i ndeshjes, të cilën mund ta japë regjistri i lidhjeve të lojës ose klienti yt. Nëse shtegu emërton ndërfaqen fizike, rregulli funksionon. E dyta tregon nëse ekziston fare një sesion, gjë që ndan «i përjashtuar, por serveri është jashtë» nga «i papërjashtuar».

Mbaj rajonin dhe rrjetin e aksesit fiks gjatë testimit. Një ndeshje që zbret në një qendër të dhënash të ndryshme çdo herë prodhon adresa të ndryshme, dhe do të përfundosh duke ndjekur një objektiv në lëvizje në vend që të validosh një rregull. Dy ekzekutime me të njëjtën adresë vlejnë më shumë se dhjetë me adresa të ndryshme.

Rikontrollo pas përditësimit të radhës

Çdo rregull i bazuar në shteg ka një jetëgjatësi të matur në cikle patch-esh. Kur loja një muaj më vonë ndalon së respektuari përjashtimin, gjëja e parë që kontrollohet është nëse skedari ekzekutiv është zhvendosur, dhe e dyta nëse është shfaqur një proces ndihmës i ri pranë tij.

Modeli i përjashtimit të aplikacioneve i dokumentuar nga një klient është një referencë e arsyeshme për mënyrën se si përshkruhen këto rregulla, megjithëse detajet ndryshojnë midis produkteve. Lexo tëndin, regjistro identifikuesin që përdore dhe shëno datën. Ai regjistrim është ai që e kthen një mister në një rregullim pesëminutësh herën tjetër kur lansuesi lëshon një përditësim.

Nëse klienti thjesht nuk mund të shprehë kufirin që të nevojitet, një politikë më e gjerë e miratuar është më e mirë se një grumbull përjashtimesh të padokumentuara. E gjerë dhe e kuptuar mund të tjerët e ngushtë dhe të gabuar, veçanërisht kur versioni i ngushtë është ai që të gjithë besojnë se është në fuqi.

Artikuj të ngjashëm