WireGuard qo'l siqishi hali ham yakunlanadi, peer hali ham yaqin endpoint ko'rsatadi, lekin orqasidagi reley orqali yangi SSH sessiyasi bannersiz osilib qoladi. Bu birikma tunneldan uzoqda, socketni qabul qiladigan jarayonga ishora qiladi. socat kabi reley o'z deskriptor byudjeti, o'z bolalari va o'z meros cheklovlari bilan ilova yo'lida o'tiradi. Quyidagi yurish mijozdan boshlanadi va yana bir socket ocha olmaydigan birinchi komponentda to'xtaydi.

Raqamni o'zgartirishdan oldin yo'lni kuzatib boring

Butun tunnel haqida fikr yuritish o'rniga bitta muvaffaqiyatsiz so'rovni kuzatib boring. Mijoz tunnelga yozadi, VPN daemoni shifrni ochadi va yo'naltiradi, reley esa narigi tomonda qabul qiladi. Har bir qadam deskriptor sarflaydi va odatda tugaydigani oxirgisi.

Qayta hosil qila oladigan so'rovdan boshlang va uning vaqtini o'lchang. Agar TCP qo'l siqishi yakunlanib, lekin ilova banneri kelmasa, reley socketni oldi va keyin bolada yoki o'zining yuqori oyog'ida qotib qoldi. Agar qo'l siqishning o'zi hech qachon yakunlanmasa, sabab yo'naltirish, firewall yoki tinglovchi holati, deskriptor shifti emas. Ikki shakldan qaysinisini ko'rganingizni yozib qo'ying, chunki ular turli jarayonlarga ishora qiladi.

Ishni takrorlaydigan sakrashlarni ham sanang. Shoxlanuvchi tinglovchi har bir qabul qilingan socketni o'z nusxasini saqlaydigan bolaga beradi, shuning uchun haqiqiy jami butun daraxtning xususiyati, faqat ota-onaning emas.

Reley meros olgan cheklovni o'qing

Muhim bo'lgan yagona cheklov ishlab turgan jarayonga tegishli va uni shu jarayonni ishga tushirgan narsa belgilagan. Shell ichida ulimit -n yozish shellni tasvirlaydi. Xizmat menejeridan nima qo'llaganini so'rang, so'ng PIDda tasdiqlang.

systemctl show -p MainPID -p LimitNOFILE vpn-relay.service
cat /proc/$(systemctl show -p MainPID --value vpn-relay.service)/limits

limits fayli yumshoq va qattiq shiftlarni jarayon ko'rganidek chop etadi. Saxiy qattiq qiymat ostidagi past yumshoq qiymat daemonga o'z shiftini ko'tarishga ruxsat borligini bildiradi va ba'zilari buni ishga tushishda qiladi; teng past qiymatlar manba unit fayli ekanini bildiradi.

Drop-in fayllar lug'at tartibida yuklanadi va keyingi fayllar yutadi, shuning uchun systemctl cat vpn-relay.service nima qo'llanishining vakolatli ko'rinishidir. Menejer hech qachon o'qimaydigan faylni tahrirlash ko'tarilgan raqamning ta'siri bo'lmasligining eng keng tarqalgan sababidir.

Barqaror parallellikni saqlanadigan holatdan ajrating

Ikki jarayon aloqasiz sabablarga ko'ra bir xil shiftga urilishi mumkin va choralar farq qiladi. Foydali bir vaqtdagi sessiyalarni kuzatadigan talab quvvat masalasidir. Ish tugagach davom etadigan o'sish oqim yoki hech kim yopmagan sessiyalar to'plamidir.

Bo'sh holatda, odatdagi cho'qqingizda va yuk to'xtagandan bir necha daqiqa o'tib yana o'lchang. ls /proc/PID/fd | wc -l bilan ochiq yozuvlarni yumshoq cheklovga qarshi sanash sizga bo'shliqni aytadi, shiftdan bir yoki ikki past raqam sekin yo'l emas, qattiq to'xtashdir.

Raqam pasayishdan bosh tortsa, jamilar emas, socket holatlariga qarang. CLOSE_WAIT da o'tirgan deskriptorlar peer yopganini, sizning tomoningiz esa hech qachon yopmaganini bildiradi, bu ilova hayot tsiklining nuqsoni va kattaroq cheklov uni faqat kechiktiradi. Bolalar modelini ham cheklang: bir vaqtdagi bolalarga shift qo'ymagan shoxlanuvchi reley deskriptorlar, jarayon o'rinlari va xotirani birga tugatadi.

Yangi qiymatni tirik jarayonda tekshiring

Unit faylini tahrirlagandan keyin menejerni qayta yuklang va xizmatni qayta ishga tushiring, chunki faqat qayta yuklash ishlab turgan jarayon meros olgan cheklovlarni hech qachon almashtirmaydi. Trafikni haqiqatda xizmat qilayotgan jarayonda tekshiring.

systemctl daemon-reload
systemctl restart vpn-relay.service
awk '/Max open files/ {print}' /proc/$(systemctl show -p MainPID --value vpn-relay.service)/limits
ss -tnp state established '( sport = :2222 )' | wc -l

awk satri yangi juftlikni qaytaradi; agar u hali ham eskisini ko'rsatsa, siz tahrirlagan drop-in yuklanayotgani emas. ss soni sizning yuk tekshiruvingiz, shuning uchun kutilgan sessiyalar sonini oching va uning ko'tarilishini kuzating. O'sha sessiyalar yopilgandan keyin ham ko'tarilib boradigan son cheklov hech qachon butun muammo bo'lmaganini bildiradi.

Har qanday katta o'sish bilan bitta ogohlantirish keladi. select() bilan so'rov yuboradigan ilovalar FD_SETSIZE dan yuqori deskriptorlarni kuzata olmaydi, bu odatiy buildlarda 1024, shuning uchun undan yuqori ko'tarilgan shift aloqasiz ko'rinadigan nosozliklar keltirib chiqarishi mumkin. systemd ijro ma'lumotnomasi o'zi ishga tushirgan xizmatlar uchun xuddi shu ogohlantirishni olib yuradi.

Qayta ishga tushirishni tunnel mavjudligidan uzoq tuting

Releyni qayta ishga tushirish uning faol sessiyalarini tashlaydi va bu VPN tushishidan alohida hodisa. O'zgarishni reley aylanayotganda tunnel yuqorida qoladigan qilib tartiblang va uzoq sessiyasi uni kesib o'tadigan har kimni ogohlantiring.

Orqaga qaytarish oldingi unit fayl va yana bitta qayta ishga tushirishdir, va bu fayl yangi qiymat bir ish kuni o'tmaguncha joyida qoladi. So'ng muvaffaqiyatsiz bo'lgan so'rov bilan halqani yoping: reley orqali bitta yangi SSH sessiyasi, muhim bo'lish uchun yetarlicha uzoq bitta uzatish va bo'sh darajaga qaytadigan deskriptor soni.

O'xshash maqolalar