Vaš podijeljeni tunel isključuje pokretač, a ne igru
Pokretač za meč pokreće drugu izvršnu datoteku, a taj proces ima vlastite utičnice. Pronađite stvarni proces, uskladite ispravan identifikator, zatim testirajte.
Dodate pokretač na listu izuzetaka, preuzimanje skoči sa sporog na brzo, a meč i dalje završi na udaljenom serveru. Ništa nije pokvareno. Pokretač i igra su dva procesa s dva skupa utičnica, a izuzimanje jednog ne govori ništa o drugom. Preuzimanje je postalo brže jer je preuzimanje bio promet pokretača; meč je nečija druga veza, koju je otvorila izvršna datoteka koju vaše pravilo nikad nije vidjelo.
Jedan instalater, mnogo procesa
Savremeni softver za igre je malo sazviježđe. Postoji klijent koji vas prijavljuje, ažuriranje koje povlači sadržaj, pokretač koji pokreće igru i izvršna datoteka igre koja sama može stvoriti drugi proces za anti-cheat ili za matchmaking sloj. Svaki od njih može držati vlastite veze prema vlastitim odredištima.
Pravilo izuzimanja obično imenuje jedan od njih. Koji će imenovati u potpunosti zavisi od identifikatora koji VPN klijent podržava, a to je dio koji korisnici rijetko provjeravaju. Neki klijenti uparuju putanju izvršne datoteke, neki identifikator paketa ili bundlea, a neki naziv procesa koji dvije nepovezane binarne datoteke mogu dijeliti. Pročitajte pravilo prije liste procesa, jer pravilo ograničava čak i ono što možete izraziti.
Simptom dakle nije „podijeljeni tunel je pokvaren“. On je „pravilo pokriva proces koji nije onaj koji nosi promet do kojeg mi je stalo“, što je mnogo uža i mnogo popravljivija tvrdnja. Kad to tako kažete, sljedeći korak prestaje biti nagađanje.
Pronađite proces koji posjeduje vezu meča
Pokrenite igru, uđite u meč i pogledajte ko posjeduje utičnice, a ne šta je na ekranu. Na Windowsu lista procesa plus upit za utičnice po procesu odgovara na to u dvije komande:
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
Druga komanda ispisuje ID procesa, a ne naziv, pa spojite dva izlaza po ID-u. Red koji tražite je onaj čija udaljena adresa pripada servisu igre, a proces koji ga posjeduje je izvršna datoteka koju vaše pravilo mora imenovati.
Na Linuxu isto pitanje traži jednu komandu po tipu utičnice, a vrijedi provjeriti oba, jer veza meča može biti UDP dok je sve ostalo TCP:
ss -tunp state established | grep -i game
ss -tunp | awk 'NR==1 || /udp/'
Ako igra radi u kontejneru ili sloju kompatibilnosti, proces koji nađete može biti shim, a ne binarna datoteka koju ste instalirali. U tom slučaju identifikator koji je važan je onaj koji klijent vidi, a to može biti putanja shima, i nikakvo uređivanje originalne datoteke na to neće uticati.
Uskladite identifikator koji vaš klijent podržava
Pročitajte dokumentaciju klijenta za pravilo izuzimanja prije nego što bilo šta dodate. Tri uobičajena modela ponašaju se različito, a jedan od njih je zamka.
| 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 putanje su najpreciznija i najlomljivija. Ažuriranje pokretača koje premjesti izvršnu datoteku ostavlja pravilo da pokazuje na datoteku koja se više ne pokreće, a simptom se vraća bez ičega očigledno promijenjenog. Pravila paketa to preživljavaju i mogu tiho pokriti pomoćne procese o kojima nikad niste razmišljali, što je ili zgodno ili zabrinjavajuće, zavisno od pomoćnika.
Šta god klijent podržava, ne dodajte unose za svaku izvršnu datoteku koju nađete. Lista sastavljena pokušajima i greškama dok jedna sesija nije proradila ne može se pregledati i tiho će gomilati izuzetke za nepovezani softver. Imenujte proces koji ste našli i zapišite za šta je bio.
Testirajte na meču, ne na preuzimanju
Brzina preuzimanja pokretača najgori je mogući test, jer vježba upravo proces koji je već izuzet. Koristite ono što nije radilo i provjerite putanju, a ne vlastiti prikaz performansi igre:
ip route get 203.0.113.55
Get-NetTCPConnection -State Established | Where-Object RemotePort -eq 27015
Prva komanda treba adresu na koju je server meča razriješio, što vam može dati dnevnik veza igre ili vaš klijent. Ako ruta imenuje fizički interfejs, pravilo radi. Druga pokazuje postoji li sesija uopće, što razdvaja „izuzeto ali server je pao“ od „nije izuzeto“.
Držite regiju i pristupnu mrežu fiksiranima dok testirate. Meč koji svaki pokušaj završi u drugom data centru stvara različite adrese i završit ćete jureći pokretnu metu umjesto provjeravajući pravilo. Dva pokretanja s istom adresom vrijede više od deset s različitim.
Ponovo provjerite nakon sljedećeg ažuriranja
Svako pravilo zasnovano na putanji ima rok trajanja mjeren ciklusima zakrpa. Kad igra mjesec dana kasnije prestane poštovati izuzetak, prvo provjerite je li se izvršna datoteka premjestila, a drugo je li se uz nju pojavio novi pomoćni proces.
Model izuzimanja aplikacija koji dokumentuje jedan klijent razuman je referentni primjer za to kako se ova pravila opisuju, iako se detalji razlikuju među proizvodima. Pročitajte svoj, zabilježite identifikator koji ste koristili i zapišite datum. Taj zapis pretvara misteriju u petominutni popravak sljedeći put kad pokretač objavi ažuriranje.
Ako klijent jednostavno ne može izraziti granicu koja vam je potrebna, odobrena šira politika bolja je od hrpe nedokumentovanih izuzetaka. Široko i shvaćeno pobjeđuje usko i pogrešno, posebno kad je uska verzija ono što svi vjeruju da je na snazi.