Relay ya VPN inaacha kukubali SSH: mipaka ya vifafanuzi vya faili
Trafiki ya handaki inaendelea kutiririka huku relay ya socat nyuma yake ikikataa vikao vipya. Fuatilia njia, kisha soma kikomo kilichorithiwa kwenye PID hai.
Handshake ya WireGuard bado inakamilika, peer bado inaonyesha endpoint ya hivi karibuni, lakini kikao kipya cha SSH kupitia relay nyuma yake kinaning'inia bila bango lolote. Mchanganyiko huo unaelekea mbali na handaki na kuelekea mchakato unaokubali socket. Relay kama socat inakaa katika njia ya programu ikiwa na bajeti yake ya vifafanuzi, watoto wake na mipaka yake iliyorithiwa. Safari ya chini inaanza kwa mteja na kuishia kwenye kipengele cha kwanza kisichoweza kufungua socket nyingine.
Fuatilia njia kabla ya kubadilisha nambari
Fuatilia ombi moja lililoshindwa badala ya kufikiri kuhusu handaki zima. Mteja anaandika ndani ya handaki, daemon ya VPN inafungua usimbaji na kuelekeza, na relay inakubali upande wa pili. Kila hatua inatumia vifafanuzi, na kile kinachoisha kwa kawaida ni cha mwisho.
Anza na ombi unaloweza kuzalisha tena na upime muda wake. Ikiwa handshake ya TCP inakamilika lakini bango la programu haliji, relay ilichukua socket kisha ikakwama ndani ya mtoto au kwenye mguu wake wa juu. Ikiwa handshake yenyewe haikamiliki kamwe, sababu ni uelekezaji, firewall au hali ya msikilizaji, sio dari ya vifafanuzi. Andika ni umbo gani kati ya mawili uliona, kwa sababu zinaelekeza kwenye michakato tofauti.
Hesabu pia hatua zinazorudia kazi. Msikilizaji anayegawanyika hukabidhi kila socket iliyokubaliwa kwa mtoto anayehifadhi nakala yake, kwa hiyo jumla halisi ni sifa ya mti mzima, sio ya mzazi peke yake.
Soma kikomo ambacho relay ilirithi
Kikomo pekee kinachojalisha ni cha mchakato unaoendelea, na kimewekwa na kile kilichoanzisha mchakato huo. Kuandika ulimit -n kwenye shell kunaelezea shell. Muulize meneja wa huduma alichotumia, kisha thibitisha kwenye PID.
systemctl show -p MainPID -p LimitNOFILE vpn-relay.service
cat /proc/$(systemctl show -p MainPID --value vpn-relay.service)/limits
Faili ya limits inachapisha dari laini na ngumu kama mchakato unavyoziona. Thamani laini ya chini chini ya thamani ngumu ya ukarimu inamaanisha daemon inaruhusiwa kuinua dari yake, na wengine hufanya hivyo wakati wa kuanza; thamani laini sawa za chini zinamaanisha faili ya unit ndio chanzo.
Drop-in hupakiwa kwa mpangilio wa kamusi na faili za baadaye hushinda, kwa hiyo systemctl cat vpn-relay.service ni mwonekano wenye mamlaka wa kile kinachotumika. Kuhariri faili ambayo meneja haisomi kamwe ndio sababu ya kawaida zaidi ya nambari iliyoinuliwa kutokuwa na athari.
Tenganisha usambamba thabiti na hali iliyobakizwa
Mchakato miwili inaweza kufikia dari moja kwa sababu zisizohusiana, na tiba zinatofautiana. Mahitaji yanayofuatilia vikao vya wakati mmoja vyenye manufaa ni swali la uwezo. Ukuaji unaoendelea baada ya kazi kuisha ni uvujaji au seti ya vikao ambavyo hakuna aliyefunga.
Pima wakati wa utulivu, kwenye kilele chako cha kawaida na tena dakika chache baada ya mzigo kusimama. Kuhesabu maingizo yaliyofunguliwa kwa ls /proc/PID/fd | wc -l dhidi ya kikomo laini kunakuambia pengo, na hesabu moja au mbili chini ya dari ni kusimama kwa nguvu sio njia ya polepole.
Hesabu inapokataa kupungua, angalia hali za socket badala ya jumla. Vifafanuzi vilivyokaa katika CLOSE_WAIT vinamaanisha peer alifunga na upande wako haukufunga kamwe, ambayo ni kasoro ya mzunguko wa maisha ya programu ambayo kikomo kikubwa huiahirisha tu. Weka kikomo pia kwa mfano wa watoto: relay inayogawanyika bila kikomo cha watoto wa wakati mmoja humaliza vifafanuzi, nafasi za mchakato na kumbukumbu pamoja.
Thibitisha thamani mpya kwenye mchakato hai
Baada ya kuhariri unit, pakia upya meneja na uanzishe upya huduma, kwa sababu upakiaji upya peke yake haubadilishi kamwe mipaka ambayo mchakato unaoendelea tayari umerithi. Thibitisha kwenye mchakato ambao kwa kweli unahudumia trafiki.
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
Mstari wa awk unarudisha jozi mpya; ikiwa bado unaonyesha la zamani, drop-in uliyohariri sio ile inayopakiwa. Hesabu ya ss ni ukaguzi wako wa mzigo, kwa hiyo fungua idadi ya vikao unayotarajia na uiangalie ikipanda. Hesabu inayoendelea kupanda baada ya vikao hivyo kufungwa inamaanisha kikomo hakikuwa tatizo zima kamwe.
Onyo moja huandamana na kila ongezeko kubwa. Programu zinazopiga kura kwa select() haziwezi kufuatilia vifafanuzi zaidi ya FD_SETSIZE, ambayo ni 1024 kwenye miundo ya kawaida, kwa hiyo dari iliyoinuliwa kupita hapo inaweza kuzalisha kushindwa kunakoonekana hakuhusiani. Rejea ya utekelezaji ya systemd hubeba onyo lilelile kwa huduma inazozianzisha.
Weka uanzishaji upya mbali na upatikanaji wa handaki
Kuanzisha upya relay huangusha vikao vyake hai, na hilo ni tukio tofauti na VPN kuanguka. Panga mabadiliko ili handaki ibaki juu wakati relay inazunguka, na uonye mtu yeyote ambaye kikao chake cha muda mrefu kinaipita.
Kurudisha nyuma ni faili ya unit iliyopita pamoja na uanzishaji mwingine upya, na faili hiyo inabaki mahali pake hadi thamani mpya idumu siku ya kazi. Kisha funga mzunguko na ombi lililoshindwa awali: kikao kimoja kipya cha SSH kupitia relay, uhamisho mmoja mrefu wa kutosha kuwa na maana, na hesabu ya vifafanuzi inayorudi kwenye kiwango chake cha utulivu.