Len jeden klient správy: prečo váš monitor vyhodí grafické rozhranie
Správny socket prijíma jedno pripojenie naraz. Druhý odberateľ sa buď nepripojí, alebo ukradne riadenie komponentu, ktorý vlastní výzvy.
Grafické rozhranie na ploche drží správne pripojenie, takže monitorovací skript, ktorý sa pokúsi otvoriť vlastné, nič neprečíta alebo, čo je horšie, rozhranie prestane odpovedať na výzvy. Zvyčajný záver je, že démon je nespoľahlivý. V komunitnom démonovi je obmedzenie zámerné: riadiace rozhranie obsluhuje jedného pripojeného klienta správy naraz a to číslo nemá nič spoločné s tým, koľko používateľov VPN unesie.
Jeden socket, jeden držiteľ
Kanál správy prijíma jedného pripojeného klienta. Keď dorazí druhý, zatiaľ čo prvý je aktívny, čaká alebo je odmietnutý, a neexistuje žiadny paralelný režim odberateľa skrytý za voľbou. Odpojenie aktuálneho držiteľa umožní démonovi prijať ďalšieho, čo je odovzdanie, nie druhý kanál.
To robí z každého ďalšieho nástroja konkurenta. Ak rozhranie vlastní pripojenie, dopytovací skript sa buď nepripojí, alebo uspeje až po tom, čo sa rozhranie vzdá, a sled sa opakuje pri ďalšom pripojení. Ak sa skript pripojí prvý, rozhranie stratí svoju riadiacu cestu a jeho výzvy prestanú fungovať. Ani jeden nástroj konflikt nehlási, pretože každý vidí len svoj vlastný neúspešný prí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 |
Rozhodnite, ktorý komponent vlastní riadenie
Vyberte jedného držiteľa interaktívneho kanála a nechajte ho byť jediným, kto sa pripája. Rozhranie, ktoré spravuje pripojenie, skript, ktorý odpovedá na overovacie výzvy, a kontrolér, ktorý ukončuje relácie, sa všetci počítajú ako držitelia a rolu môže mať len jeden.
Keď rozhranie vlastní pripojenie, použite integráciu, ktorú toto rozhranie ponúka, namiesto toho, aby ste s ním bojovali. Pretekanie s držiteľom o socket produkuje občasné poruchy, ktoré používateľom pripadajú náhodné, a ten, kto ladí, zvyčajne vidí len druhú polovicu pretekov. Poznamenajte si, ktorý proces sa po reštarte pripojí prvý, pretože toto poradie zakaždým rozhoduje o víťazovi. Monitor, ktorý štartuje pred rozhraním, si kanál podrží, kým sa rozhranie nevzdá.
Používajte snímky stavu pre zberače
Väčšina monitoringu potrebuje zoznam, nie rozhovor. Pravidelný stavový súbor na to odpovedá bez toho, aby sa dotkol riadiaceho kanála, a funguje ďalej, kým rozhranie zostáva pripojené.
status /run/openvpn/server.status 10
management /run/openvpn/server.sock unix
Interval je rozpočet čerstvosti, takže ho nastavte podľa toho, čo panel skutočne potrebuje, a nie na najmenšiu hodnotu, ktorá sa zdá bezpečná. Snímka zapisovaná každých pár sekúnd je lacná; skript, ktorý sa každých pár sekúnd znova pripája k riadiacemu socketu, lacný nie je, pretože každé opätovné pripojenie súťaží s držiteľom.
Snímka nie je história ani prúd udalostí. Pripojenia, ktoré prídu a odídu v rámci jedného intervalu, sa nikdy neobjavia, takže požiadavku na audit nemožno splniť dopytovaním súboru, ktorý prepisuje sám seba. Ak potrebujete vedieť, či sa používateľ vôbec pripojil, je snímka nesprávny nástroj.
Vetvenie je návrh, nie režim
Ak niekoľko spotrebiteľov skutočne potrebuje živé údaje správy, postavte pred socket jeden dôveryhodný komponent a nechajte ho publikovať úzko vybrané pozorovania ostatným. Ten komponent vlastní opätovné pripojenie, overovacie výzvy a rozhodnutie o tom, čo je bezpečné vystaviť.
Postavte ho zámerne: definujte, ktoré dopyty sú povolené, logujte, kto sa pýtal, a vyhnite sa tomu, aby sa z vetviacej vrstvy omylom stal panel diaľkového ovládania. Démon nemá žiadny viacklientsky režim, ktorý by sa dal zapnúť, a žiadny konfiguračný riadok ho nevytvára. Berte držiteľa ako súčasť bezpečnostnej hranice, pretože drží rozhranie, ktoré dokáže odpojiť ľudí. Jeho reštart by mal byť rutinnou operáciou s dokumentovanou cestou obnovy.
Berte socket ako oprávnenie, nie ako metriky
Rozhranie správy môže odpojiť používateľov, zmeniť stav a čítať udalosti, ktoré menujú ľudí. Jeho heslo overuje klienta a nešifruje prenos, takže sieťový poslucháč vystaví rozhovor každému, kto ho môže sledovať.
Preferujte miestny socket alebo prísne obmedzený poslucháč a skontrolujte, na ktorý proces váš zberač skutočne mieri, pretože serverové produkty dodávajú vlastné správne API, ktoré sa správajú inak. Zberač namierený na nesprávneho démona dáva sebavedomé a nesprávne závery. Potvrďte cestu a vlastnícky proces, kým začnete ladiť dopyt, ktorý nič nevracia.