Bölünmüş tüneliniz oyunu değil başlatıcıyı hariç tutuyor
Başlatıcı, maç için başka bir çalıştırılabilir dosya başlatır ve o sürecin kendi soketleri vardır. Gerçek süreci bulun, doğru tanımlayıcıyı eşleştirin, ardından test edin.
Başlatıcıyı hariç tutma listesine eklersiniz, indirme yavaştan hızlıya sıçrar ve maç yine de uzak bir sunucuya düşer. Hiçbir şey bozuk değil. Başlatıcı ile oyun, iki soket kümesine sahip iki süreçtir ve birini hariç tutmak diğeri hakkında hiçbir şey söylemez. İndirme hızlandı çünkü indirme başlatıcının trafiğiydi; maç başkasının bağlantısıdır ve kuralınızın hiç görmediği bir çalıştırılabilir dosya tarafından açılmıştır.
Bir yükleyici, birçok süreç
Modern oyun yazılımı küçük bir takımyıldızdır. Sizi oturum açtıran bir istemci, içerik çeken bir güncelleyici, oyunu başlatan bir başlatıcı ve hile önleme ya da maç eşleştirme katmanı için kendisi ikinci bir süreç oluşturabilen bir oyun çalıştırılabilir dosyası vardır. Bunların her biri kendi hedeflerine kendi bağlantılarını tutabilir.
Hariç tutma kuralı genellikle bunlardan birini adlandırır. Hangisini adlandırdığı tamamen VPN istemcisinin desteklediği tanımlayıcıya bağlıdır ve kullanıcıların nadiren kontrol ettiği kısım burasıdır. Bazı istemciler çalıştırılabilir dosya yolunu, bazıları paket veya bundle tanımlayıcısını, bazıları ise iki ilgisiz ikili dosyanın paylaşabileceği bir süreç adını eşleştirir. Süreç listesinden önce kuralı okuyun, çünkü kural ifade edebileceğiniz şeyi bile sınırlar.
Yani belirti “bölünmüş tünel bozuk” değildir. Belirti “kural, önemsediğim trafiği taşıyan süreç olmayan bir süreci kapsıyor”dur ve bu çok daha dar, çok daha onarılabilir bir ifadedir. Bunu böyle söylediğinizde sonraki adım tahmin olmaktan çıkar.
Maç bağlantısına sahip süreci bulun
Oyunu başlatın, bir maça girin ve ekranda ne olduğuna değil soketlerin kime ait olduğuna bakın. Windows'ta süreç listesi ve süreç başına soket sorgusu buna iki komutla yanıt 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 komut ad değil süreç kimliği yazdırır, bu yüzden iki çıktıyı kimliğe göre birleştirin. Aradığınız satır, uzak adresi oyun hizmetine ait olan satırdır ve onu elinde tutan süreç, kuralınızın adlandırması gereken çalıştırılabilir dosyadır.
Linux'ta aynı soru her soket türü için bir komut gerektirir ve ikisini de kontrol etmeye değer, çünkü maç bağlantısı UDP olabilirken diğer her şey TCP'dir:
ss -tunp state established | grep -i game
ss -tunp | awk 'NR==1 || /udp/'
Oyun bir konteynerde veya uyumluluk katmanında çalışıyorsa bulduğunuz süreç, yüklediğiniz ikili dosya değil bir shim olabilir. Bu durumda önemli olan tanımlayıcı istemcinin gördüğüdür, bu da shim'in yolu olabilir ve orijinal dosyayı ne kadar düzenleseniz de bunu etkilemez.
İstemcinizin desteklediği tanımlayıcıyı eşleştirin
Bir şey eklemeden önce istemcinin hariç tutma kuralı belgesini okuyun. Üç yaygın model farklı davranır ve bunlardan biri tuzaktır.
| 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 kuralları en kesin ve en kırılgandır. Çalıştırılabilir dosyayı taşıyan bir başlatıcı güncellemesi kuralı artık çalışmayan bir dosyaya işaret eder bırakır ve belirti apaçık bir şey değişmeden geri döner. Paket kuralları bunu atlatır ve hiç düşünmediğiniz yardımcı süreçleri sessizce kapsayabilir; bu, yardımcıya bağlı olarak kullanışlı ya da endişe vericidir.
İstemci neyi desteklerse desteklesin, bulduğunuz her çalıştırılabilir dosya için girdi eklemeyin. Bir oturum çalışana kadar deneme yanılmayla oluşturulan liste incelenemez ve ilgisiz yazılımlar için sessizce istisna biriktirir. Bulduğunuz süreci adlandırın ve ne için olduğunu yazın.
Maçta test edin, indirmede değil
Başlatıcının indirme hızı mümkün olan en kötü testtir, çünkü tam olarak zaten hariç tutulmuş süreci çalıştırır. Başarısız olan şeyi kullanın ve oyunun kendi performans ekranı yerine yolu kontrol edin:
ip route get 203.0.113.55
Get-NetTCPConnection -State Established | Where-Object RemotePort -eq 27015
İlk komut maç sunucusunun çözümlediği adrese ihtiyaç duyar; bunu oyunun bağlantı günlüğü veya istemciniz verebilir. Yol fiziksel arabirimi adlandırıyorsa kural çalışıyor demektir. İkincisi bir oturum olup olmadığını gösterir; bu da “hariç tutuldu ama sunucu kapalı” ile “hariç tutulmadı” arasını ayırır.
Test ederken bölgeyi ve erişim ağını sabit tutun. Her denemede farklı bir veri merkezine inen maç farklı adresler üretir ve kuralı doğrulamak yerine hareketli bir hedefi kovalarsınız. Aynı adresle iki çalıştırma, farklı adreslerle on çalıştırmadan daha değerlidir.
Bir sonraki güncellemeden sonra yeniden kontrol edin
Yola dayalı her kuralın yama döngüleriyle ölçülen bir raf ömrü vardır. Oyun bir ay sonra hariç tutmaya uymayı bıraktığında önce çalıştırılabilir dosyanın taşınıp taşınmadığını, sonra yanında yeni bir yardımcı süreç görünüp görünmediğini kontrol edin.
Bir istemcinin belgelediği uygulama hariç tutma modeli, bu kuralların nasıl tanımlandığına dair makul bir referanstır, ancak ayrıntılar ürünler arasında değişir. Kendi belgenizi okuyun, kullandığınız tanımlayıcıyı kaydedin ve tarihi not edin. O kayıt, başlatıcı bir dahaki sefere güncelleme yayımladığında bir gizemi beş dakikalık onarıma dönüştüren şeydir.
İstemci ihtiyacınız olan sınırı basitçe ifade edemiyorsa, onaylanmış daha geniş bir politika belgelenmemiş istisnalar yığınından daha iyidir. Geniş ve anlaşılmış, dar ve yanlışı yener; özellikle dar sürüm herkesin yürürlükte sandığı şey olduğunda.