Socket ng pamamahala ng OpenVPN: channel ng kontrol, hindi metrics
Ang tinanggap na kliyente ng pamamahala ay may mga utos ng kontrol, hindi tanaw na binabasa lamang. Pagmay-ari ng Unix socket, laktawan ang sesyon para sa mga snapshot at ilayo ang TCP.
Tanungin ang interface ng pamamahala ng status nang isang beses at magsisimula itong magmukhang status port. Ngunit hindi ito. Kapag natanggap ang isang kliyente, maaari itong maglabas ng mga utos ng kontrol ng protocol, at ang account na nagpapatakbo ng kliyenteng iyon ay nagmamana ng lahat ng magagawa ng mga utos na iyon sa daemon. Ang ituring ito bilang feed na binabasa lamang ang pagkakamaling ginagawang hindi awtentikadong console ang isang integrasyon ng pagmamanman.
Ang paniniwala, at ang halaga
Ang paniniwala ay ang tagapakinig ng pamamahala ay katumbas ng endpoint ng metrics: ikabit ang isang kolektor, basahin ang mga counter, magpatuloy. Ang talagang nangyayari ay binubuksan ng kolektor ang isang sesyong may kakayahan sa kontrol, at ang bawat iba pang palagay na ginawa mo tungkol sa deployment ay umaasa na ngayon sa maayos na pag-uugali ng kolektor na iyon.
Wala sa interface ang nag-anunsyo ng mode na binabasa lamang. Walang papel ng tagamasid na mapipili, at ang isang username sa configuration ay hindi gumagawa ng isa.
Ano ang talagang hawak ng tinanggap na kliyente
Tinatanggap ng daemon ng komunidad ang isang aktibong kliyente ng pamamahala lamang sa isang pagkakataon. Ang nag-iisang puwang na iyon ay nangangahulugang hindi maaaring kumonekta ang GUI, script at ahente ng pagmamanman nang sabay; ang pangalawa ay naghihintay o nabigo habang hinahawakan ng una ang sesyon. Kung ipinapalagay ng disenyo mo ang sabay na mga mambabasa, mali na ito.
Kung saan sapat ang pana-panahong snapshot, binibigay ng output ng status file ang parehong mga numero nang walang live na sesyon. Ang pagsulat ng file na iyon sa pagitan at pagbasa nito gamit ang karaniwang mga pahintulot ng file ay nagpapanatili sa kolektor nang lubos sa labas ng control plane, at iyon ang kaayusang talagang kailangan ng karamihan ng pagmamanman.
Socket na pag-aari, hindi bukas
Ang socket ng domain ng Unix ay nagpapanatili ng landas ng kontrol sa labas ng network, na nag-aalis ng nagbabagong address ng tunnel sa problema. Hindi nito inaalis ang tanong ng mga pahintulot. Ang parent directory ay dapat na maisusulat ng account ng serbisyo at maabot ng account ng controller, at iyon ay dalawang magkahiwalay na pahintulot:
management /run/openvpn/office-management.sock unix /etc/openvpn/management.password
management-client-user vpn-observer
management-client-group vpn-observerAng password file ay may dalang lihim ng pamamahala sa unang linya nito. Protektahan ang file na iyon tulad ng anumang iba pang kredensyal, at ilayo ang nilalaman nito sa mga log at support ticket. Ang mga paghihigpit sa user at group ay mga pagsusuri ng kapwa sa Unix socket, hindi mga pahintulot ng filesystem, kaya ang nilalayong proseso ay nangangailangan ng access sa file at ng tumutugmang pagkakakilanlan.
Ang gawing accessible sa buong mundo ang socket para maalis ang error sa pahintulot ang tanging pagtatama na dapat iwasan. Ginagawa nitong isang bagay na maaaring ipatakbo ng anumang proseso sa host ang isang lokal na channel ng kontrol.
Ang paglathala nito sa TCP ay hindi parehong disenyo
Ang ilipat ang tagapakinig sa isang TCP port ay hindi ito ginagawang mas ligtas o mas maginhawa. Ang password ng pamamahala ay ipinapadala sa malinaw na teksto, kaya inilalantad ng tagapakinig ng TCP ang kredensyal at ang sesyon sa sinumang makakamasid sa landas. Ang maabot ito mula sa ibang host ay nangangailangan ng awtorisadong channel ng administrasyon, o isang maliit na lokal na ahente na naglalantad lamang ng mga obserbasyong kailangan mo.
Ang password sa isang transportasyong malinaw na teksto ay awtentikasyon na walang pagiging kompidensyal, at ang kombinasyong iyon ay mas masama kaysa sa itsura nito dahil parang protektado ito.
Mga dependency sa pagsisimula na hindi mo hiniling
Ilang opsyon ng pamamahala ang nagbabago ng cycle ng buhay ng daemon. Ang pagpigil sa pagsisimula hanggang kumonekta ang isang controller, o ang pagtatapos kapag nawala ang controller, ay ginagawang matigas na dependency ang isang opsyonal na tagamasid. Ang isang ahente ng pagmamanman na bumabagsak ay hihilahin din ang tunnel pababa kasama nito.
Suriin ang mga opsyong iyon bago paganahin ang anumang bagay bukod sa socket mismo. Ang opsyonal na obserbasyon ay dapat manatiling opsyonal, at ang patakaran sa restart ay hindi dapat ikabit sa isang kolektor na idinagdag para sa mga graph.
Ang file ng socket na naiwan pagkatapos ng isang nabigong proseso ay hindi patunay na may tagapakinig. Tukuyin kung aling instance ang may-ari ng landas bago ito alisin, at gamitin ang sariling daloy ng pagbawi ng serbisyo sa halip na magbura ng mga file sa ilalim ng tumatakbong daemon.
Ano ang hitsura ng pagtanggap
Apat na pagsusuri ang sumasaklaw sa disenyo: kumokonekta ang nilalayong pagkakakilanlan ng controller, tinatanggihan ang isang prosesong walang pagkakakilanlang iyon, nakakaligtas ang daemon sa isang controller na humihiwalay nang walang babala, at nagdadala pa rin ng trapiko ang tunnel sa isang kontroladong restart. Ang matagumpay na koneksyon ng pamamahala ay nagpapatunay lamang ng control plane. Wala itong sinasabi tungkol sa kung gumagana ang trapiko ng mga pribadong aplikasyon, kaya subukan ito nang hiwalay. Isulat ang apat na resulta sa lugar kung saan ito mahahanap ng susunod na operator.
Ang dokumentasyon ng interface ng pamamahala ay naglalarawan ng modelong isang kliyente at ng pribilehiyadong katangian ng protocol, at iyon ang bahaging sulit basahin bago mo itutok ang isang dashboard dito.