Split tuneliniz oyunu deyil, başladıcı proqramı istisna edir
Başladıcı matç üçün başqa icra olunan fayl işə salır və həmin prosesin öz soketləri olur. Həqiqi prosesi tapın, düzgün identifikatoru uyğunlaşdırın, sonra sınaqdan keçirin.
Başladıcını istisna siyahısına əlavə edirsiniz, yükləmə yavaşdan sürətliyə keçir, matç isə yenə uzaq serverdə qərarlaşır. Heç nə pozulmayıb. Başladıcı və oyun iki fərqli soket dəsti olan iki prosesdir və birini istisna etmək digəri barədə heç nə demir. Yükləmə sürətləndi, çünki yükləmə başladıcının trafiki idi; matç isə başqasının bağlantısıdır və onu qaydanızın heç vaxt görmədiyi icra olunan fayl açıb.
Bir quraşdırıcı, çoxlu proses
Müasir oyun proqramı kiçik bir bürcdür. Sizi daxil edən bir müştəri, məzmun çəkən bir yeniləyici, oyunu başladan bir başladıcı və anti-cheat və ya matç üzlüyü üçün özü ikinci proses yarada bilən oyun icra faylı var. Bunların hər biri öz təyinatlarına öz bağlantılarını saxlaya bilər.
İstisna qaydası adətən onlardan birini adlandırır. Hansını adlandırdığı tamamilə VPN müştərisinin dəstəklədiyi identifikatordan asılıdır və istifadəçilərin nadir hallarda yoxladığı hissə elə budur. Bəzi müştərilər icra faylının yolunu, bəziləri paket və ya bundle identifikatorunu, bəziləri isə iki əlaqəsiz binary-nin paylaşa biləcəyi proses adını uyğunlaşdırır. Qaydanı proses siyahısından əvvəl oxuyun, çünki qayda hətta nə ifadə edə biləcəyinizi məhdudlaşdırır.
Beləliklə simptom “split tunel pozulub” deyil. O, “qayda məni maraqlandıran trafiki daşıyan prosesi deyil, başqa bir prosesi əhatə edir” deməkdir və bu, daha dar, daha asan düzəldilə bilən bir ifadədir. Bunu belə dedikdən sonra növbəti addım təxmin olmaqdan çıxır.
Matç bağlantısına sahib olan prosesi tapın
Oyunu başladın, matça girin və ekranda nə olduğuna deyil, soketlərə kimin sahib olduğuna baxın. Windows-da proses siyahısı üstəgəl hər proses üzrə soket sorğusu buna iki əmrlə cavab verir:
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
İkinci əmr ad deyil, proses ID-si çap edir, ona görə iki çıxışı ID ilə birləşdirin. Axtardığınız sətir uzaq ünvanı oyun xidmətinə aid olan sətirdir və onun sahibi olan proses qaydanızın adlandırmalı olduğu icra faylıdır.
Linux-da eyni sual hər soket növü üçün bir əmr tələb edir və hər ikisini yoxlamağa dəyər, çünki matç bağlantısı UDP, qalan hər şey isə TCP ola bilər:
ss -tunp state established | grep -i game
ss -tunp | awk 'NR==1 || /udp/'
Oyun konteynerdə və ya uyğunluq qatında işləyirsə, tapdığınız proses quraşdırdığınız binary deyil, bir şim ola bilər. Bu halda vacib olan identifikator müştərinin gördüyüdür, bu da şimin yolu ola bilər və orijinal faylı nə qədər redaktə etsəniz də buna təsir etməyəcək.
Müştərinizin dəstəklədiyi identifikatoru uyğunlaşdırın
Bir şey əlavə etməzdən əvvəl müştərinin istisna qaydası üçün sənədlərini oxuyun. Üç ümumi model fərqli davranır və onlardan biri tələdir.
| 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 |
Yol qaydaları ən dəqiq və ən kövrəkdir. İcra faylını köçürən başladıcı yeniləməsi qaydanı artıq işləməyən fayla yönəldir və simptom açıq-aşkar heç nə dəyişmədən qayıdır. Paket qaydaları bundan sağ çıxır və həm də heç düşünmədiyiniz köməkçi prosesləri sakitcə əhatə edə bilər; bu, köməkçidən asılı olaraq ya rahatdır, ya da narahat edir.
Müştəri nəyi dəstəkləyirsə dəstəkləsin, tapa bildiyiniz hər icra faylı üçün giriş əlavə etməyin. Bir sessiya işləyənə qədər sınaq və səhv ilə yığılmış siyahı yoxlanıla bilməz və əlaqəsiz proqramlar üçün səssizcə istisnalar toplayacaq. Tapdığınız prosesi adlandırın və nə üçün olduğunu yazın.
Yükləmədə deyil, matçda sınayın
Başladıcının yükləmə sürəti mümkün olan ən pis sınaqdır, çünki o, artıq istisna edilmiş prosesi məhz işə salır. Uğursuz olan şeyi istifadə edin və oyunun öz performans göstəricisinə deyil, yola baxın:
ip route get 203.0.113.55
Get-NetTCPConnection -State Established | Where-Object RemotePort -eq 27015
Birinci əmr matç serverinin həll etdiyi ünvanı tələb edir; bunu oyunun bağlantı jurnalı və ya müştəriniz verə bilər. Marşrut fiziki interfeysi göstərirsə, qayda işləyir. İkincisi ümumiyyətlə sessiyanın olub-olmadığını göstərir və bununla “istisna edilib, amma server söndürülüb” halını “istisna edilməyib” halından ayırır.
Sınaq zamanı bölgəni və giriş şəbəkəsini sabit saxlayın. Hər cəhddə fərqli data mərkəzinə düşən matç fərqli ünvanlar yaradır və siz qaydanı yoxlamaq əvəzinə hərəkət edən hədəfi qovacaqsınız. Eyni ünvanla iki cəhd fərqli ünvanlarla on cəhddən daha dəyərlidir.
Növbəti yeniləmədən sonra yenidən yoxlayın
Yola əsaslanan hər qaydanın yamaq dövrləri ilə ölçülən istifadə müddəti var. Oyun bir ay sonra istisnaya riayət etməyi dayandıranda ilk yoxlanmalı şey icra faylının köçüb-köçmədiyi, ikincisi isə yanında yeni köməkçi prosesin görünüb-görünmədiyidir.
Bir müştərinin sənədləşdirdiyi tətbiq istisnası modeli bu qaydaların necə təsvir olunduğu üçün ağlabatan istinaddır, baxmayaraq ki detallar məhsullar arasında fərqlənir. Özünüzünkünü oxuyun, istifadə etdiyiniz identifikatoru qeyd edin və tarixi yazın. Bu qeyd, başladıcı növbəti dəfə yeniləmə buraxanda bir sirri beş dəqiqəlik düzəlişə çevirən şeydir.
Müştəri sadəcə ehtiyacınız olan sərhədi ifadə edə bilmirsə, təsdiqlənmiş daha geniş siyasət sənədləşdirilməmiş istisnalar yığınından yaxşıdır. Geniş və anlaşılan dar və səhv olandan üstündür, xüsusən dar versiya hamının yerində olduğuna inandığı şey olduqda.