Du lägger till startprogrammet i undantagslistan, nedladdningen går från långsam till snabb, och matchen hamnar fortfarande på en avlägsen server. Inget är trasigt. Startprogrammet och spelet är två processer med två uppsättningar sockets, och att utesluta den ena säger ingenting om den andra. Nedladdningen blev snabbare eftersom nedladdningen var startprogrammets trafik; matchen är någon annans anslutning, öppnad av en körbar fil som din regel aldrig har sett.

En installer, många processer

Modern spelprogramvara är en liten stjärnbild. Det finns en klient som loggar in dig, en uppdaterare som hämtar innehåll, ett startprogram som startar spelet och en körbar spelfil som själv kan skapa en andra process för anti-fusk eller för matchmaking-overlägget. Var och en av dem kan hålla egna anslutningar till egna destinationer.

En undantagsregel namnger vanligtvis en av dem. Vilken den namnger beror helt på identifieraren som VPN-klienten stöder, och det är delen som användare sällan kontrollerar. Vissa klienter matchar en sökväg till en körbar fil, andra en paket- eller bundle-identifierare, och andra ett processnamn som två orelaterade binärfiler kan dela. Läs regeln innan du läser processlistan, eftersom regeln begränsar vad du ens kan uttrycka.

Symptomet är alltså inte ”den delade tunneln är trasig”. Det är ”regeln täcker en process som inte är den som bär trafiken jag bryr mig om”, vilket är ett mycket smalare och mycket mer reparerbart påstående. När du väl säger det så slutar nästa steg att vara gissning.

Hitta processen som äger matchanslutningen

Starta spelet, gå in i en match och titta på vem som äger sockets i stället för vad som finns på skärmen. I Windows svarar processlistan plus en socketfråga per process på det med två kommandon:

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

Det andra kommandot skriver ut ett process-ID, inte ett namn, så koppla ihop de två utdata efter ID. Raden du letar efter är den vars fjärradress tillhör speltjänsten, och den ägande processen är den körbara fil som din regel måste namnge.

I Linux kräver samma fråga ett kommando per sockettyp, och det är värt att kontrollera båda, eftersom en matchanslutning kan vara UDP medan allt annat är TCP:

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

Om spelet körs i en container eller ett kompatibilitetslager kan processen du hittar vara en shim i stället för binärfilen du installerade. I så fall är identifieraren som betyder något den klienten ser, vilket kan vara shimens sökväg, och ingen redigering av originalfilen kommer att påverka det.

Matcha identifieraren som din klient stöder

Läs klientens dokumentation om undantagsregeln innan du lägger till något. De tre vanliga modellerna beter sig olika, och en av dem är en fälla.

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

Sökvägsregler är de mest exakta och de mest ömtåliga. En startprogramsuppdatering som flyttar den körbara filen lämnar regeln pekande på en fil som inte längre körs, och symptomet återkommer utan att något uppenbart ändras. Paketregler överlever det, och de kan också tyst täcka hjälpprocesser du aldrig har tänkt på, vilket antingen är praktiskt eller alarmerande beroende på hjälparen.

Vad klienten än stöder, lägg inte till poster för varje körbar fil du hittar. En lista sammansatt genom trial and error tills en session fungerade kan inte granskas, och den kommer tyst att samla undantag för orelaterad programvara. Namnge processen du hittade och skriv ner vad den var till för.

Testa på matchen, inte på en nedladdning

Startprogrammets nedladdningshastighet är det sämsta möjliga testet, eftersom det tränar exakt den process som redan var undantagen. Använd det som misslyckades, och kontrollera vägen i stället för spelets egen prestandavisning:

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

Det första kommandot behöver adressen som matchservern löste upp till, vilket spelets anslutningslogg eller din klient kan ge dig. Om rutten namnger det fysiska gränssnittet fungerar regeln. Det andra visar om det överhuvudtaget finns en session, vilket skiljer ”undantagen men servern är nere” från ”inte undantagen”.

Håll regionen och åtkomstnätet fasta medan du testar. En match som landar i ett annat datacenter varje gång ger olika adresser, och du kommer att jaga ett rörligt mål i stället för att validera en regel. Två körningar med samma adress är värda mer än tio med olika.

Kontrollera igen efter nästa uppdatering

Varje sökvägsbaserad regel har en hållbarhet mätt i patchcykler. När spelet en månad senare slutar respektera undantaget är det första du kontrollerar om den körbara filen har flyttats, och det andra om en ny hjälpprocess har dykt upp bredvid den.

Modellen undantag av program som en klient dokumenterar är en rimlig referens för hur dessa regler beskrivs, även om detaljerna varierar mellan produkter. Läs din, registrera identifieraren du använde och anteckna datumet. Den anteckningen är det som förvandlar ett mysterium till en femminutersreparation nästa gång startprogrammet släpper en uppdatering.

Om klienten helt enkelt inte kan uttrycka gränsen du behöver är en godkänd bredare policy bättre än en hög odokumenterade undantag. Brett och förstått slår smalt och fel, särskilt när den smala versionen är det alla tror gäller.

Relaterade artiklar