Haltu nokkrum vpnc göngum gangandi með prófunum fyrir hvert snið
Staðlaða endurtengingarskriftan gerir ráð fyrir einu gangi. Gefðu hverju vpnc-sniði sitt eigin port, prófaðu raunverulega þjónustu og keðjuðu prófanirnar í eina fasta röð.
Eitt vpnc-snið tengist aftur hreint eftir reik; þrjú þeirra brjóta til skiptis sokkana, leiðirnar og stöðu leysisins hjá hverju öðru. Endurtengingarskriftan sem fylgir pakkanum er skrifuð fyrir eitt gang, svo hún endurræsir hvert snið hvenær sem eitt þeirra er niðri. Að laga það krefst þriggja hluta: aðskilin staðbundin port, prófun sem prófar raunverulega þjónustu fyrir hvert snið og ein skipulögð keðja sem keyrir aldrei tvær tengingar í einu.
Gefðu hverju sniði sitt eigið staðbundið port
vpnc-snið sem látið er vera á sjálfgefna staðbundna portinu keppir við sniðið sem þegar er í gangi. Önnur tengingin mistekst meðan sú fyrsta heldur portinu, og logglínan lítur út eins og vandamál í gátt frekar en staðbundið árekstur. Settu í staðinn eina línu í hverja sniðskrá:
Local Port 0Núll lætur kjarnann velja skammtíma port, svo tvö snið geta verið sett upp á sama tíma. Nefndu hverja skrá eftir gáttinni og hópnum sem hún þjónar, haltu henni læsilegri aðeins af root og tengstu alltaf við samsvarandi snið í stað sameiginlegs sjálfgefins. Sameiginleg sjálfgefin skrá er leiðin sem skriftan endurtengir ranga gangið eftir að einhver endurnefndi snið.
Sniðskrár bera auðkenni, svo heimildir eru hluti af hönnuninni en ekki húsverkum. Skrá sem allir geta lesið undir /etc/vpnc afhendir hópnum leyndarmál hvers staðbundins notanda. Haltu stillingunni 0600 með root sem eiganda og láttu skrifturnar lesa skrána sem root í stað þess að afrita leyndarmál í rök. Þess vegna ætti prófunarskrifta aldrei að skrifa innihald skrárinnar í logg.
Prófaðu eina þjónustu fyrir hvert snið, ekki vistfang gangsins
Echo-beiðni á eigið vistfang gangsins sannar að mestu að viðmótið sé til. Hún segir ekkert um hvort hýsillinn fyrir aftan nái enn forritinu sem réttlætir gangið. Viðmótið getur verið uppi á meðan leiðin handan þess er þegar farin.
Prófaðu eina þjónustu fyrir hvert snið með stuttum TCP-tíma og endurtengdu aðeins sniðið sem prófunin mistókst á. Tvær sekúndur aðskilja dauða leið frá hægri, og TCP-prófun fer ekki eftir því hvort ICMP sé leyft einhvers staðar á leiðinni. Breyttu aðeins markinu og nafni stillingarinnar milli sniða:
#!/bin/bash
set -eu
if ! nc -z -w 2 10.63.7.20 8443; then
/usr/sbin/vpnc-connect ops.conf
fiVistaðu það sem /usr/local/bin/ensure-vpn-ops.sh, gerðu það keyranlegt og endurtaktu fyrir hvert snið með því að breyta aðeins marki prófunarinnar og nafni stillingarinnar. Prófun sem svarar siðaregluspurningu lifir af gáttir sem henda echo en senda samt áfram þjónustuna sem notendur hafa áhyggjur af.
Keðjuðu prófanirnar svo þær keppi aldrei
Endurtengingarskriftan úr pakkanum getur kallað á prófanirnar þínar í röð og röðin er allt málið. Tvö vpnc-connect köll sem keyra saman endurskrifa leiðatöfluna í röð sem enginn stjórnar, og þannig tapar heilbrigt snið leiðinni sinni.
Haltu köllunum í forgrunni, bættu við stuttri setningartöf fyrir undirliggjandi viðmótið og tímasettu keðjuna úr cron-töflu root, því aðeins root getur endurskrifað leiðir gangsins:
#!/bin/bash
sleep 20
/usr/local/bin/ensure-vpn-ops.sh
/usr/local/bin/ensure-vpn-lab.shHaltu röðinni eins milli ræsingarskriftunnar og cron-færslunnar, því keðja sem keyrir í annarri röð við ræsingu er í raun annað forrit. Þegar eitt snið er háð leiðum annars skaltu setja háðina fyrst og láta síðari prófunina mistakast fyrirhafnarlaust meðan fyrra gangið er enn að koma upp.
Fylgstu með logginu og brottu svo eitt viljandi
Skráðu eina línu fyrir hverja keyrslu með sniðinu, marki prófunarinnar, niðurstöðunni og aðgerðinni sem var gripið til. Án þess lítur gang sem titrar á hverri mínútu nákvæmlega eins út og eitt sem féll aldrei, og prófunargalla er ekki hægt að greina frá gáttarstoppi. Loggið sannar líka að keðjan snerti aðeins sniðið sem mistókst. Skrifaðu það þar sem það lifir af endurræsingu, annars fara sönnunargögnin með ferlinu.
Brottu svo gang viljandi og fylgstu með hvað gerist. Stöðvaðu eitt snið og staðfestu hvaða ferli og leiðir eru enn til staðar:
pgrep -a vpnc
ip -4 route show | grep -E '10[.]63|10[.]90'
tail -n 5 /var/log/ensure-vpn.logAðeins stöðvaða sniðið ætti að endurtengjast og hinar loturnar ættu að halda bæði ferlunum og leiðunum sínum. Ef tvö snið endurræsast er keðjan þín að keyra samhliða einhvers staðar sem þú bjóst ekki við.
Hvað varðhundurinn má ekki gera
Varðhundur sem endurræsir allt þegar eitthvað mistekst lítur heilbrigður út í prófun og veldur stopp í viðhaldsglugga. Endurræstu fyrir hvert snið, aldrei á heimsvísu.
Veldu viðhaldið biðlara þegar gáttin býður einn fyrir sama siðareglu, og harðkóðaðu aldrei lykilorð í skriftuna né berðu það á skipanalínu, því sniðskráin geymir leyndarmálið þegar. Ef verk þarf að keyra sem venjulegur notandi þegar gangið er uppi skaltu lækka réttindi innan úr skriftunni í stað þess að láta alla keðjuna keyra undir þeim reikningi. Að lokum skaltu lesa leiðirnar aftur eftir endurtengingu, því snið getur komið til baka með annað úthlutað vistfang og skilið eftir úrelta leið sem engin prófun sem beinist að vistfangi gangsins tekur eftir.