Само један клијент управљања: зашто ваш надзорник избацује графички интерфејс
Управљачки сокет прихвата једну везу истовремено. Други претплатник или не може да се прикључи или преузима контролу од компоненте која поседује упите.
Стоно графичко сучеље држи управљачку везу, па скрипта за надзор која покуша да отвори сопствену не чита ништа или, што је горе, сучеље престаје да одговара на упите. Уобичајен закључак је да је демон нестабилан. У заједничком демону ограничење је намерно: управљачко сучеље услужује једног повезаног клијента управљања истовремено, а тај број нема никакве везе с тим колико корисника VPN може да носи.
Један сокет, један власник
Канал управљања прихвата једног повезаног клијента. Кад други стигне док је први активан, чека или бива одбијен, и нема никаквог паралелног начина претплатника скривеног иза опције. Одспајање тренутног власника омогућује демону да прихвати следећег, што је предаја, а не други канал.
То чини сваки додатни алат конкурентом. Ако сучеље поседује везу, скрипта за анкетирање или се не прикључи или успе тек након што сучеље одустане, а след се понавља при следећем поновном спајању. Ако се скрипта прикључи прва, сучеље губи свој пут управљања и његови упити престају да раде. Ниједан алат не пријављује сукоб, јер сваки види само сопствену неуспелу наредбу.
| 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 |
Одлучите која компонента поседује контролу
Изаберите једног власника интерактивног канала и пустите да буде једино што се спаја. Сучеље које управља везом, скрипта која одговара на упите аутентификације и контролер који прекида сесије сви се рачунају као власници, а улогу може да држи само један.
Кад сучеље поседује везу, употребите интеграцију коју оно нуди уместо да се с њим борите. Трка с власником за сокет ствара испрекидане кварове који се корисницима чине случајнима, а онај који отклања грешке обично види само другу половину трке. Забележите који се процес спаја први након поновног покретања, јер тај поредак сваки пут одлучује ко побеђује. Надзорник који крене пре сучеља задржаће канал док сучеље не одустане.
Користите снимке стања за колекторе
Већини надзорних потреба треба списак, а не разговор. Повремена датотека стања одговара на то без дирања управљачког канала и наставља да ради док сучеље остаје повезано.
status /run/openvpn/server.status 10
management /run/openvpn/server.sock unix
Интервал је буџет свежине, зато га поставите према ономе што надзорна табла стварно треба, а не према најмањој вредности која се чини сигурном. Снимка записана сваких неколико секунди је јефтина; скрипта која се сваких неколико секунди поново спаја на управљачки сокет није, јер свако поновно спајање конкурише власнику.
Снимка није историја и није ток догађаја. Веза које дођу и оду унутар једног интервала никада се не појављују, па се захтев за ревизијом не може испунити анкетирањем датотеке која саму себе преписује. Ако морате да знате да ли се корисник уопште повезао, снимка је погрешан инструмент.
Разгранавање је дизајн, а не начин рада
Ако више потрошача заиста треба податке управљања уживо, ставите једну поуздану компоненту пред сокет и пустите је да објављује уско одабрана опажања осталима. Та компонента поседује поновно спајање, упите аутентификације и одлуку о томе шта је безбедно изложити.
Изградите је намерно: дефинишите који су упити допуштени, бележите ко је питао и избегните да слој разгранавања случајно постане даљински управљач. Демон нема начин рада с више клијената који би могао да се укључи и ниједан конфигурацијски ред га не ствара. Третирајте власника као део сигурносне границе, јер држи сучеље које може да одспоји људе. Његово поновно покретање требало би да буде рутинска операција с документованим путем опоравка.
Третирајте сокет као привилегију, а не као метрике
Управљачко сучеље може да одспоји кориснике, промени стање и чита догађаје у којима се именују особе. Његова лозинка аутентификује клијента и не шифрује пренос, па мрежни слушач разговор излаже свакоме ко га може посматрати.
Предност дајте локалном сокету или строго ограниченом слушачу и проверите којем се процесу ваш колектор заправо обраћа, јер серверски производи доносе сопствене API-је управљања који се понашају другачије. Колектор усмерен на погрешан демон даје самоуверене и погрешне закључке. Потврдите путању и процес власника пре него што почнете да отклањате грешке упита који ништа не враћа.