Ishga tushirgichni istisnolar ro'yxatiga qo'shasiz, yuklab olish sekinlikdan tezlikka sakraydi, va o'yin baribir uzoq serverga tushadi. Hech narsa buzilmagan. Ishga tushirgich va o'yin ikki soket to'plamiga ega ikki jarayon, va birini istisno qilish ikkinchisi haqida hech narsa demaydi. Yuklab olish tezlashdi chunki yuklab olish ishga tushirgichning trafigi edi; o'yin boshqasining ulanishi, sizning qoidangiz hech qachon ko'rmagan bajariladigan fayl tomonidan ochilgan.

Bitta o'rnatuvchi, ko'p jarayon

Zamonaviy o'yin dasturi kichik yulduzlar turkumidir. Sizni tizimga kirituvchi mijoz, tarkibni tortuvchi yangilagich, o'yinni boshlovchi ishga tushirgich, va anti-cheat yoki o'yin moslashtirish qatlami uchun o'zi ikkinchi jarayon yaratishi mumkin bo'lgan o'yin bajariladigan fayli bor. Ularning har biri o'z manzillariga o'z ulanishlarini saqlashi mumkin.

Istisno qoidasi odatda ulardan birini nomlaydi. Qaysinisini nomlashi VPN mijozi qo'llab-quvvatlaydigan identifikatorga butunlay bog'liq, va bu foydalanuvchilar kamdan-kam tekshiradigan qism. Ba'zi mijozlar bajariladigan fayl yo'lini, ba'zilari paket yoki bundle identifikatorini, yana ba'zilari ikkita aloqasiz binar bo'lishishi mumkin bo'lgan jarayon nomini moslashtiradi. Jarayonlar ro'yxatidan oldin qoidani o'qing, chunki qoida hatto nimani ifodalashingiz mumkinligini ham cheklaydi.

Shuning uchun alomat “bo'lingan tunnel buzilgan” emas. U “qoida men uchun muhim trafikni olib yuruvchi jarayon bo'lmagan jarayonni qamrab oladi”, bu ancha tor va ancha oson tuzatiladigan bayonot. Buni shunday desangiz, keyingi qadam taxmin bo'lishdan to'xtaydi.

O'yin ulanishiga ega jarayonni toping

O'yinni boshlang, o'yinga kiring va ekranda nima borligidan ko'ra soketlar kimga tegishli ekanini ko'ring. Windows'da jarayonlar ro'yxati va har bir jarayon uchun soket so'rovi bunga ikki buyruq bilan javob beradi:

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

Ikkinchi buyruq nom emas, jarayon ID sini chiqaradi, shuning uchun ikkala natijani ID bo'yicha birlashtiring. Siz qidirayotgan qator uzoq manzili o'yin xizmatiga tegishli qator, va uni egallagan jarayon sizning qoidangiz nomlashi kerak bo'lgan bajariladigan fayl.

Linux'da xuddi shu savol har bir soket turi uchun bitta buyruq talab qiladi, va ikkalasini tekshirishga arziydi, chunki o'yin ulanishi UDP bo'lishi mumkin, qolgan hamma narsa TCP bo'lganda:

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

Agar o'yin konteyner yoki moslik qatlamida ishlasa, topgan jarayoningiz siz o'rnatgan binar emas, shim bo'lishi mumkin. Bunday holda muhim identifikator mijoz ko'radigan narsa, bu shim yo'li bo'lishi mumkin, va asl faylni qancha tahrirlasangiz ham unga ta'sir qilmaydi.

Mijozingiz qo'llab-quvvatlaydigan identifikatorni moslashtiring

Biror narsa qo'shishdan oldin istisno qoidasi bo'yicha mijoz hujjatlarini o'qing. Uchta odatiy model turlicha harakat qiladi, va ulardan biri tuzoqdir.

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

Yo'l qoidalari eng aniq va eng mo'rt. Bajariladigan faylni ko'chiradigan ishga tushirgich yangilanishi qoidani endi ishlamaydigan faylga ko'rsatib qoldiradi, va alomat hech narsa ko'rinmasdan o'zgarmaganda qaytadi. Paket qoidalari bundan omon qoladi, va ular siz hech qachon o'ylamagan yordamchi jarayonlarni ham jimgina qamrab olishi mumkin, bu yordamchiga qarab qulay yoki xavotirli.

Mijoz nima qo'llab-quvvatlasa ham, topgan har bir bajariladigan fayl uchun yozuv qo'shmang. Bitta sessiya ishlagunga qadar sinov va xato bilan tuzilgan ro'yxatni ko'rib chiqish mumkin emas, va u aloqasiz dasturiy ta'minot uchun istisnolarni jimgina to'playdi. Topgan jarayonni nomlang va u nima uchun ekanini yozib qo'ying.

O'yinda sinab ko'ring, yuklab olishda emas

Ishga tushirgichning yuklab olish tezligi mumkin bo'lgan eng yomon sinov, chunki u allaqachon istisno qilingan jarayonni aynan ishga soladi. Muvaffaqiyatsiz bo'lgan narsadan foydalaning, va o'yinning o'z ish faoliyati displeyi o'rniga yo'lni tekshiring:

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

Birinchi buyruq o'yin serveri hal qilgan manzilni talab qiladi, buni o'yinning ulanish jurnali yoki mijozingiz berishi mumkin. Agar yo'l jismoniy interfeysni nomlasa, qoida ishlayapti. Ikkinchisi sessiya umuman bor-yo'qligini ko'rsatadi, bu “istisno qilingan, lekin server o'chirilgan” va “istisno qilinmagan” holatlarini ajratadi.

Sinov paytida hudud va kirish tarmog'ini qat'iy saqlang. Har bir urinishda boshqa ma'lumot markaziga tushadigan o'yin turli manzillar hosil qiladi, va siz qoidani tekshirish o'rniga harakatlanuvchi nishonni quvib yurasiz. Bir xil manzil bilan ikki yugurish turli manzillar bilan o'ntadan qimmatroq.

Keyingi yangilanishdan keyin yana tekshiring

Yo'lga asoslangan har qanday qoidaning yamoq tsikllarida o'lchanadigan amal qilish muddati bor. O'yin bir oydan keyin istisnoga rioya qilishni to'xtatganda, birinchi tekshiradigan narsa bajariladigan fayl ko'chganmi, ikkinchisi uning yonida yangi yordamchi jarayon paydo bo'lganmi.

Bitta mijoz hujjatlashtirgan ilovalarni istisno qilish modeli bu qoidalar qanday tavsiflanishiga oqilona havola, garchi tafsilotlar mahsulotlar orasida farq qilsa. O'zingiznikini o'qing, ishlatgan identifikatorni yozib oling, va sanani belgilang. Aynan shu yozuv keyingi safar ishga tushirgich yangilanish chiqarganda jumboqni besh daqiqalik tuzatishga aylantiradi.

Agar mijoz kerakli chegarani umuman ifodalay olmasa, tasdiqlangan kengroq siyosat hujjatlashtirilmagan istisnolar uyumidan yaxshiroq. Keng va tushunilgan tor va noto'g'ridan ustun, ayniqsa tor versiya hamma kuchda deb ishonadigan narsa bo'lsa.

O'xshash maqolalar