Толькі адзін кліент кіравання: чаму ваш манітор выбівае графічны інтэрфейс
Кіроўны сокет прымае адно злучэнне за раз. Другі падпісчык або не можа падключыцца, або адбірае кіраванне ў кампанента, якому належаць запыты.
Настольны графічны інтэрфейс трымае кіроўнае злучэнне, таму скрыпт маніторынгу, які спрабуе адкрыць уласнае, нічога не чытае або, што горш, інтэрфейс перастае адказваць на запыты. Звычайная выснова — дэман нестабільны. У грамадскім дэмане абмежаванне наўмыснае: інтэрфейс кіравання абслугоўвае аднаго падключанага кліента кіравання за раз, і гэты лік ніяк не звязаны з тым, колькі карыстальнікаў здольны вытрымаць 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 кіравання, якія паводзяць сябе інакш. Зборшчык, скіраваны не на той дэман, дае ўпэўненыя і памылковыя высновы. Пацвердзіце шлях і працэс-уладальнік, перш чым адладжваць запыт, які нічога не вяртае.