Keyrðu verk eftir VPN frá sendistjóranum, ekki frá if-up
Gamall viðmótskrókur sér ekki VPN-tengingu. Passaðu vpn-up við UUID sniðsins, hafðu verkið endurtakanlegt og skipuleggðu aftengingu sem kemur aldrei af stað.
Skripta sem verður að keyra eftir að VPN kemur upp þarf atburð frá þeirri einingu sem á tenginguna. Skrá sem lögð er í gamalt netkrækjumöppu er ekki endurkall fyrir hvert VPN sem NetworkManager, pppd eða sjálfstætt OpenVPN ferli getur búið til. Hver þessara eigenda tilkynnir annan atburð með öðru umhverfi, þannig að eigandinn verður að vera auðkenndur áður en krókurinn er valinn. Annars er skriptan rétt og keyrir einfaldlega aldrei.
Fyrir VPN sem NetworkManager stýrir er sendistjórinn rétti staðurinn, og vpn-up er rétt aðgerð.
Notaðu vpn-up, ekki atburð viðmótsins
Sendistjórinn greinir up frá vpn-up. Sá fyrri tilkynnir virkt viðmót; sá síðari tilkynnir virka VPN-tengingu. Að Wi-Fi komi upp þýðir aðeins að undirliggjandi hlekkur sé til; göngin geta enn verið að semja, eða þau sannvottist aldrei.
Skriptan fær viðmótið og aðgerðina, en upplýsingar um tenginguna koma í gegnum umhverfið, þar á meðal UUID sniðsins og IP-viðmót VPN. Lestu þessar breytur í stað þess að álykta auðkenni út frá tækjanöfnum.
Takmarkaðu samsvörunina við eina tengingu
Passaðu við UUID tengingarinnar, eða annað auðkenni sem sendistjórinn gefur, í stað forskeytis tun eða ppp0. Viðmótsnöfn eru ekki stöðug, fleiri en eitt göng geta verið til á sama tíma, og tvö snið geta borið sama sýninafn. Að passa tun-forskeyti þýðir að skriptan fer að lokum af stað fyrir tengingu sem enginn ætlaði að snerta. Hún getur líka farið tvisvar af stað fyrir eitt snið þegar endurtenging byggir tækið upp að nýju.
Gerðu verkið idempotent. Endurkall sem bætir við leið í hvert sinn fyllir töfluna að lokum af tvíritum, og það er seinna eintakið sem brýtur leiðsögnina.
Vitaðu hvað virkjun sannar ekki
vpn-pre-up keyrir áður en NetworkManager tilkynnir að VPN sé að fullu virkt, og stjórnandinn bíður þessara skripta. Notaðu blokkandi stig aðeins þegar verkið á raunverulega þar heima, því hæg athugun seinkar virkjuninni sem allar aðrar einingar bíða eftir að sjá.
Tilvera leiða sannar ekki að forrit sé að hlusta, að einkanafl leysist, eða að notendalota sé til. Athugaðu þetta sérstaklega með takmörkuðum tímafresti, og tilkynntu hvaða lag brást í stað þess að endurtaka alla keðjuna.
Virðtu samhengið sem skriptan keyrir í
Skriptur sendistjórans keyra sem root, utan hvers notendalotu. Ekki gera ráð fyrir að umhverfi innskráðs notanda, grafísk lota hans eða ólæst lyklakippa séu tiltæk. Enginn ætti að bregðast við skorti á skjáborðssamhengi með því að gera hvert skilríki læsilegt fyrir hvert ferli. Haltu vinnu notendalotunnar í notendaþjónustu eða lotuaðstoðarmanni sem endurkallið getur gefið merki án þess að þykjast vera notandinn.
Eignarhald og heimildir á skriptunni skipta líka máli. Skrá sem keyrð er sem root og hver notandi getur skipt út er leið til að auka réttindi, og það er niðurstaða óháð því hvort rökfræði VPN er rétt.
Skipuleggðu aftenginguna sem kemur aldrei af stað
NetworkManager skjalfestir að vpn-pre-down sé ekki gefið út fyrir þvingaðar aftengingar eins og óvæntan endi eða tap á nettengingu. Þess vegna er hreinsun sem byggð er eingöngu í kringum mjúkt pre-down ófullnægjandi af eðlisfari. Hvert sameiginlegt ástand sem skriptan breytir þarf annan eiganda sem getur endurheimt það eftir hrun, og þá endurheimtarleið verður að prófa frekar en gera ráð fyrir.
Prófaðu krókinn með venjulegri tengingu, endurtengingu, viljandi aftengingu og toginn kaðal. Skráðu UUID, aðgerðina og viðmótið sem fór af stað, án þess að skrá leyndarmál. Þessi skráning er eina áreiðanlega sönnunin fyrir því að krókurinn hafi keyrt fyrir tenginguna sem þú ætlaðir, og hún er það sem gerir næstu breytingu örugga.