'n Werkskerm-GUI hou die bestuursverbinding, so 'n moniteringstjek probeer sy eie oopmaak en lees niks, of erger, die GUI hou op om op vrae te reageer. Die gewone gevolgtrekking is dat die daemon wispelturig is. In die gemeenskapsdaemon is die beperking doelbewus: die beheervlak bedien een gekoppelde bestuurkliënt op 'n slag, en daardie getal het niks te make met hoeveel gebruikers die VPN kan dra nie.

Een sokket, een houer

Die bestuurskanaal aanvaar een gekoppelde kliënt. Wanneer 'n tweede kom terwyl die eerste aktief is, wag dit of word dit geweier, en daar is geen parallelle intekenaarmodus agter 'n opsie weggesteek nie. Om die huidige houer te ontkoppel laat die daemon die volgende aanvaar, en dit is 'n oordrag, nie 'n tweede kanaal nie.

Dit maak elke bykomende hulpmiddel 'n mededinger. As die GUI die verbinding besit, slaag 'n peilingstjek óf nie daarin om te koppel nie, óf eers nadat die GUI opgegee het, en die reeks herhaal by die volgende herkoppeling. As die tjek eerste koppel, verloor die GUI sy beheerpad en sy vrae hou op werk. Nie een van die hulpmiddels rapporteer die konflik nie, want elkeen sien net sy eie mislukte opdrag.

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

Besluit watter komponent beheer besit

Kies een houer vir die interaktiewe kanaal en laat dit die enigste ding wees wat koppel. 'n GUI wat die verbinding bestuur, 'n tjek wat op aanmeldingsvrae antwoord en 'n beheerder wat sessies beëindig, tel almal as houers, en net een kan die rol beklee.

Wanneer 'n GUI die verbinding besit, gebruik die integrasie wat daardie GUI bied in plaas daarvan om daarteen te veg. Om met die houer om die sokket mee te ding, veroorsaak onderbroke foute wat vir gebruikers lukraak lyk, en die persoon wat ontfout, sien gewoonlik net die tweede helfte van die wedloop. Let op watter proses ná 'n herbegin eerste koppel, want daardie volgorde besluit elke keer wie wen. 'n Monitor wat voor die GUI begin, hou die kanaal tot die GUI opgee.

Gebruik statusmomentopnames vir die versamelaars

Die meeste monitering het 'n lys nodig, nie 'n gesprek nie. 'n Periodieke statuslêer antwoord dit sonder om aan die beheerkanaal te raak, en dit werk aan terwyl die GUI gekoppel bly.

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

Die interval is die varsheidsbegroting, so stel dit op wat die paneel werklik nodig het, nie op die kleinste waarde wat veilig lyk nie. 'n Momentopname wat elke paar sekondes geskryf word, is goedkoop; 'n tjek wat elke paar sekondes weer aan die beheersokket koppel, is nie, want elke herkoppeling ding met die houer mee.

'n Momentopname is nie 'n geskiedenis nie en ook nie 'n stroom gebeurtenisse nie. Verbindings wat binne een interval kom en gaan, verskyn nooit, so 'n ouditvereiste kan nie bevredig word deur 'n lêer te peil wat homself oorskryf nie. As jy moet weet of 'n gebruiker hoegenaamd gekoppel het, is die momentopname die verkeerde instrument.

Uitwaaiering is 'n ontwerp, nie 'n modus nie

As verskeie verbruikers werklik lewende bestuursdata nodig het, plaas een enkele betroubare komponent voor die sokket en laat dit noukeurig gekose waarnemings aan die res publiseer. Daardie komponent besit die herkoppeling, die aanmeldingsvrae en die besluit oor wat veilig is om te openbaar.

Bou dit doelbewus: definieer watter navrae toegelaat word, teken aan wie gevra het, en vermy dat die uitwaaierlaag per ongeluk 'n afstandbeheerpaneel word. Die daemon het geen multikliëntmodus om aan te skakel nie, en geen konfigurasielyn skep een nie. Behandel die houer as deel van die veiligheidsgrens, want dit hou 'n vlak wat mense kan ontkoppel. Om dit te herbegin behoort 'n roetinehandeling met 'n gedokumenteerde herstelpad te wees.

Behandel die sokket as 'n voorreg, nie as statistiek nie

Die beheervlak kan gebruikers ontkoppel, toestand verander en gebeurtenisse lees wat mense noem. Sy wagwoord verifieer die kliënt en versleutel nie die vervoer nie, so 'n netwerkluisteraar stel die gesprek bloot aan enigiemand wat dit kan waarneem.

Verkies 'n plaaslike sokket of 'n streng beperkte luisteraar, en kontroleer watter proses jou versamelaar werklik aanspreek, want bedienerprodukte lewer hul eie bestuurs-API's wat anders optree. 'n Versamelaar wat op die verkeerde daemon gerig is, lewer selfversekerde en verkeerde gevolgtrekkings. Bevestig die pad en die eienaarproses voordat jy 'n navraag ontfout wat niks teruggee nie.

Verwante artikels