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 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

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í.

Související články