In skript dat nei it opkommen fan de VPN draaie moat, hat in evenemint nedich fan it ûnderdiel dat de ferbining besit. In bestân dat yn in âlde map foar netwurkhooks pleatst wurdt, is gjin callback foar elke VPN dy't NetworkManager, pppd of in selsstannich OpenVPN-proses meitsje kin. Elk fan dy eigners meldt in oar evenemint mei in oare omjouwing, dus de eigner moat identifisearre wurde foardat de hook keazen wurdt. Oars is it skript korrekt en draait it gewoan nea.

Foar in VPN dy't troch NetworkManager beheard wurdt, is de dispatcher it goede plak, en vpn-up is de goede aksje.

Brûk vpn-up, net it evenemint fan de interface

De dispatcher ûnderskiedt up fan vpn-up. De earste meldt in aktivearre interface; de twadde meldt in aktivearre VPN-ferbining. Dat Wi-Fi opkomt betsjut allinnich dat de ûnderlizzende keppeling bestiet; de tunnel kin noch ûnderhannelje, of kin him nea autentisearje.

It skript krijt de interface en de aksje, wylst details fan de ferbining fia de omjouwing komme, wêrûnder de UUID fan it profyl en de IP-interface fan de VPN. Lês dy fariabelen ynstee fan identiteit út apparaatnammen ôf te lieden.

Behein de oerienkomst ta ien ferbining

Koppelje op de UUID fan de ferbining, of op in oare identiteit dy't de dispatcher leveret, ynstee fan in tun-foarheaksel of ppp0. Nammen fan interfaces binne net stabyl, der kinne tagelyk mear as ien tunnels bestean, en twa profilen kinne deselde werjefte namme hawwe. In tun-foarheaksel koppelje betsjut dat it skript úteinlik ôfbaarnt foar in ferbining dy't nimmen oanreitsje woe. It kin ek twa kear ôfbaarne foar ien profyl as in werferbining it apparaat opnij bout.

Meitsje de taak idempotint. In callback dy't by elke oanrop in rûte taheakket, follet úteinlik de tabel mei duplikaten, en de twadde kopy is dejinge dy't de routing brekt.

Wite wat aktivearring net bewissiget

vpn-pre-up draait foardat NetworkManager meldt dat de VPN folslein aktivearre is, en de behearder wachtet op dy skripten. Brûk in blokkearjende faze allinnich as de taak der echt heart, want in stadige kontrôle fertraget de aktivearring dy't elk oar ûnderdiel wachtet te sjen.

Dat rûtes besteane bewissiget net dat in tapassing harket, in priveenamme oplost of in brûkerssesje bestiet. Kontrolearje dat apart mei in beheinde tiid, en meld hokker laach mislearre ynstee fan de hiele keatling opnij te besykjen.

Respektearje de kontekst wêryn it skript draait

Skripten fan de dispatcher draaie as root, bûten elke brûkerssesje. Nim net oan dat de omjouwing fan de oanmelde brûker, syn grafyske sesje of in ûntskoattele kaairing beskikber is. Nimmen moat op in ûntbrekkende buroblêdkontekst reagearje troch elke oanmeldingsgegevens foar elk proses lêsber te meitsjen. Hâld wurk fan brûkerssesjes yn in brûkerstsjinst of in sesjehelper dêr't de callback sinjaal oan jaan kin sûnder de brûker nei te bealjen.

Eigendom en rjochten op it skript meitsje ek út. In bestân dat as root útfierd wurdt en dat elke brûker ferfange kin, is in paad foar privileezje-eskalaasje, en it is in befinning los fan de fraach oft de VPN-logika korrekt is.

Plen foar de ôfbrekking dy't nea ôfbaarnt

NetworkManager dokumintearret dat vpn-pre-down net útstjoerd wurdt by twongen ôfbrekkingen lykas in ûnferwachte beëiniging of ferlern ferbining. Dêrom is opromjen dat allinnich om in fredeleaze pre-down hinne boud is, per konstruksje ûnfolslein. Eltse dielde steat dy't it skript feroaret, hat in oare eigner nedich dy't it nei in crash werombringe kin, en dat herstelpaad moat test wurde ynstee fan oannommen.

Test de hook mei in normale ferbining, in werferbining, in opsetlike ôfbrekking en in lutsen kabel. Registrearje de UUID, de aksje en de interface dy't ôfbaarnde, sûnder geheimen te loggen. Dat registraasje is it iennige betroubere bewiis dat de hook draaide foar de ferbining dy't jo bedoelden, en it is wat de folgjende feroaring feilich makket.

Relatearre artikelen