Го додавате стартерот на списокот за исклучување, преземањето скока од бавно на брзо, а натпреварот и понатаму завршува на далечен сервер. Ништо не е расипано. Стартерот и играта се два процеса со два сета сокети, и исклучувањето на едниот не кажува ништо за другиот. Преземањето се забрза затоа што преземањето беше сообраќајот на стартерот; натпреварот е туѓа врска, отворена од извршен файл што вашето правило никогаш не го видело.

Еден инсталатор, многу процеси

Современата играчка програмска опрема е мало соѕвездие. Има клиент што ве пријавува, ажурирање што влече содржина, стартер што ја стартува играта, и извршен файл на играта што самиот може да создаде втор процес за анти-чит или за слојот за совпаѓање на натпревари. Секој од нив може да држи свои врски кон своите одредишта.

Правилото за исклучување обично именува едно од нив. Кое го именува целосно зависи од идентификаторот што го поддржува VPN клиентот, и тоа е делот што корисниците ретко го проверуваат. Некои клиенти совпаѓаат патека на извршен файл, некои идентификатор на пакет или bundle, а некои име на процес што два неврзани бинарни файла можат да го делат. Прочитајте го правилото пред списокот на процеси, бидејќи правилото ограничува дури и тоа што можете да го изразите.

Значи симптомот не е „поделениот тунел е расипан“. Тој е „правилото опфаќа процес што не е оној што го носи сообраќајот што ми е важен“, што е многу потесна и многу поправлива изјава. Кога ќе го кажете така, следниот чекор престанува да биде погодување.

Најдете го процесот што ја поседува врската на натпреварот

Стартувајте ја играта, влезете во натпревар и погледнете кому му припаѓаат сокетите, а не што има на екранот. На Windows списокот на процеси плус барање за сокети по процес одговараат на тоа со две команди:

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

Втората команда печати ID на процес, не име, затоа поврзете ги двата излеза по ID. Редот што го барате е оној чија далечна адреса и припаѓа на услугата за играта, а процесот што го поседува е извршниот файл што вашето правило треба да го именува.

На Linux истото прашање бара една команда по тип на сокет, и вреди да се проверат двете, бидејќи врската на натпреварот може да биде UDP, додека сите други се TCP:

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

Ако играта работи во контејнер или слој за компатибилност, процесот што ќе го најдете може да биде shim, а не бинарниот файл што сте го инсталирале. Во тој случај важниот идентификатор е оној што го гледа клиентот, што може да биде патеката на shim, и никакво уредување на оригиналниот файл нема да влијае на тоа.

Усогласете го идентификаторот што го поддржува вашиот клиент

Прочитајте ја документацијата на клиентот за правилото за исклучување пред да додадете нешто. Трите вообичаени модели се однесуваат различно, и еден од нив е стапица.

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

Правилата за патека се најточни и најкршливи. Ажурирањето на стартерот што го преместува извршниот файл го остава правилото да покажува на файл што повеќе не се извршува, и симптомот се враќа без ништо очигледно да се промени. Правилата за пакет го преживуваат тоа, и можат тивко да опфатат помошни процеси за кои никогаш не сте размислувале, што е или погодно или загрижувачко зависно од помошникот.

Што и да поддржува клиентот, не додавајте записи за секој извршен файл што ќе го најдете. Список составен со обиди и грешки додека една сесија не проработе не може да се прегледа, и тивко ќе собира исклучоци за неврзана програмска опрема. Именувајте го процесот што го најдовте и запишете за што бил.

Тестирајте на натпреварот, не на преземање

Брзината на преземање на стартерот е најлошиот можен тест, бидејќи го вежба токму процесот што веќе бил исклучен. Користете го она што не успеваше, и проверете ја патеката наместо сопствениот приказ за изведба на играта:

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

Првата команда има потреба од адресата во која се реши серверот на натпреварот, што може да ви ја даде дневникот за врски на играта или вашиот клиент. Ако рутата го именува физичкиот интерфејс, правилото работи. Втората покажува дали воопшто постои сесија, што го дели „исклучено, но серверот е паднат“ од „не е исклучено“.

Држете ги регионот и пристапната мрежа фиксни додека тестирате. Натпревар што секој обид завршува во друг дата центар создава различни адреси, и ќе завршите да бркате подвижна цел наместо да валидирате правило. Две извршувања со иста адреса вредат повеќе од десет со различни.

Проверете повторно по следното ажурирање

Секое правило засновано на патека има рок на траење измерен во циклуси на закрпи. Кога играта по еден месец престанува да го почитува исклучувањето, првото нешто што треба да се провери е дали извршниот файл се преместил, а второто дали покрај него се појавил нов помошен процес.

Моделот на исклучување на апликации што го документира еден клиент е разумна референца за тоа како се опишуваат овие правила, иако деталите се разликуваат меѓу производите. Прочитајте го својот, запишете го идентификаторот што сте го користеле и забележете го датумот. Токму тој запис претвора мистерија во петминутна поправка следниот пат кога стартерот ќе објави ажурирање.

Ако клиентот едноставно не може да ја изрази границата што ви треба, одобрена поширока политика е подобра од куп недокументирани исклучоци. Широкото и разбраното победува тесното и погрешното, особено кога тесната верзија е она што сите веруваат дека е на сила.

Поврзани статии