Ìkùnà client-connect OpenVPN: ṣé ìmọ́tótó ní disconnect ni a ti gbà ní ẹ̀rí?
Ẹ̀rọ tí a kọ̀ kò dá òfin firewall padà bẹ́ẹ̀ ni kò pa àkọsílẹ̀ tí a kọ rẹ́. Fi àdéhùn callback wé ìpadàsẹ́yìn tí hook rẹ gbọ́dọ̀ ṣe fúnra rẹ̀.
Nígbà tí skript client-connect bá jáde pẹ̀lú kóòdù tí kì í ṣe òdo, OpenVPN kọ̀ ẹ̀rọ náà, àwọn olùṣakoso sì máa ń rò pé skript client-disconnect tí ó bá a mu yóò tún gbogbo rẹ̀ ṣe. Ní ọ̀pọ̀ ìgbà kò ṣiṣẹ́ rárá, nítorí pé ìṣiṣẹ́ disconnect sinmi lórí ohun tí ìpele connect lè parí. Bí a bá ka ìkọ̀ àti ìpadàsẹ́yìn sí ẹ̀rọ kan náà, ìyẹn ni ó máa ń sọ ìwọlé tí ó kùnà di òfin firewall tí ó ṣàn jáde tàbí àkọsílẹ̀ aláìní ẹni. Wọ́n jẹ́ ojúṣe méjì ọ̀tọ̀ọ̀tọ̀, ọ̀kan nínú wọn ni ó jẹ́ aládàáṣiṣẹ́. Ka ipa-ọ̀nà jáde ti hook fúnra rẹ̀ kí o tó dẹ́bi fún sáfà pé ó fi ipò sílẹ̀.
Ìjáde tí kì í ṣe òdo kọ̀ ẹ̀rọ; kò dá iṣẹ́ rẹ padà
Ipò ìjáde client-connect jẹ́ ìpinnu ìgbani wọlé. Òdo túmọ̀ sí gbà wọlé, ohunkóhun mìíràn túmọ̀ sí wó ìpilẹ̀ náà lulẹ̀ kí ó tó fi ìdí múlẹ̀ pátápátá. Kò sí ohun kan nínú àdéhùn yẹn tí ó ṣàyẹ̀wò ohun tí skript ti ṣe sí ayé ìta. Bí skript bá fi òfin iptables kún, kọ ìlà tàbí gbé ìkàwé sókè, àwọn ìyípadà yẹn yóò là kọjá ìkọ̀ náà.
Ìyàtọ̀ kanna ni ó kan àwọn plugin, níbi tí ọ̀pọ̀ iṣẹ́ connect lè ṣiṣẹ́ fún ìpilẹ̀ kan. Ìkùnà tí ó wáyé lẹ́yìn kò fagilé àṣeyọrí tí ó ṣáájú, iṣẹ́ tí ó ṣáájú kò sì ní ọ̀nà láti mọ̀ pé iṣẹ́ arákùnrin ti kùnà.
Ìkọ̀ jẹ́ aládàáṣiṣẹ́, ìmọ́tótó kì í ṣe
Ìwé ìtọ́nisọ́nà OpenVPN 2.6 so ìṣiṣẹ́ client-disconnect mọ́ àṣeyọrí ìṣiṣẹ́ connect tí ó ṣáájú. Àyọkùrò tí a kọ sílẹ̀ bo àwọn ẹ̀wọ̀n cascade: bí ìgbésẹ̀ connect kan bá ti dá àṣeyọrí padà, àwọn ìgbésẹ̀ disconnect tí ó bá a mu yóò ṣì ṣiṣẹ́ nígbà tí a bá wó ìpilẹ̀ náà, kódà bí ìgbésẹ̀ connect tí ó wáyé lẹ́yìn bá kùnà. Àyọkùrò yẹn kéré, ó sì sinmi lórí iye callback tí a ṣètò, nítorí náà dídán skript shell kan wò kò sọ ohunkóhun fún ọ nípa ẹ̀wọ̀n kan.
Ṣe àwòrán ìṣètò gidi kí o tó ṣe àpẹrẹ yí ká: skript wo, plugin wo àti ní ìtòlẹ́sẹẹsẹ wo ni wọ́n ń ṣiṣẹ́. Tábìlì tí ó wà nísàlẹ̀ ṣe àkójọ ohun tí ìṣètò aláìpé fi sílẹ̀.
| What the hook did before failing | What the client sees | What stays behind |
|---|---|---|
| Created a firewall entry | A rejection, with no tunnel | A rule matching an address nobody owns |
| Wrote a state row | A rejection, with no tunnel | A record of a session that never started |
| Allocated a tunnel address | A rejection, with no tunnel | An address marked busy until something releases it |
Ìlà kọ̀ọ̀kan parí bákan náà fún ẹ̀rọ àti lọ́nà mìíràn fún agbalejo. Ẹ̀rọ kò lè mọ èyí tí ó ṣẹlẹ̀, nítorí náà hook gbọ́dọ̀ dá ohun tí ó ṣe padà kí ó tó dá ipò ìkùnà padà.
Ṣe ìsanpadà nínú skript tí ó kùnà
Ṣàyẹ̀wò ohunkóhun tí o bá lè ṣe kí o tó fọwọ́ kan ipò tí a pín. Àwọn pápá ìwé-ẹ̀rí, wíwà ádírẹ́sì, ẹgbẹ́ tí ẹ̀rọ náà wà. Ìkọ̀ tí ó rọrùn jùlọ ni èyí tí ó ṣẹlẹ̀ kí a tó pín ohunkóhun. Nígbà tí ìṣètò bá ní ọ̀pọ̀ iṣẹ́ ìta, tọ́jú àkọsílẹ̀ èyí tí ó parí kí o sì dá wọn padà ní ìtòlẹ́sẹẹsẹ ìdàkejì kí o tó dá ipò ìkùnà padà.
Ìṣẹ̀lẹ̀ kan pàtó: skript ṣẹ̀dá àkọsílẹ̀ firewall fún ẹ̀rọ kọ̀ọ̀kan, lẹ́yìn náà ó kùnà láti kọ ìlà ipò tí ó ṣàpèjúwe rẹ̀. Ẹ̀ka tí ó kùnà yẹ kí ó yọ àkọsílẹ̀ tí ó ṣẹ̀dá nísisẹ̀yìn kúrò, lẹ́yìn náà kí ó jáde pẹ̀lú kóòdù tí kì í ṣe òdo. Dídúró de ìṣẹ̀lẹ̀ disconnect tí ó lè máà ṣeé ṣètò rárá ni ọ̀nà tí òfin fi ń gbé jù ju ìpàdé tí a dárúkọ fún lọ.
Jẹ́ kí ìsanpadà jẹ́ idempotent àti pẹ̀lú olówó
Ìmọ́tótó gbọ́dọ̀ jẹ́ àìléwu láti ṣiṣẹ́ lẹ́ẹ̀mejì, ó sì gbọ́dọ̀ ṣe pàtó nípa ohun tí ó lè pa. Ìṣẹ̀lẹ̀ tí ó pẹ́ dé láti ìgbìyànjú àtẹ̀yìnwá kò gbọ́dọ̀ yọ ìpín ìpàdé tuntun kúrò kìkì nítorí pé àwọn méjèèjì pín orúkọ kan tàbí ádírẹ́sì ọ̀nà-ìsàlẹ̀ tí a tún lò. Kọ ọwọ́ tàbí id ìṣiṣẹ́ pàtó pẹ̀lú ohun àmúlò, kí o sì pa látorí kókó yẹn kì í ṣe orúkọ. Àwọn ìbánisọ̀rọ̀ databéésì ń ṣèrànwọ́ pẹ̀lú àwọn ìyípadà ti databéésì fúnra rẹ̀ nìkan; òfin firewall tí ó wà ní ìta ààlà yẹn nílò ìgbésẹ̀ ìsanpadà tí ó ṣe kedere.
Ro pé ìlànà lè kú láàárín ìyípadà àti ìmọ́tótó, kí o sì fi olùdọ́gba kan kún tí yóò fi àkókò wé ipò ìta pẹ̀lú àkójọ àwọn ẹ̀rọ tí a gbà.
Dán àwọn ọ̀nà mẹ́ta tí ó yàtọ̀ ní ti gidi wò
Ṣe àdánwò àwọn ìṣẹ̀lẹ̀ mẹ́ta: ìkọ̀ kí a tó pín ohunkóhun, ìkọ̀ lẹ́yìn ìpín díẹ̀, àti ìpàdé deede tí a gbà tí yóò parí lẹ́yìn náà. Àwọn mẹ́tẹ̀ẹ̀ta ń ṣẹ̀dá àwọn ìlà àkọsílẹ̀ ọ̀tọ̀ọ̀tọ̀ àti àṣẹ́kù ọ̀tọ̀ọ̀tọ̀. Ṣàyẹ̀wò ipò ìta lẹ́yìn kọ̀ọ̀kan, kì í ṣe ìfiránṣẹ́ ìkùnà ẹ̀rọ nìkan, nítorí pé ìkùnà ẹ̀rọ ni èsì tí a retí nínú méjì nínú mẹ́ta.
Kọ ìpele hook, ipò ìjáde àti ohun tí a pín tàbí tí a tú sílẹ̀, láìsí àwọn ẹ̀rí ìdánimọ̀. Àkọsílẹ̀ hook tí ó dárúkọ ohun àmúlò tí ó ṣẹ̀dá ni ó máa ń jẹ́ kí òfin tí ó ṣàn jáde lè rí ní ọdún mẹ́fà lẹ́yìn náà.