Erbgħin fajl .ovpn għal pajjiż wieħed jaslu mingħand fornitur, u l-pjan jidher ovvju: ikkopja wieħed każwali fil-post tiegħu, imbagħad ibda t-tunnel. Miktub bħala pipeline ġewwa ExecStart, dak il-pjan imut fil-boot b’kod tal-istat li ma jispjega xejn. Il-fajl tal-unit mhuwiex skript, u t-tiswija hija jew li ġġib qoxra b’mod espliċitu jew li tieqaf tagħżel fajls għal kollox.

Is-sintomu: unit li jibda u minnufih imut

L-istat juri li s-servizz falla fi frazzjoni ta’ sekonda, u l-linja tal-journal issemmi kmand li l-ebda qoxra ma kienet se tirċievi qatt. Xejn dwar it-tunnel ma jidher, għax it-tunnel qatt ma beda.

Li taqra l-linja tal-kmand eżatta mill-journal hija l-eħfef triq biex tikkonferma dan. systemd jtenni dak li eżegwixxa, u l-istring se juri l-karattri tal-pipeline bħala argumenti litterali u mhux bħala operaturi.

Għaliex ExecStart ma jistax iħaddem pipeline

systemd jaqsam il-linja tal-kmand huwa stess, japplika l-kwotazzjoni u s-sostituzzjoni tal-varjabbli tiegħu, u mbagħad jeżegwixxi r-riżultat direttament. Pipes, ridirezzjoni, espansjoni tal-glob minn qoxra u sostituzzjoni tal-kmand sempliċement mhumiex parti minn dik il-grammatika. Din hija għażla tad-disinn u mhux nuqqas: unit jgħid b’mod dikjarattiv x’għandu jiġi eżegwit, u l-loġika tal-qoxra tappartjeni lil skript li l-unit isejjaħ. Iż-żewġ tiswijiet joħorġu minn dan, u l-ebda waħda ma teħtieġ li l-unit jingħata aktar privileġġi.

Dan jispjega wkoll il-kodiċi tal-ħruġ qarrieqi. L-ewwel argument jiġi trattat bħala l-binarju, għalhekk linja mħarbta tfalli qabel ma jseħħ xi parti mil-loġika tiegħek.

Agħmel l-għażla f’ExecStartPre

It-tiswija diretta hija pass ta’ tħejjija li jsejjaħ qoxra b’mod espliċitu, u jżomm l-għażla u t-tnedija fl-istess unit sabiex falliment f’wieħed ma jħallix lill-ieħor jaħdem waħdu.

[Service]
Type=notify
ExecStartPre=/bin/bash -c "ls /etc/openvpn/profiles/au* | shuf -n 1 | xargs -r -I{} cp -f {} /etc/openvpn/%i.conf"
ExecStart=/usr/sbin/openvpn --config /etc/openvpn/%i.conf

Tliet dettalji jiddeċiedu jekk dan jiflaħx għall-kuntatt ma’ magna vera. L-ismijiet huma l-ewwel nassa: systemd jissostitwixxi %i waqt li janalizza l-unit, ħafna qabel ma jgħaddi bash, għalhekk l-ispeċifikatur irid joqgħod barra l-virgoletti singoli. xargs -r jipprevjeni lil cp milli jgħaddi mingħajr argument meta l-glob ma jaqbilx ma’ xejn. U pass ta’ tħejjija li jfalli jwaqqaf l-unit, u dak huwa r-riżultat korrett: li tibda bil-konfigurazzjoni tal-bieraħ huwa agħar milli ma tibdix. Għażla każwali li dejjem tieħu l-istess fajl normalment mhix xorti ħażina. Iċċekkja jekk il-fajl ikkupjat huwiex qed jiġi ssostitwit minn aġġornament tal-pakkett, jew jekk il-glob huwiex jaqbel ma’ entrata waħda skaduta biss.

Jew ħalli lil OpenVPN jagħżel il-punt tat-tmiem

OpenVPN diġà jista’ jżomm diversi punti tat-tmiem fi profil wieħed u jagħżel bejniethom b’mod każwali, li jneħħi l-qoxra, il-kopja u l-aċċess għall-kitba mill-mogħdija tal-boot għal kollox.

client
remote-random
<connection>
remote au1.example.net 1194 udp
</connection>
<connection>
remote au2.example.net 1194 udp
</connection>

Din il-forma żżomm l-għażla tas-server fil-fajl li kiteb il-fornitur, għalhekk rotazzjoni li tbiddel l-ismijiet tal-fajls ma tkissirx l-unit. Tagħmil ukoll il-lista tal-kandidati verifikabbli, li glob fuq direttorju qatt mhu. It-taħwid xorta jistħoqqlu postu meta l-profili jvarjaw f’aktar minn punt tat-tmiem: ċertifikati differenti, direttivi tal-irrotar differenti, politika tas-sifr differenti. F’dak il-każ l-għażla hija bejn konfigurazzjonijiet sħaħ u pass tal-qoxra huwa l-mod onest biex tesprimiha.

Aqra lura l-istanza u l-fajl li użat

Ikkonferma liema unit qed jaħdem tassew qabel ma tiddebjaġġja l-kontenut tiegħu. Is-servizz meta ppakkjat u t-template huma infrastruttura; l-units li jikkorrispondu mal-fajls tiegħek huma l-istanzi msemmija għalihom.

systemctl list-units 'openvpn*'
systemctl cat [email protected]
journalctl -u openvpn@au -n 30 --no-pager

Istanza li ħadd ma jiftakar li attiva normalment tmur lura għal fajl tal-konfigurazzjoni mitluf fid-direttorju tal-pakkett. Itfi dik l-istanza msemmija minflok it-template, inkella l-aġġornament tal-pakkett li jmiss iġibha lura. Wara l-bidla, ibda l-unit u aqra l-linja tal-kmand li jirrapporta l-journal, imbagħad ikkonferma l-mogħdija tal-konfigurazzjoni li tassew fetah. Dik il-verifika waħda tifred għażla każwali li taħdem minn servizz li bil-kwiet jerġa’ juża fajl tax-xahar li għadda.

Artikli relatati