Ir-relay tal-VPN jieqaf jaċċetta SSH: limiti tad-deskritturi tal-fajl
It-traffiku tal-mina jibqa’ għaddej waqt li r-relay socat warajh jirrifjuta sessjonijiet ġodda. Segwi t-triq, imbagħad aqra l-limitu ereditarju fuq il-PID ħaj.
Handshake ta’ WireGuard għadu jitlesta, il-peer għadu juri endpoint riċenti, u xorta waħda sessjoni SSH ġdida permezz tar-relay warajh tiddendel mingħajr banner. Din il-kombinazzjoni tbiegħed mill-mina u tmur lejn il-proċess li jaċċetta s-socket. Relay bħal socat ipoġġi fit-triq tal-applikazzjoni bil-baġit tad-deskritturi tiegħu, bit-tfal tiegħu u bil-limiti ereditati tiegħu. Il-mixja hawn taħt tibda fil-klijent u tieqaf fl-ewwel komponent li ma jistax jiftaħ socket ieħor.
Segwi t-triq qabel ma tibdel numru
Segwi talba waħda li falliet minflok tirraġuna dwar il-mina kollha. Il-klijent jikteb fil-mina, id-daemon tal-VPN jiddeċifra u jirrotta, u r-relay jaċċetta fuq in-naħa l-oħra. Kull pass jikkonsma deskritturi, u dak li normalment jispiċċa huwa l-aħħar.
Ibda b’talba li tista’ tirriproduċi u kejjel il-ħin tagħha. Jekk il-handshake TCP jitlesta imma ma tasal l-ebda banner tal-applikazzjoni, ir-relay ħa s-socket u mbagħad waqaf fi tifel jew fir-riġel upstream tiegħu. Jekk il-handshake innifsu qatt ma jitlesta, il-kawża hija routing, firewall jew stat tas-semmiegħ, mhux limitu tad-deskritturi. Innota liema miż-żewġ forom osservajt, għax jindikaw proċessi differenti.
Għodd ukoll il-qabżiet li jdopletaw ix-xogħol. Semmiegħ li jiftaq jgħaddi kull socket aċċettat lil tifel li jżomm il-kopja tiegħu stess, għalhekk it-total veru huwa proprjetà tas-siġra kollha, mhux tal-ġenitur biss.
Aqra l-limitu li r-relay wiret
L-uniku limitu li jgħodd jappartjeni lill-proċess li qed jaħdem, u ġie stabbilit minn dak li nieda dak il-proċess. It-tip ta’ ulimit -n f’shell jiddeskrivi s-shell. Staqsi lill-maniġer tas-servizz x’applika, imbagħad ikkonferma fuq il-PID.
systemctl show -p MainPID -p LimitNOFILE vpn-relay.service
cat /proc/$(systemctl show -p MainPID --value vpn-relay.service)/limits
Il-fajl limits jistampa l-limiti artab u iebes kif jarahom il-proċess. Valur artab baxx taħt valur iebes ġeneruż ifisser li d-daemon jista’ jgħolli l-limitu tiegħu stess, u xi wħud jagħmlu dan fil-bidu; valuri artab indaqs u baxxi jfissru li l-fajl unit huwa s-sors.
Id-drop-ins jitgħabbu f’ordni lessikali u l-fajls aktar tard jirbħu, għalhekk systemctl cat vpn-relay.service huwa l-veduta awtorevoli ta’ dak li japplika. L-editjar ta’ fajl li l-maniġer qatt ma jaqra huwa l-iktar raġuni komuni għaliex numru mgħolli ma jkollu l-ebda effett.
Issepara l-konkorrenza stabbli mill-istat miżmum
Żewġ proċessi jistgħu jilħqu l-istess limitu għal raġunijiet mhux relatati, u l-mediċini jvarjaw. Id-domanda li ssegwi sessjonijiet konkorrenti utli hija kwistjoni ta’ kapaċità. It-tkabbir li jkompli wara li jispiċċa x-xogħol huwa tnixxija jew sett ta’ sessjonijiet li ħadd ma għalaq.
Kejjel fil-mistrieħ, fil-quċċata normali tiegħek, u għal darba oħra ftit minuti wara li tieqaf it-tagħbija. L-għadd ta’ entrati miftuħa b’ls /proc/PID/fd | wc -l kontra l-limitu artab jgħidlek il-vojt, u għadd wieħed jew tnejn taħt il-limitu huwa waqfa iebsa, mhux triq bil-mod.
Meta l-għadd jirrifjuta jinżel, ħares lejn l-istati tas-sockets minflok it-totali. Deskritturi li jinsabu f’CLOSE_WAIT ifissru li l-peer għalaq u n-naħa tiegħek qatt ma għamlet hekk, li huwa difett fiċ-ċiklu tal-ħajja tal-applikazzjoni li limitu akbar biss jipposponi. Illimita wkoll il-mudell tat-tfal: relay li jiftaq mingħajr limitu fuq tfal konkorrenti jeżawrixxi deskritturi, slots tal-proċess u memorja flimkien.
Ivverifika l-valur il-ġdid fuq il-proċess ħaj
Wara li teditja l-unit, erġa’ għabbi l-maniġer u erġa’ ibda s-servizz, għax tagħbija mill-ġdid waħedha qatt ma tissostitwixxi limiti li proċess li qed jaħdem diġà wiret. Ivverifika fuq il-proċess li verament iservi t-traffiku.
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
Il-linja awk tirritorna l-par il-ġdid; jekk għadha turi l-qadim, id-drop-in li editjajt mhuwiex dak li qed jitgħabba. L-għadd ta’ ss huwa l-verifika tat-tagħbija tiegħek, għalhekk iftaħ l-għadd ta’ sessjonijiet li tistenna u ara kif jogħla. Għadd li jkompli jogħla wara li dawk is-sessjonijiet jingħalqu jfisser li l-limitu qatt ma kien il-problema kollha.
Twissija waħda takkumpanja kull żieda kbira. Applikazzjonijiet li jistħarrġu b’select() ma jistgħux josservaw deskritturi fuq FD_SETSIZE, li huwa 1024 fuq builds tipiċi, għalhekk limitu mgħolli lil hinn minn dak jista’ jipproduċi fallimenti li jidhru mhux relatati. Ir-referenza tal-eżekuzzjoni ta’ systemd ġġorr l-istess twissija għas-servizzi li tniedi.
Żomm it-tnedija mill-ġdid ’il bogħod mid-disponibbiltà tal-mina
It-tnedija mill-ġdid tar-relay twaqqa’ s-sessjonijiet attivi tiegħu, u dak huwa avveniment separat mill-waqgħa tal-VPN. Irranġa l-bidla sabiex il-mina tibqa’ fuq waqt li r-relay idur, u wissa lil kull min is-sessjoni twila tiegħu taqsamha.
Ir-rollback huwa l-fajl unit preċedenti flimkien ma’ tnedija mill-ġdid oħra, u dak il-fajl jibqa’ f’postu sakemm il-valur il-ġdid jgħaddi minn ġurnata xogħol. Imbagħad agħlaq iċ-ċiklu bit-talba li oriġinarjament falliet: sessjoni SSH ġdida waħda permezz tar-relay, trasferiment wieħed twil biżżejjed biex jgħodd, u għadd ta’ deskritturi li jerġa’ lura għal-livell tal-mistrieħ tiegħu.