Ìtò $_ENV òfìfo nínú àkọsílẹ̀ ìkọ̀ dàbí ẹ̀rí pé OpenVPN kò fi ohunkóhun ránṣẹ́. Ní ọ̀pọ̀ ìgbà ó ńjẹ́rìí ohun mìíràn pátápátá: a ti ṣètò PHP kí ó má ṣe kún superglobal yẹn, àwọn iye sì wà nínú àyíká ìlànà ní gbogbo ìgbà. Ìparí èrò tí kò tọ̀nà kejì túbọ̀ dẹ́mẹ̀kẹ́, nítorí àwọn àyípadà àdírẹ́sì méjì nínú ìkọ̀ ìsopọ̀ ńtọ́ka sí ohun ọ̀tọ̀ọ̀tọ̀, a sì ń lò wọ́n pààrọ̀ ara wọn. Àṣìṣe méjèèjì ń gba ọ̀sán kan tí o bá bẹ̀rẹ̀ pẹ̀lú èyí tí kò tọ̀nà.

Àdírẹ́sì méjì, ọ̀rọ̀ ìdánilójú méjì ọ̀tọ̀ọ̀tọ̀

Ojú ìparí ìta ni ohun tí sèbà ṣàkíyèsí nígbà tí oníbàárà sopọ̀, ó wà gẹ́gẹ́ bí trusted_ip fún IPv4 àti trusted_ip6 fún IPv6. Àdírẹ́sì àròtẹ́lẹ̀ ni ohun tí àkójọpọ̀ yàn fún ìpàdé yìí, ó wà gẹ́gẹ́ bí ifconfig_pool_remote_ip.

Wọ́n ń dáhùn àwọn ìbéèrè ọ̀tọ̀ọ̀tọ̀, ìkọsílẹ̀ sì sábà nílò ọ̀kan nínú wọn, kì í ṣe méjèèjì. Èyí àkọ́kọ́ ni ibi tí ìsopọ̀ ti wá, ó lè jẹ́ àdírẹ́sì NAT tí ọgọ́rọ̀ọ̀rún ènìyàn ń lò. Èyí kejì ni ibi tí ìpàdé yìí wà nínú ọ̀nà, a sì lè yàn án fún ìpàdé mìíràn lẹ́yìn. Dídàpọ̀ méjèèjì ń mú àwọn ìkọsílẹ̀ tí ó dàbí ẹ̀tọ́ ṣùgbọ́n tí kò tọ̀nà.

Kíkà tí ó kéré jù ń yẹn báyìí.

$outer4 = getenv('trusted_ip');
$outer6 = getenv('trusted_ip6');
$inner  = getenv('ifconfig_pool_remote_ip');
$outer  = $outer4 !== false ? $outer4 : $outer6;

Kò sí iye kankan tí ńdámọ̀ ènìyàn. Ọ̀kan jẹ́ àkíyèsí nẹ́tíwọ́kì, èkejì jẹ́ ìyálò, ìkọsílẹ̀ tí ó bá ka èyíkéyìí nínú wọn sí ìdánimọ̀ ẹ̀rọ tí ó dúró ṣinṣin yóò tọ̀nà ní ìgbà àkọ́kọ́ tí oníbàárà bá tún sopọ̀ láti nẹ́tíwọ́kì mìíràn tàbí gba àdírẹ́sì àkójọpọ̀ mìíràn. Yan ààyè náà gẹ́gẹ́ bí ìbéèrè tí ìkọsílẹ̀ gbọ́dọ̀ dáhùn, lẹ́yìn náà kọ ìbéèrè yẹn lẹ́gbẹ̀ẹ́ ọ̀wọ̀n.

Ṣàyẹ̀wò bí PHP ṣe bẹ̀rẹ̀, kì í ṣe shell rẹ

Ìkọ̀ ń ṣiṣẹ́ gẹ́gẹ́ bí ọmọ daemon VPN pẹ̀lú àyíká tí daemon kọ́. Shell ìbáṣepọ̀ rẹ ní ti mìíràn, ṣíṣe àkọsílẹ̀ pẹ̀lú ọwọ́ ńdán àyíká shell wò, kì í ṣe ti ìkọ̀.

Bẹ̀rẹ̀ pẹ̀lú ìjẹ́rìí pé ìkọ̀ ha ṣiṣẹ́ ní ìpele tí o retí. Àkọsílẹ̀ tí a so mọ́ ìpele tí kò tọ̀nà, tàbí èyí tí kò ṣiṣẹ́ rárá nítorí ìtọ́nisọ́nà ńtọ́ka sí ọ̀nà mìíràn, ńfúnni ní àmì kan náà bí àyípadà tí ó sọnù. Fi ìlà àmì tí a mọ̀ọ́mọ̀ ṣe kún orí àkọsílẹ̀ kí o sì jẹ́rìí pé ó farahàn kí o tó ṣàyẹ̀wò ohunkóhun mìíràn. Ìlà kan pẹ̀lú àmì àkókò nínú àkọsílẹ̀ ńyà èyí «kò ṣiṣẹ́ rárá» kúrò nínú «ṣiṣẹ́ láìsí iye».

Lẹ́yìn náà jẹ́rìí irú olùtumọ̀ àti irú fáìlì ìṣètò tí ìpè yẹn ńlò. Yíyí ìṣètò PHP fún sèbà wẹ́ẹ̀bù kò yí ohunkóhun padà nínú ìlànà CLI tí OpenVPN bẹ̀rẹ̀, àwọn méjèèjì sì lè gbé àwọn fáìlì php.ini tí ó yàtọ̀ pátápátá.

Ìdí tí $_ENV òfìfo kò fi ńjẹ́rìí ohunkóhun

PHP ìtọ́kasí getenv ṣàlàyé kíkà àyíká ìlànà tààrà, tí ó ńdá false padà nígbà tí orúkọ kò sí. A ń kún superglobal $_ENV lọ́tọ̀, ìtọ́nisọ́nà variables_order sì pinnu irú superglobal tí a ó kún.

Bí ìtọ́nisọ́nà yẹn bá fi E sílẹ̀, $_ENV yóò wà ní òfìfo bí àyíká ṣe ní ohunkóhun. Kóòdù tí ńṣe àtọ́ka sí i yóò wá ròyìn àyípadà tí ó sọnù tí ó wà ní tòótọ́, ìwádìí yóò sì lọ sí OpenVPN nígbà tí ìdáhùn wà nínú php.ini. Ṣàyẹ̀wò ìtọ́nisọ́nà fún ìṣètò CLI ní pàtàkì, kì í ṣe fún sèbà wẹ́ẹ̀bù.

Kíkà pẹ̀lú getenv yẹra fún gbogbo ìdàrúdàpọ̀ yìí, àkọsílẹ̀ àdììtẹ̀ tí ńfọ̀ àyíká mọ́ kí ó tó pe olùtumọ̀ yóò tún mú un wá ní ọ̀nà mìíràn.

Fi ìsopọ̀ pamọ́, kì í ṣe ìmúdójúìwọ̀n ìlà

Pinnu iye tí ìkọsílẹ̀ nílò kí o tó kọ ó. Bí èròdì jẹ́ àkíyèsí ibi tí ìpàdé ti wá, fi ojú ìparí ìta pamọ́ kí o sì fi àmì kí ó jẹ́ àkíyèsí. Bí èròdì jẹ́ síso ìpàdé mọ́ àdírẹ́sì ọ̀nà fún ìgbà ìsopọ̀, fi àdírẹ́sì àkójọpọ̀ pamọ́ kí o sì so ó mọ́ ìpàdé.

Ṣe ìmúdójúìwọ̀n gẹ́gẹ́ bí ìdánimọ̀ tí a jẹ́rìí àti ìpàdé lọ́wọ́lọ́wọ́ dípò gbogbo ìlà tí ńpín àdírẹ́sì ọ̀nà kan, nítorí a ń tún àwọn àdírẹ́sì àkójọpọ̀ lò, ìṣẹ̀lẹ̀ ìgé ìsopọ̀ tí ó pẹ́ lè pa dátà ìsopọ̀ tuntun rẹ́. Ṣètò IPv6 ní gbangba dípò kíkọ iye IPv4 nìkan ní ìdákẹ́jẹ́. Ìlà tí ó ní àdírẹ́sì ìta NULL sàn ju ìlà tí ó ní èyí tí kò tọ̀nà, nítorí èyí àkọ́kọ́ hàn gbangba pé kò pé.

So kíkọ mọ́ ìdánimọ̀ ìpàdé tí OpenVPN ńpèsè kí ìsopọ̀ tuntun lè dá ìkọsílẹ̀ tuntun dípò ṣíṣàtúnṣe èyí àtijọ́. Lo àwọn gbólóhùn tí ó ní àwọn ẹ̀yà àti àkọsílẹ̀ tí ó ní àwọn àṣẹ tí iṣẹ́ náà nílò nìkan. Ìkọ̀ ńṣiṣẹ́ pẹ̀lú àṣẹ daemon, nítorí náà ìbéèrè àìṣọ́ra jẹ́ ìṣòro tí ó gbòòrò ju ìlà àkọsílẹ̀ tí kò tọ̀nà.

Ṣe àyẹ̀wò àìrùn láìda àyíká sílẹ̀

Ṣàkọsílẹ̀ àwọn orúkọ tí ó wà, ìpele tí ó ṣiṣẹ́ àti olùtumọ̀ tí a lò. Má ṣe tẹ gbogbo àyíká jáde, nítorí ìlànà ìkọ̀ lè jogún àwọn iye tí kò ní í ṣe tí kò yẹ kí ó wà nínú fáìlì àkọsílẹ̀.

Jẹ́rìí ìsopọ̀ kan láti ìbẹ̀rẹ̀ dé ìparí: ka ojú ìparí ìta, ka àdírẹ́sì tí a yàn, kí o sì fi àwọn méjèèjì wé ìwòye sèbà fúnra rẹ̀ nípa ìpàdé yẹn. Nígbà tí a bá ti jẹ́rìí ẹ̀wẹ̀ fún oníbàárà kan, a lè gbẹ́kẹ̀ lé ìsopọ̀ náà ní ibòmíràn.

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