Namizni grafični vmesnik drži upravljalno povezavo, zato nadzorna skripta, ki poskuša odpreti svojo, ne prebere ničesar ali, kar je huje, vmesnik preneha odgovarjati na pozive. Običajen sklep je, da je demon nezanesljiv. V skupnostnem demonu je omejitev namerna: krmilni vmesnik streže enemu povezanemu upravljalnemu odjemalcu naenkrat in ta številka nima nobene zveze s tem, koliko uporabnikov lahko VPN prenaša.

En vtič, en imetnik

Upravljalni kanal sprejme enega povezanega odjemalca. Ko prispe drugi, medtem ko je prvi aktiven, ta čaka ali je zavrnjen, in za možnostjo ni skritega nobenega vzporednega naročniškega načina. Prekinitev trenutnega imetnika demonu omogoči, da sprejme naslednjega, kar je predaja, ne drugi kanal.

To naredi vsako dodatno orodje tekmecem. Če vmesnik ima povezavo, se poizvedovalna skripta bodisi ne pripne bodisi uspe šele potem, ko vmesnik obupa, in zaporedje se ponovi ob naslednji ponovni povezavi. Če se skripta pripne prva, vmesnik izgubi svojo krmilno pot in njegovi pozivi prenehajo delovati. Nobeno orodje ne sporoči spora, ker vsako vidi le svoj neuspešni ukaz.

What you needMechanism that fitsWhat it cannot do
Periodic list of connected clientsStatus file written on an intervalDeliver events as they happen
Interactive prompts and session controlThe single management connectionServe two controllers at once
Multiple consumers of eitherOne owner process that fans outExist without you writing it

Odločite, katera komponenta ima nadzor

Izberite enega imetnika interaktivnega kanala in pustite, da je edini, ki se povezuje. Vmesnik, ki upravlja povezavo, skripta, ki odgovarja na overitvene pozive, in krmilnik, ki zaključuje seje, vsi štejejo kot imetniki, in vlogo lahko drži le eden.

Ko vmesnik ima povezavo, uporabite integracijo, ki jo ta vmesnik ponuja, namesto da bi se z njim borili. Tekmovanje z imetnikom za vtič povzroča občasne okvare, ki se uporabnikom zdijo naključne, in tisti, ki razhroščuje, običajno vidi le drugo polovico tekmovanja. Zabeležite, kateri proces se po ponovnem zagonu poveže prvi, ker ta vrstni red vsakič odloči, kdo zmaga. Nadzornik, ki se zažene pred vmesnikom, bo obdržal kanal, dokler vmesnik ne obupa.

Za zbiralnike uporabite posnetke stanja

Večina nadzora potrebuje seznam, ne pogovor. Občasna statusna datoteka odgovori na to, ne da bi se dotaknila krmilnega kanala, in deluje naprej, medtem ko vmesnik ostane povezan.

status /run/openvpn/server.status 10
management /run/openvpn/server.sock unix

Interval je proračun svežine, zato ga nastavite na tisto, kar nadzorna plošča res potrebuje, in ne na najmanjšo vrednost, ki se zdi varna. Posnetek, zapisan vsakih nekaj sekund, je poceni; skripta, ki se vsakih nekaj sekund znova poveže s krmilnim vtičem, ni, ker vsaka ponovna povezava tekmuje z imetnikom.

Posnetek ni zgodovina in ni tok dogodkov. Povezave, ki pridejo in odidejo znotraj enega intervala, se nikoli ne pojavijo, zato zahteve po reviziji ni mogoče izpolniti z poizvedovanjem datoteke, ki prepisuje samo sebe. Če morate vedeti, ali se je uporabnik sploh povezal, je posnetek napačen pripomoček.

Razvejanje je zasnova, ne način

Če več porabnikov res potrebuje upravljalne podatke v živo, postavite eno zaupanja vredno komponento pred vtič in pustite, da objavlja ozko izbrana opažanja ostalim. Ta komponenta ima ponovno povezavo, overitvene pozive in odločitev o tem, kaj je varno razkriti.

Zgradite jo namerno: določite, katere poizvedbe so dovoljene, beležite, kdo je vprašal, in preprečite, da bi razvejitvena plast po nesreči postala panel za daljinsko upravljanje. Demon nima načina za več odjemalcev, ki bi ga bilo mogoče vklopiti, in nobena konfiguracijska vrstica ga ne ustvari. Imetnika obravnavajte kot del varnostne meje, ker drži vmesnik, ki lahko odklopi ljudi. Njegov ponovni zagon bi moral biti rutinska operacija z dokumentirano potjo obnovitve.

Vtič obravnavajte kot privilegij, ne kot meritve

Upravljalni vmesnik lahko odklopi uporabnike, spremeni stanje in bere dogodke, ki imenujejo ljudi. Njegovo geslo overi odjemalca in ne šifrira prenosa, zato omrežni poslušalec razkrije pogovor vsakomur, ki ga lahko opazuje.

Dajte prednost lokalnemu vtiču ali strogo omejenemu poslušalcu in preverite, na kateri proces se vaš zbiralnik dejansko obrača, saj strežniški izdelki prinašajo svoje upravljalne API-je, ki se obnašajo drugače. Zbiralnik, usmerjen na napačnega demona, daje samozavestne in napačne sklepe. Potrdite pot in lastniški proces, preden razhroščujete poizvedbo, ki ne vrne ničesar.

Sorodni članki