VPN errepideak SSH onartzeari uzten dio: fitxategi deskriptoreen mugak
Tunelaren trafikoak isurtzen jarraitzen du, atzeko socat errepideak saio berriak ukatzen dituen bitartean. Jarraitu bidea eta gero irakurri heredatutako muga PID bizian.
WireGuard-en eskuko keinua oraindik osatzen da, peer-ak oraindik endpoint berria erakusten du, eta hala ere, atzeko errepidearen bidezko SSH saio berria zintzilik geratzen da banderarik gabe. Konbinazio horrek tunelatik urrun eta socket-a onartzen duen prozesura seinalatzen du. socat bezalako errepide bat aplikazioaren bidean esertzen da, bere descriptor aurrekontuarekin, bere semeekin eta heredatutako mugekin. Beheko ibilaldia bezeroan hasten da eta beste socket bat ireki ezin duen lehen osagaian gelditzen da.
Jarraitu bidea zenbaki bat aldatu aurretik
Jarraitu huts egindako eskaera bat tunel osoari buruz arrazoitu beharrean. Bezeroak tunelera idazten du, VPN daemonak deszifratu eta bideratzen du, eta errepideak beste aldean onartzen du. Urrats bakoitzak descriptorrak kontsumitzen ditu, eta normalean agortzen dena azkena da.
Hasi erreproduzitu dezakezun eskaera batekin eta neur ezazu bere denbora. TCP eskuko keinua osatzen bada baina aplikazioaren banderarik iristen ez bada, errepideak socket-a hartu eta gero ume batean edo bere gorako hankean trabatu zen. Eskuko keinua bera inoiz osatzen ez bada, arrazoia bideratzea, suebakia edo entzulearen egoera da, ez descriptorren sabaia. Idatzi zein forma ikusi duzun, prozesu desberdinak seinalatzen dituztelako.
Zenbatu lana bikoizten duten jauziak ere. Adarkatzen den entzule batek onartutako socket bakoitza bere kopia mantentzen duen ume bati ematen dio, beraz benetako guztizkoa zuhaitz osoaren propietatea da, ez gurasoarena soilik.
Irakurri errepideak heredatu zuen muga
Garrantzizkoa den muga bakarra exekutatzen ari den prozesuarena da, eta prozesu hori abiarazi zuenak finkatu zuen. Shell batean ulimit -n idaztea shell-a deskribatzen du. Galdetu zerbitzu-kudeatzaileari zer aplikatu zuen, eta gero egiaztatu PID-ean.
systemctl show -p MainPID -p LimitNOFILE vpn-relay.service
cat /proc/$(systemctl show -p MainPID --value vpn-relay.service)/limits
limits fitxategiak goiko eta beheko sabaia inprimatzen ditu prozesuak ikusten dituen bezala. Balio bigun baxua balio gogor eskuzabal baten azpian egoteak daemonak bere sabaia igo dezakeela esan nahi du, eta batzuek abiaraztean egiten dute; balio bigun berdin baxuek unitate-fitxategia dela iturria esan nahi dute.
Drop-in fitxategiak ordena lexikografikoan kargatzen dira eta geroagoko fitxategiek irabazten dute, beraz systemctl cat vpn-relay.service da aplikatzen denaren ikuspegi autorizatua. Kudeatzaileak inoiz irakurtzen ez duen fitxategi bat editatzea da igotako zenbaki batek eraginik ez izateko arrazoi ohikoena.
Bereizi konkurrentzia egonkorra atxikitako egoeratik
Bi prozesuk sabaia bera jo dezakete arrazoi ezberdinengatik, eta erremedioak desberdinak dira. Saio konkurrente erabilgarriak jarraitzen dituen eskaria gaitasun-kontua da. Lana amaitu ondoren jarraitzen duen hazkundea ihes bat edo inork itxi ez duen saio multzo bat da.
Neur ezazu atsedenean, zure ohiko gailurrean eta berriro karga gelditu eta minutu batzuetara. Irekitako sarrerak ls /proc/PID/fd | wc -l erabiliz muga bigunaren aurka zenbatzeak tartea esaten dizu, eta sabaia baino bat edo bi beherago dagoen zenbaketa geldialdi gogorra da, ez bide motela.
Zenbaketak jaisteari uko egiten dionean, begiratu socket egoerak, ez guztizkoak. CLOSE_WAIT-ean eserita dauden descriptorrek peer-ak itxi zuela eta zure aldeak inoiz ez zuela esan nahi dute, eta hori aplikazioaren bizitza-zikloaren akatsa da, muga handiago batek soilik atzeratzen duena. Mugatu umeen eredua ere: ume konkurrenteetan mugarik ez duen errepide adarkatzaile batek descriptorrak, prozesu zirrikituak eta memoria batera agortzen ditu.
Egiaztatu balio berria prozesu bizian
Unitatea editatu ondoren, berriz kargatu kudeatzailea eta berrabiarazi zerbitzua, berriz kargatzeak bakarrik ez baitu inoiz ordezkatzen exekutatzen ari den prozesu batek jada heredatu dituen mugak. Egiaztatu trafikoa benetan zerbitzatzen duen prozesuan.
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 lerroak pare berria itzultzen du; oraindik zaharra erakusten badu, editatu duzun drop-in-a ez da kargatzen dena. ss zenbaketa zure karga-egiaztapena da, beraz ireki espero duzun saio kopurua eta ikusi igotzen. Saio horiek itxi ondoren igotzen jarraitzen duen zenbaketak muga inoiz arazo osoa ez zela esan nahi du.
Edozein gorakada handirekin batera doa ohartarazpen bat. select() erabiliz inkestatzen duten aplikazioek ezin dituzte FD_SETSIZE gaineko descriptorrak behatu, hau da 1024 eraikin tipikoetan, beraz haratago igotako sabai batek erlaziorik gabeko itxurako hutsegiteak sor ditzake. Abisu bera agertzen da systemd exekuzioaren erreferentzian abiarazten dituen zerbitzuentzat.
Eduki berrabiarazia tunelaren erabilgarritasunetik urrun
Errepidea berrabiarazteak bere saio aktiboak botatzen ditu, eta hori VPN-a erortzearen gertaera bereizia da. Antolatu aldaketa tunela zutik egon dadin errepidea zikloa egiten duen bitartean, eta ohartarazi bere saio luzea zeharkatzen duen edonori.
Atzera egitea aurreko unitate-fitxategia gehi beste berrabiarazte bat da, eta fitxategi hori lekuan geratzen da balio berriak lanegun bat gainditu arte. Gero itxi begizta jatorriz huts egin zuen eskaerarekin: SSH saio berri bat errepidearen bidez, nahikoa luzea den transferentzia bat, eta atseden mailara itzultzen den descriptor zenbaketa.