systemd inasimamisha huduma ya VPN: linganisha Type= na mteja
Kitengo cha VPN wakati wa kuwasha huwa hai wakati Type= hailingani na maisha ya mteja. Linganisha aina, rekebisha umiliki na panga huduma baada ya handaki.
Vitengo vinaweza kuonekana sawa, systemctl start inaweza kuripoti mafanikio, na sekunde kumi baadaye huduma inakaa bila kufanya kazi. Au inaanza upya kila nusu dakika hadi kikomo cha kuanza kikisimamishe. Tabia zote mbili si hitilafu ya mtandao: kitengo kinaeleza maisha ya mchakato ambayo hayalingani na kile mteja anachofanya kwa kweli. Mteja anaweza kufanya fork na kutoka, au kusanidi kikao na kutoka mara moja.
Kwa nini kitengo huwa bila kufanya kazi sekunde chache baada ya kuanza kwa mafanikio
systemd hukisia hali kutoka kwa mchakato ambao yenyewe ulianza, kwa hivyo Type= ni dai kuhusu mchakato huo, si nyaraka. Kwa Type=simple kitengo huhesabiwa kama kinachofanya kazi wakati amri inaendesha na huwa bila kufanya kazi inaporudi. Kwa hivyo mteja anayekabidhi muunganisho kwa msaidizi na kutoka huonekana kama kuanguka, hata handaki likiwa limewashwa. Kisha jarida huonyesha mtindo wa kuanza na kusimama ambao husomwa kama binarī yenye hitilafu.
Soma aina ya kitengo kando ya tabia ya mteja kabla ya kugusa usanidi wa mtandao.
Chagua aina inayolingana na mteja
Mifumo miwili inashughulikia CLI nyingi za wauzaji: amri inayosanidi kikao na kutoka, na amri inayofanya fork ya msaidizi kabla ya kurudi. Kila moja inahitaji umbo tofauti la kitengo.
[Service]
Type=oneshot
RemainAfterExit=true
ExecStart=/usr/bin/protonvpn-cli connect -f
ExecStop=/usr/bin/protonvpn-cli disconnectoneshot pamoja na RemainAfterExit=true huweka kitengo kinachofanya kazi baada ya amri kurudi, jambo ambalo linalingana na mtindo wa sanidi na toka, na amri ya kusimamisha humpa huduma kufungwa safi. Mteja anayefanya fork huhifadhi umbo lile lile lakini anahitaji Type=forking ili systemd ifuate mtoto. Weka Restart=on-failure, RestartSec=30 na StartLimitBurst yenye kikomo, ili kukatika kwa mtoa huduma kusiongezeke kuwa mzunguko wa kuanza upya unaozika hitilafu.
Kamwe usiruhusu mteja anayesimamiwa kuwa daemon
Wasimamizi nje ya systemd hugonga ukuta ule ule. Skripti ya uendeshaji ya runit inayoanzisha mteja aliyefanywa daemon hurudi kwa msimamizi mara moja, ambaye husoma kurudi huko kama kuanguka na kuanzisha nakala nyingine. Kila msimamizi hutarajia kumiliki mchakato wa mbele, kama sshd -D inavyobaki mbele. Ondoa bendera ya daemon kwa amri zinazosimamiwa na uache msimamizi afanye kazi ya nyuma. Skripti za kufunika zinazorudi kabla handaki kuwepo husababisha mkanganyiko ule ule.
Mchakato unaojitenga na wewe mwenyewe hauonekani kwa kila kitu kilichopaswa kuulinda.
Kikao kinaisha na kinachukua handaki pamoja nacho
Kikao cha eneo-kazi kinamiliki mteja kinachomwanza. Maliza kuingia na basi la kikao hupotea, likichukua handaki pamoja nalo, jambo linaloeleza kwa nini muunganisho wa mteja wa picha mara nyingi huanguka dirisha la mwisho linapofungwa. Seva zinapaswa kutumia kitengo cha mfumo au wasifu wa NetworkManager unaojipandisha wenyewe. Kitengo cha mtumiaji kina maana tu wakati handaki linapaswa kuisha na kuingia, kwa hivyo kifunge kwenye lengo la kikao cha picha na useme hivyo katika maelezo yake.
Mtumiaji wa huduma ni nusu nyingine ya tatizo lile lile. Ufunguo unaomilikiwa na root wenye hali 0600 hausomeki kwa kitengo kinachoendeshwa na akaunti nyingine, vyovyote vile sudo ilivyofanikisha kwenye shell yako.
systemctl cat openvpn-server@work
sudo chown -R openvpn:network /etc/openvpn/server
sudo find /etc/openvpn -type f -perm /077 -lsPanga tegemezi baada ya anwani kuwepo
Wakati daemon inajifunga kwa anwani ya handaki ambayo bado haijaundwa, hutoka na Cannot assign requested address. Suluhisho ni upangaji wazi, si mzunguko wa kujaribu tena.
[Unit]
After=network.target [email protected]
Requires=sys-devices-virtual-net-wg0.deviceAfter= hupanga kazi, wakati Requires= kwenye kitengo cha kifaa hufunga tegemezi na uwepo wa kiolesura, jambo ambalo ni imara zaidi kuliko kusubiri lengo la mtandao peke yake. Pakia upya msimamizi baada ya kuhariri na uanzishe upya huduma tegemezi, kisha soma jarida lake badala ya kudhani mpangilio ulifanya kazi. Tuma matokeo ya mteja kwenye jarida kwa StandardOutput=journal au chaguo la kumbukumbu, kwa sababu mteja anayesimamiwa anayeandika kwenye faili ambalo hakuna anayefungua huonekana sawa kabisa na lile ambalo halikuwahi kuanza.
Kisha washa upya mara moja na uthibitisha kuwa kitengo kinachofanya kazi baada ya kifaa cha handaki kuonekana. Marekebisho yaliyothibitishwa kwa systemctl start peke yake hayakujaribu mpangilio wa kuwasha ambao ulipaswa kurekebishwa.