Iṣẹ́ náà bẹ̀rẹ̀, ó ka profáìlì náà láìsí ẹ̀dùn, lẹ́yìn náà ó kú lórí ìlà tí kò dà bíi pé ó ní í ṣe: kò lè ṣí ca.crt. Kò sí ohun tí ó yí padà nínú ìwé-ẹ̀rí náà, àti ọ̀nà profáìlì nínú fáìlì unit jẹ́ pípé. Ìdàpọ̀ yẹn gan-an ni àmì náà. Ọ̀nà tí o fún ni ń wá fáìlì kan, àwọn orúkọ inú fáìlì yẹn sì ń yanjú ní ibòmíràn pátápátá, nítorí náà ìbẹ̀rẹ̀ tí ó dà bíi pé ó pé pérépéré ṣì lè máa ka àwọn kọ́kọ́rọ́ rẹ̀ láti inú àkójọpọ̀ tí ẹnikẹ́ni kò gbèrò.

Ìkùnà náà ní àwọn ohun tí ó fà á díẹ̀, ó sì yẹ kí a pín wọn ní tẹ̀léra: àkójọpọ̀ ìpìlẹ̀ tí ìlànà náà ní gan-an, ipò ìbẹ̀rẹ̀ iṣẹ́ náà, àti àwọn àṣẹ tàbí sandbox yí fáìlì náà ká nígbà tí ọ̀nà náà bá ti tọ́. Ọ̀kọ̀ọ̀kan wọn fi àmì tí ó yàtọ̀ sílẹ̀ — nínú unit, nínú ìlànà àti lórí ẹ̀rọ fáìlì.

Ọ̀nà profáìlì kì í ṣe àkójọpọ̀ ìpìlẹ̀

Fojú inú wo ìlànà tí ó bẹ̀rẹ̀ nínú /tmp tí a sì fún ní /etc/vpn/prod/tenant-a.ovpn. Nínú profáìlì yẹn, ìlà ca ca.crt dárúkọ ọ̀nà ìbámu. Kò sí ohun nínú àríyànjiyàn tí ó wá profáìlì náà tí ó tún orúkọ yẹn kọ, nítorí náà ìlànà náà ń wá /tmp/ca.crt ó sì ń jábọ̀ fáìlì tí ó sọnù.

Ohun tí ó ń da èrò rú ni tẹ̀léra àwọn àṣìṣe. OpenVPN yóò kọ́kọ́ ṣàyẹ̀wò ìṣètò náà, yóò sì ṣí àwọn fáìlì tí a tọ́ka sí bí ó bá dé wọn, nítorí náà àṣìṣe ìtẹ̀wé nínú profáìlì ni a ń jábọ̀ kí a tó fọwọ́ kan kọ́kọ́rọ́ kankan, nígbà tí ìwé-ẹ̀rí tí ó sọnù yóò farahàn nígbà tí ìṣàyẹ̀wò bá dé ibẹ̀. Nítorí náà profáìlì tí ó ń gbé wọlé jẹ́ ẹ̀rí pé ìṣètò-ọ̀rọ̀ náà tọ́, kì í ṣe ẹ̀rí pé a ti rí àwọn fáìlì tí ó dárúkọ.

Ohun tí ìwé ìtọ́sọ́nà yà sọ́tọ̀: --config àti --cd

Ìwé ìtọ́sọ́nà OpenVPN 2.6 ṣàlàyé àwọn àṣàyàn méjì tí ó yàtọ̀. Ọ̀kan ń gbé fáìlì ìṣètò wọlé. Èkejì ń yí àkójọpọ̀ ìlànà padà kí a tó ka ìṣètò, kọ́kọ́rọ́, script àti àwọn fáìlì mìíràn, ó sì ń béèrè àkójọpọ̀ pípé tí kò tọ́ka sí ti ìsinsìnyí.

openvpn --cd /etc/vpn/prod --config tenant-a.ovpn

Ìpè yẹn jẹ́ àwòrán kan, kì í ṣe ìtọ́ni láti bẹ̀rẹ̀ profáìlì ẹlòmíràn. Ohun tí ó ń fún ọ ni ìdánilójú: ìpìlẹ̀ fún gbogbo orúkọ ìbámu nínú ẹ̀wọ̀n ni a sọ nínú àṣẹ náà dipo kí a jogún rẹ̀ láti ọ̀dọ̀ shell tàbí olùṣàkóso tí ó bẹ̀rẹ̀ ìlànà náà. Ọ̀nà mìíràn náà tọ́ bákan náà, ó sì sábà dára fún iṣẹ́: fi àkójọpọ̀ iṣẹ́ sílẹ̀ kí o sì sọ gbogbo fáìlì tí a tọ́ka sí di pípé nínú profáìlì.

Ohunkóhun tí o bá yàn, ṣàyẹ̀wò gbogbo ẹ̀wọ̀n náà, kì í ṣe ìkùnà àkọ́kọ́. Profáìlì lè fa fáìlì ìṣètò mìíràn wọlé, àwọn orúkọ ìbámu ti fáìlì tí a kó sínú ni a sì ń yanjú ní ìbámu pẹ̀lú àkójọpọ̀ ìlànà kan náà, kì í ṣe àkójọpọ̀ fáìlì tí ó kó wọn sínú. Àwọn ọ̀nà àkọsílẹ̀, àwọn fáìlì ìjẹ́rìí àti àwọn script olùrànlọ́wọ́ ń tẹ̀lé ìlànà kan náà.

Iṣẹ́ náà ń bẹ̀rẹ̀ ní ibòmíràn

Shell ìbáraẹnisọ̀rọ̀ nínú àkójọpọ̀ profáìlì kò fi ohunkóhun hàn nípa unit tí a ti kó sínú àpò. Àwọn olùṣàkóso ń ṣètò àkójọpọ̀ iṣẹ́ wọn fúnra wọn, script ìbòjú sì lè tún un yí padà kí fáìlì bínárì tó ṣiṣẹ́. Unit tí ó ń kùnà ni ìbẹ̀rẹ̀ kan ṣoṣo tí ó yẹ kí a ronú lé e.

systemctl show -p WorkingDirectory -p ExecStart --value openvpn@tenant-a
ls -l /proc/$(pgrep -n openvpn)/cwd

Àṣẹ kejì fi àkójọpọ̀ tí ìlànà alààyè náà ń di mú gan-an hàn, ìyẹn sì gbẹ́kẹ̀lé ju fáìlì unit lọ nígbà tí ìbòjú bá wà nínú ètò náà. Bí àwọn méjèèjì kò bá fohùn ṣọ̀kan, ìbòjú ni ìdáhùn rẹ, unit sì jẹ́ àmì tí ó ń ṣi lọ́nà.

Lẹ́yìn wíwá: àṣẹ, chroot àti sandbox

Àkójọpọ̀ ìpìlẹ̀ tí ó tọ́ ṣì lè mú ìfiránṣẹ́ kan náà jáde, nítorí yíyanjú àti àbáwọlé jẹ́ ìgbésẹ̀ ọ̀tọ̀ọ̀tọ̀. Ìlànà náà nílò àṣẹ ṣíṣe lórí gbogbo àkójọpọ̀ òbí àti àṣẹ kíkà lórí fáìlì náà, unit iṣẹ́ tí ó ń fi apá kan ẹ̀rọ fáìlì pamọ́ sì ń yí ohun tí ìlànà náà lè rí rárá padà.

Àwọn oríṣi mẹ́ta tí ó wọ́pọ̀ ń mú àṣìṣe kan náà jáde. Fáìlì náà kì í ṣe kíkà fún ẹnikẹ́ni bí kì í ṣe root, nígbà tí iṣẹ́ náà ń fi àwọn àǹfààní sílẹ̀ kí ó tó ṣí i. Unit náà ń ṣètò ìwòye ẹ̀rọ fáìlì oníṣẹ́ ààbò tí kò ní àkójọpọ̀ profáìlì. Daemon náà ń ṣiṣẹ́ pẹ̀lú chroot, nítorí náà ọ̀nà tí ó wà lórí ẹ̀rọ náà kò sí nínú ìwòye yẹn.

Ṣàyẹ̀wò pẹ̀lú ohun tí ó ni fáìlì náà àti ìdánimọ̀ ìlànà náà, kì í ṣe pẹ̀lú fífi àṣẹ lọ́wọ́. Fífi kọ́kọ́rọ́ àdáni hàn fún gbogbo ènìyàn kí àṣìṣe yìí lè parọ́rọ́ ń fi ìkùnà tí ó ń pariwo ṣe pàṣípààrọ̀ pẹ̀lú ti tí ó dakẹ́, kọ́kọ́rọ́ náà sì ni apá àkójọpọ̀ tí o kéré jùlọ tí o fẹ́ fi hàn.

Fi ìbẹ̀rẹ̀ rẹ fúnra rẹ fi àtúnṣe náà hàn

Tún unit gidi náà bẹ̀rẹ̀ láti àkójọpọ̀ tí kò ní í ṣe pẹ̀lú profáìlì náà, kí o sì wo ìlà ìbẹ̀rẹ̀ kan náà. Lẹ́yìn náà jẹ́rìí pé ìlànà náà ń di àkójọpọ̀ tí a ní lọ́kàn mú nígbà tí ó ń ṣiṣẹ́, àti pé ìwé-ẹ̀rí tí ó gbé wọlé ni èyí tí o ń retí.

systemctl restart openvpn@tenant-a
systemctl status openvpn@tenant-a --no-pager
journalctl -u openvpn@tenant-a -n 20 --no-pager

Nígbà tí gbígbé àwọn ọ̀nà wọlé bá ṣàṣeyọrí, ìjẹ́rìí àti ìtọ́sọ́nà ọ̀nà ṣì jẹ́ ìgbésẹ̀ ọ̀tọ̀ọ̀tọ̀ pẹ̀lú àwọn ìkùnà wọn fúnra wọn, àti ìsopọ̀ tí ó dìde ṣùgbọ́n tí kò gbé ìrìnàjò kọjá jẹ́ ìwádìí mìíràn. Àtúnṣe níbí kàn ń sọ̀rọ̀ nípa àkójọpọ̀ tí àwọn fáìlì ti wá, ó sì yẹ kí ó hàn nínú ìpè náà dipo kí ẹni tí ó gbé e ṣiṣẹ́ ní ọwọ́ nígbẹ̀yìn rántí rẹ̀.

Bí a bá ń fi profáìlì náà ṣiṣẹ́ nípasẹ̀ olùṣàkóso ìṣètò, fi àkójọpọ̀ ìpìlẹ̀ tàbí àwọn orúkọ fáìlì pípé síbẹ̀ pẹ̀lú. Àtúnṣe àfọwọ́kan lórí ẹ̀rọ kan ni ẹ̀dà ìṣòro yìí tí ó ń padà wá lẹ́yìn àtúnkọ́ tí ó tẹ̀lé.

Àwọn àpilẹ̀kọ tó jọra