OpenVPN client-connect-bilun: er hreinsun við disconnect tryggð?
Hafnaður biðlari bakkar ekki eldveggjarreglu né skráðri færslu. Berðu saman callback-samninginn og þá afturköllun sem hookið þitt verður að gera sjálft.
Þegar client-connect skrifta hættir með núllskildi skalt OpenVPN hafnar biðlaranum og stjórnendur gera yfirleitt ráð fyrir að samsvarandi client-disconnect skrifta taki til. Oft keyrir hún aldrei, því vinnsla disconnect er háð því hvað connect-stigið náði að klára. Að meðhöndla höfnun og afturköllun sem eina aðferð er það sem breytir misheppnaðri innskráningu í leka eldveggjarreglu eða munaðarlausa færslu. Þetta eru tvær aðskildar skyldur og aðeins önnur þeirra er sjálfvirk. Lestu eigin útgangsslóð hooksins áður en þú kennir þjóninum um að skilja stöðu eftir.
Útgangur sem er ekki núll hafnar biðlaranum; hann afturkallar ekki vinnuna þína
Útgangsstaða client-connect er ákvörðun um inngöngu. Núll þýðir að hleypa inn, hvað annað sem er þýðir að rífa niður tilvikið áður en það er að fullu komið. Ekkert í þeim samningi skoðar hvað skriftan hefur þegar gert við umheiminn. Ef skriftan bætti við iptables-reglu, skrifaði röð eða hækkaði teljara, lifa þær breytingar höfnunina af.
Sama ósamhverfan gildir um viðbætur, þar sem nokkrar connect-aðgerðir geta keyrt fyrir eitt tilvik. Síðari bilun afturkallar ekki fyrri velgengni með afturvirkum hætti, og fyrri aðgerðin hefur enga leið til að vita að systuraðgerð brást.
Höfnun er sjálfvirk, hreinsun ekki
OpenVPN 2.6 handbókin tengir vinnslu client-disconnect við það að fyrri connect-vinnsla hafi tekist. Skjalfest undantekning nær yfir fossakeðjur: ef eitt connect-skref hefur þegar skilað velgengni keyra samsvarandi disconnect-skref samt þegar tilvikinu er rifið niður, jafnvel þótt síðara connect-skref hafi brugðist. Þessi undantekning er þröng og fer eftir því hversu mörg callback eru stillt, þess vegna segir prófun á einni shell-skriftu þér ekkert um keðju.
Kortleggðu raunverulegu stillinguna áður en þú hannar í kringum hana: hvaða skrifta, hvaða viðbót og í hvaða röð þær keyra. Taflan hér að neðan listar hvað hálfkláruð uppsetning skilur eftir.
| 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 |
Hver röð endar eins fyrir biðlarann og öðruvísi fyrir hýsilinn. Biðlarinn getur ekki vitað hver þeirra átti sér stað, svo hookið verður að afturkalla það sem það gerði áður en það skilar bilunarstöðunni.
Bættu upp inni í skriftunni sem brást
Staðfestu allt sem þú getur áður en þú snertir sameiginlega stöðu: reiti skírteinis, framboð heimilisfangs, hópinn sem biðlarinn tilheyrir. Ódýrasta höfnunin er sú sem á sér stað fyrir hverja úthlutun. Þegar uppsetningin nær yfir nokkrar ytri aðgerðir skaltu halda skrá yfir hverjar kláruðust og afturkalla þær í öfugri röð áður en þú skilar bilunarstöðunni.
Áþreifanlegt dæmi: skriftan býr til eldveggjarfærslu fyrir hvern biðlara og mistekst síðan að skrifa stöðulínuna sem lýsir henni. Bilanlegi greinin ætti að fjarlægja færsluna sem hún bjó rétt í þessu og hætta síðan með útgangi sem er ekki núll. Að bíða eftir disconnect-atburði sem verður kannski aldrei tímasettur er hvernig regla lifir lengur en lotan sem hún var ætluð fyrir.
Gerðu uppbótina idempotenta og með eiganda
Hreinsun verður að vera örugg að keyra tvisvar og nákvæm um hvað hún má eyða. Sein atburður frá fyrri tilraun ætti ekki að fjarlægja úthlutun nýrri lotu bara vegna þess að báðar deila sameiginlegu nafni eða endurnýttu gönguheimilisfangi. Skráðu tiltekna handfangið eða aðgerðarauðkennið með auðlindinni og eyddu eftir þeim lykli frekar en eftir nafni. Gagnagrunnsfærslur hjálpa aðeins við eigin breytingar gagnagrunnsins; eldveggjarregla utan þess marka þarf skýrt uppbótarskref.
Gerðu ráð fyrir að ferlið geti dáið milli breytingarinnar og hreinsunarinnar og bættu við sáttaraðila sem ber saman ytri stöðu við lista yfir samþykkta biðlara samkvæmt áætlun.
Prófaðu þrjár slóðir sem eru í raun ólíkar
Æfðu þrjú tilvik: höfnun áður en nokkuð er úthlutað, eina eftir hlutaúthlutun og eðlilega samþykkta lotu sem endar síðar. Þessar þrjár framleiða ólíkar logglínur og ólíkar leifar. Staðfestu ytri stöðuna eftir hverja þeirra, ekki aðeins bilunarskilaboð biðlarans, því bilun biðlarans er væntanleg niðurstaða í tveimur af þremur.
Skráðu stig hooksins, útgangsstöðuna og hvað var úthlutað eða sleppt, án skilríkja. Hookskrá sem nefnir auðlindina sem hún bjó til er það sem gerir leka reglu finnanlega sex mánuðum síðar.