Tikai viens pārvaldības klients: kāpēc jūsu monitors izmet grafisko saskarni
Pārvaldības socket pieņem vienu savienojumu vienlaikus. Otrs abonents vai nu nevar pievienoties, vai atņem vadību komponentam, kuram pieder uzvednes.
Darbvirsmas grafiskā saskarne tur pārvaldības savienojumu, tāpēc uzraudzības skripts, kas mēģina atvērt savu, neko neizlasa vai, ļaunāk, saskarne pārstāj atbildēt uz uzvednēm. Ierastais secinājums ir, ka dēmons ir nestabils. Kopienas dēmonā ierobežojums ir tīšs: vadības saskarne apkalpo vienu pievienotu pārvaldības klientu vienlaikus, un šim skaitlim nav nekāda sakara ar to, cik lietotāju VPN spēj pārvadāt.
Viens socket, viens turētājs
Pārvaldības kanāls pieņem vienu pievienotu klientu. Kad otrais ierodas, kamēr pirmais ir aktīvs, tas gaida vai tiek noraidīts, un nav nekāda paralēla abonenta režīma, kas būtu paslēpts aiz opcijas. Pašreizējā turētāja atvienošana ļauj dēmonam pieņemt nākamo, un tā ir nodošana, nevis otrs kanāls.
Tas padara katru papildu rīku par konkurentu. Ja saskarnei pieder savienojums, aptaujas skripts vai nu nevar pievienoties, vai tam izdodas tikai pēc tam, kad saskarne ir padevusies, un secība atkārtojas nākamajā atkārtotajā savienojumā. Ja skripts pievienojas pirmais, saskarne zaudē savu vadības ceļu un tās uzvednes pārstāj darboties. Neviens no rīkiem neziņo par konfliktu, jo katrs redz tikai savu neizdevušos komandu.
| What you need | Mechanism that fits | What it cannot do |
|---|---|---|
| Periodic list of connected clients | Status file written on an interval | Deliver events as they happen |
| Interactive prompts and session control | The single management connection | Serve two controllers at once |
| Multiple consumers of either | One owner process that fans out | Exist without you writing it |
Izlemiet, kuram komponentam pieder vadība
Izvēlieties vienu interaktīvā kanāla turētāju un ļaujiet tam būt vienīgajam, kas pievienojas. Saskarne, kas pārvalda savienojumu, skripts, kas atbild uz autentifikācijas uzvednēm, un kontrolieris, kas pārtrauc sesijas, visi skaitās turētāji, un tikai viens var pildīt šo lomu.
Kad saskarnei pieder savienojums, izmantojiet integrāciju, ko šī saskarne piedāvā, nevis cīnieties ar to. Sacensība ar turētāju par socket rada periodiskus bojājumus, kas lietotājiem šķiet nejauši, un tas, kurš atkļūdo, parasti redz tikai otro sacensību pusi. Pierakstiet, kurš process pievienojas pirmais pēc pārstartēšanas, jo šī secība katru reizi izlemj, kas uzvar. Monitors, kas startē pirms saskarnes, noturēs kanālu, līdz saskarne padosies.
Izmantojiet statusa momentuzņēmumus vācējiem
Lielākajai daļai uzraudzības vajag sarakstu, nevis sarunu. Periodisks statusa fails atbild uz to, nepieskaroties vadības kanālam, un tas turpina darboties, kamēr saskarne paliek pievienota.
status /run/openvpn/server.status 10
management /run/openvpn/server.sock unix
Intervāls ir svaiguma budžets, tāpēc iestatiet to atbilstoši tam, kas informācijas panelim patiešām vajadzīgs, nevis mazākajai vērtībai, kas šķiet droša. Momentuzņēmums, kas tiek rakstīts ik pēc dažām sekundēm, ir lēts; skripts, kas ik pēc dažām sekundēm atkārtoti pievienojas vadības socket, nav, jo katrs atkārtotais savienojums konkurē ar turētāju.
Momentuzņēmums nav vēsture un nav notikumu plūsma. Savienojumi, kas ierodas un aiziet viena intervāla laikā, nekad neparādās, tāpēc audita prasību nevar izpildīt, aptaujājot failu, kas pārraksta pats sevi. Ja jums jāzina, vai lietotājs vispār bija pievienojies, momentuzņēmums ir nepareizais instruments.
Izkliede ir dizains, nevis režīms
Ja vairākiem patērētājiem patiešām vajag reāllaika pārvaldības datus, novietojiet vienu uzticamu komponentu socket priekšā un ļaujiet tam publicēt rūpīgi atlasītus novērojumus pārējiem. Šis komponents pārvalda atkārtoto savienojumu, autentifikācijas uzvednes un lēmumu par to, ko ir droši atklāt.
Veidojiet to apzināti: definējiet, kuri vaicājumi ir atļauti, reģistrējiet, kas jautāja, un izvairieties nejauši pārvērst izkliedes slāni par tālvadības paneli. Dēmonam nav vairāku klientu režīma, ko ieslēgt, un neviena konfigurācijas rinda tādu neizveido. Uzskatiet turētāju par drošības robežas daļu, jo tam ir saskarne, kas spēj atvienot cilvēkus. Tā pārstartēšanai jābūt rutīnas darbībai ar dokumentētu atkopšanas ceļu.
Uzskatiet socket kā privilēģiju, nevis metriku
Pārvaldības saskarne var atvienot lietotājus, mainīt stāvokli un lasīt notikumus, kuros nosaukti cilvēki. Tās parole autentificē klientu un nešifrē transportu, tāpēc tīkla klausītājs atklāj sarunu ikvienam, kas to var novērot.
Dodiet priekšroku vietējam socket vai stingri ierobežotam klausītājam un pārbaudiet, uz kuru procesu jūsu vācējs faktiski vēršas, jo serveru produkti piegādā savus pārvaldības API, kas uzvedas citādi. Uz nepareizo dēmonu vērsts vācējs sniedz pārliecinošus un nepareizus secinājumus. Apstipriniet ceļu un īpašnieka procesu pirms atkļūdojat vaicājumu, kas neko neatgriež.