Jen jeden klient správy: proč váš monitor vykopne grafické rozhraní
Správní socket přijímá jedno připojení najednou. Druhý odběratel se buď nepřipojí, nebo ukradne řízení komponentě, která vlastní výzvy.
Grafické rozhraní na ploše drží správní připojení, takže monitorovací skript, který se pokusí otevřít vlastní, nic nepřečte, nebo, co je horší, rozhraní přestane odpovídat na výzvy. Obvyklý závěr je, že démon je nespolehlivý. V komunitním démonu je omezení záměrné: řídicí rozhraní obsluhuje jednoho připojeného klienta správy najednou a to číslo nemá nic společného s tím, kolik uživatelů VPN unese.
Jeden socket, jeden držitel
Kanál správy přijímá jednoho připojeného klienta. Když dorazí druhý, zatímco první je aktivní, čeká nebo je odmítnut, a neexistuje žádný paralelní režim odběratele skrytý za volbou. Odpojení stávajícího držitele umožní démonovi přijmout dalšího, což je předání, ne druhý kanál.
To dělá z každého dalšího nástroje konkurenta. Pokud rozhraní vlastní připojení, dotazovací skript se buď nepřipojí, nebo uspěje až poté, co se rozhraní vzdá, a sled se opakuje při dalším připojení. Pokud se skript připojí první, rozhraní ztratí svou řídicí cestu a jeho výzvy přestanou fungovat. Ani jeden nástroj konflikt nehlásí, protože každý vidí jen svůj vlastní neúspěšný příkaz.
| 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 |
Rozhodněte, která komponenta vlastní řízení
Vyberte jednoho držitele interaktivního kanálu a nechte ho být jediným, kdo se připojuje. Rozhraní, které spravuje připojení, skript, který odpovídá na ověřovací výzvy, a kontroler, který ukončuje relace, se všichni počítají jako držitelé a roli může mít jen jeden.
Když rozhraní vlastní připojení, použijte integraci, kterou toto rozhraní nabízí, místo abyste s ním bojovali. Závodění s držitelem o socket produkuje občasné poruchy, které uživatelům připadají náhodné, a ten, kdo ladí, obvykle vidí jen druhou polovinu závodu. Poznamenejte si, který proces se po restartu připojí první, protože toto pořadí pokaždé rozhoduje o vítězi. Monitor, který startuje před rozhraním, si kanál podrží, dokud se rozhraní nevzdá.
Používejte snímky stavu pro sběrače
Většina monitoringu potřebuje seznam, ne rozhovor. Pravidelný stavový soubor na to odpovídá, aniž by se dotkl řídicího kanálu, a funguje dál, zatímco rozhraní zůstává připojené.
status /run/openvpn/server.status 10
management /run/openvpn/server.sock unix
Interval je rozpočet čerstvosti, takže ho nastavte podle toho, co panel skutečně potřebuje, a ne na nejmenší hodnotu, která se zdá bezpečná. Snímek zapisovaný každých pár sekund je levný; skript, který se každých pár sekund znovu připojuje k řídicímu socketu, levný není, protože každé opětovné připojení soutěží s držitelem.
Snímek není historie ani proud událostí. Připojení, která přijdou a odejdou v rámci jednoho intervalu, se nikdy neobjeví, takže požadavek na audit nelze splnit dotazováním souboru, který přepisuje sám sebe. Pokud potřebujete vědět, zda se uživatel vůbec připojil, je snímek nesprávný nástroj.
Rozvětvování je návrh, ne režim
Pokud několik spotřebitelů skutečně potřebuje živá data správy, postavte před socket jednu důvěryhodnou komponentu a nechte ji publikovat úzce vybraná pozorování ostatním. Ta komponenta vlastní opětovné připojení, ověřovací výzvy a rozhodnutí o tom, co je bezpečné vystavit.
Postavte ji záměrně: definujte, které dotazy jsou povolené, logujte, kdo se ptal, a vyhněte se tomu, aby se z rozvětvovací vrstvy omylem stal panel dálkového ovládání. Démon nemá žádný víceklientský režim, který by šel zapnout, a žádný konfigurační řádek ho nevytváří. Berte držitele jako součást bezpečnostní hranice, protože drží rozhraní, které dokáže odpojit lidi. Jeho restart by měl být rutinní operací s dokumentovanou cestou obnovy.
Berte socket jako oprávnění, ne jako metriky
Rozhraní správy může odpojit uživatele, změnit stav a číst události, které jmenují lidi. Jeho heslo ověřuje klienta a nešifruje přenos, takže síťový posluchač vystaví rozhovor každému, kdo ho může sledovat.
Preferujte místní socket nebo přísně omezený posluchač a zkontrolujte, na který proces váš sběrač skutečně míří, protože serverové produkty dodávají vlastní správní API, která se chovají jinak. Sběrač namířený na špatného démona dává sebevědomé a špatné závěry. Potvrďte cestu a vlastnický proces, než začnete ladit dotaz, který nic nevrací.