ఒకే ఒక నిర్వహణ క్లయింట్: మీ మానిటర్ GUIని ఎందుకు బయటకు పంపుతుంది
నిర్వహణ సాకెట్ ఒకసారి ఒకే కనెక్షన్ తీసుకుంటుంది. రెండవ సబ్స్క్రైబర్ కనెక్ట్ అవ్వడంలో విఫలమవుతుంది లేదా ప్రాంప్ట్లను కలిగి ఉన్న భాగం నుండి నియంత్రణను దొంగిలిస్తుంది.
ఒక డెస్క్టాప్ GUI నిర్వహణ కనెక్షన్ను కలిగి ఉంటుంది, కాబట్టి మానిటరింగ్ స్క్రిప్ట్ తన స్వంత కనెక్షన్ను తెరవడానికి ప్రయత్నిస్తుంది మరియు ఏమీ చదవదు, లేదా అంతకంటే దారుణంగా, GUI ప్రాంప్ట్లకు స్పందించడం ఆపేస్తుంది. సాధారణ ముగింపు ఏమిటంటే డెమన్ అస్థిరంగా ఉంది. కమ్యూనిటీ డెమన్లో ఈ పరిమితి ఉద్దేశపూర్వకం: నియంత్రణ ఇంటర్ఫేస్ ఒకసారి ఒకే కనెక్ట్ అయిన నిర్వహణ క్లయింట్కు సేవ చేస్తుంది, మరియు ఈ సంఖ్యకు VPN ఎంతమంది వినియోగదారులను మోయగలదు అనేదానికి ఎలాంటి సంబంధం లేదు.
ఒక సాకెట్, ఒక హోల్డర్
నిర్వహణ ఛానెల్ ఒకే కనెక్ట్ అయిన క్లయింట్ను అంగీకరిస్తుంది. మొదటిది సక్రియంగా ఉన్నప్పుడు రెండవది వస్తే, అది వేచి ఉంటుంది లేదా తిరస్కరించబడుతుంది, ఏ ఎంపిక వెనుకా సమాంతర సబ్స్క్రైబర్ మోడ్ దాగి లేదు. ప్రస్తుత హోల్డర్ను డిస్కనెక్ట్ చేయడం డెమన్కు తదుపరిదాన్ని అంగీకరించడానికి అనుమతిస్తుంది, ఇది రెండవ ఛానెల్ కాదు, ఒక హ్యాండ్ఓవర్.
ఇది ప్రతి అదనపు సాధనాన్ని పోటీదారుగా మారుస్తుంది. GUI కనెక్షన్ను కలిగి ఉంటే, పోలింగ్ స్క్రిప్ట్ కనెక్ట్ అవ్వడంలో విఫలమవుతుంది లేదా GUI వదిలేసిన తర్వాతే విజయవంతమవుతుంది, మరియు తదుపరి పునఃకనెక్షన్లో ఈ క్రమం పునరావృతమవుతుంది. స్క్రిప్ట్ మొదట కనెక్ట్ అయితే, GUI తన నియంత్రణ మార్గాన్ని కోల్పోతుంది మరియు దాని ప్రాంప్ట్లు పనిచేయడం ఆపేస్తాయి. ఏ సాధనం ఈ ఘర్షణను నివేదించదు, ఎందుకంటే ప్రతిది తన స్వంత విఫలమైన ఆదేశాన్ని మాత్రమే చూస్తుంది.
| 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 |
నియంత్రణ ఎవరి వద్ద ఉందో నిర్ణయించండి
ఇంటరాక్టివ్ ఛానెల్కు ఒక యజమానిని ఎంచుకోండి మరియు కనెక్ట్ అయ్యే ఏకైక వస్తువు అదే అవ్వనివ్వండి. కనెక్షన్ను నిర్వహించే GUI, ప్రామాణీకరణ ప్రాంప్ట్లకు సమాధానమిచ్చే స్క్రిప్ట్ మరియు సెషన్లను ముగించే నియంత్రకం అన్నీ యజమానులుగా పరిగణించబడతాయి, మరియు ఈ పాత్రను ఒకరు మాత్రమే తీసుకోగలరు.
GUI కనెక్షన్ను కలిగి ఉన్నప్పుడు, దానితో పోరాడే బదులు ఆ GUI అందించే ఇంటిగ్రేషన్ను ఉపయోగించండి. సాకెట్ కోసం యజమానితో పోటీ పడటం వినియోగదారులకు యాదృచ్ఛికంగా అనిపించే విరామ విఫలతలను సృష్టిస్తుంది, మరియు బగ్ వెతికే వ్యక్తి సాధారణంగా పరుగు రెండవ సగం మాత్రమే చూస్తాడు. రీబూట్ తర్వాత ఏ ప్రక్రియ మొదట కనెక్ట్ అవుతుందో గమనించండి, ఎందుకంటే ఆ క్రమమే ప్రతిసారీ ఎవరు గెలుస్తారో నిర్ణయిస్తుంది. GUI కంటే ముందు ప్రారంభమయ్యే మానిటర్ GUI వదిలేసే వరకు ఛానెల్ను ఉంచుతుంది.
కలెక్టర్ల కోసం స్థితి స్నాప్షాట్లను ఉపయోగించండి
చాలా మానిటరింగ్కు జాబితా కావాలి, సంభాషణ కాదు. క్రమానుగత స్థితి ఫైల్ నియంత్రణ ఛానెల్ను తాకకుండా దానికి సమాధానమిస్తుంది, మరియు GUI కనెక్ట్ అయి ఉన్నంత కాలం అది పనిచేస్తూనే ఉంటుంది.
status /run/openvpn/server.status 10
management /run/openvpn/server.sock unix
విరామం అనేది తాజాదన బడ్జెట్, కాబట్టి డాష్బోర్డ్కు నిజంగా అవసరమైనదానికి సెట్ చేయండి, సురక్షితంగా అనిపించే అతి చిన్న విలువకు కాదు. ప్రతి కొన్ని సెకన్లకు రాసే స్నాప్షాట్ చవకైనది; ప్రతి కొన్ని సెకన్లకు నియంత్రణ సాకెట్కు తిరిగి కనెక్ట్ అయ్యే స్క్రిప్ట్ చవకైనది కాదు, ఎందుకంటే ప్రతి పునఃకనెక్షన్ యజమానితో పోటీ పడుతుంది.
స్నాప్షాట్ చరిత్ర కాదు, ఈవెంట్ ఫీడ్ కూడా కాదు. ఒక విరామం లోపల వచ్చి వెళ్లే కనెక్షన్లు ఎప్పటికీ కనిపించవు, కాబట్టి తనను తాను తిరిగి రాసుకునే ఫైల్ను పోల్ చేయడం ద్వారా ఆడిట్ అవసరాన్ని తీర్చలేము. వినియోగదారు కనెక్ట్ అయ్యారా అని తెలుసుకోవాలంటే, స్నాప్షాట్ తప్పు సాధనం.
ఫ్యాన్-అవుట్ ఒక రూపకల్పన, మోడ్ కాదు
అనేక వినియోగదారులకు నిజంగా ప్రత్యక్ష నిర్వహణ డేటా అవసరమైతే, సాకెట్ ముందు ఒక నమ్మకమైన భాగాన్ని ఉంచండి మరియు జాగ్రత్తగా ఎంపిక చేసిన పరిశీలనలను మిగిలిన వారికి ప్రచురించనివ్వండి. ఆ భాగమే పునఃకనెక్షన్, ప్రామాణీకరణ ప్రాంప్ట్లు మరియు ఏమి బహిర్గతం చేయడం సురక్షితం అనే నిర్ణయానికి యజమాని.
దానిని ఉద్దేశపూర్వకంగా నిర్మించండి: ఏ క్వెరీలు అనుమతించబడతాయో నిర్వచించండి, ఎవరు అడిగారో లాగ్ చేయండి, మరియు ఫ్యాన్-అవుట్ పొరను అనుకోకుండా రిమోట్ కంట్రోల్ ప్యానెల్గా మార్చడానికి దూరంగా ఉండండి. డెమన్లో ప్రారంభించడానికి బహు-క్లయింట్ మోడ్ లేదు, ఏ కాన్ఫిగరేషన్ లైన్ దానిని సృష్టించదు. యజమానిని భద్రతా సరిహద్దులో భాగంగా భావించండి, ఎందుకంటే ఆయన వద్ద ప్రజలను డిస్కనెక్ట్ చేయగల ఇంటర్ఫేస్ ఉంది. దాన్ని పునఃప్రారంభించడం డాక్యుమెంట్ చేయబడిన రికవరీ మార్గంతో కూడిన సాధారణ పనిగా ఉండాలి.
సాకెట్ను ఒక హక్కుగా భావించండి, కొలమానాలుగా కాదు
నిర్వహణ ఇంటర్ఫేస్ వినియోగదారులను డిస్కనెక్ట్ చేయగలదు, స్థితిని మార్చగలదు మరియు ప్రజల పేర్లను పేర్కొనే ఈవెంట్లను చదవగలదు. దాని పాస్వర్డ్ క్లయింట్ను ప్రామాణీకరిస్తుంది మరియు రవాణాను ఎన్క్రిప్ట్ చేయదు, కాబట్టి నెట్వర్క్లో వినేవాడు సంభాషణను గమనించగల ఎవరికైనా దాన్ని బహిర్గతం చేస్తాడు.
స్థానిక సాకెట్ లేదా కఠినంగా పరిమితం చేసిన శ్రోతను ఇష్టపడండి, మరియు మీ కలెక్టర్ నిజంగా ఏ ప్రక్రియను సంబోధిస్తోందో తనిఖీ చేయండి, ఎందుకంటే సర్వర్ ఉత్పత్తులు భిన్నంగా ప్రవర్తించే తమ స్వంత నిర్వహణ APIలతో వస్తాయి. తప్పు డెమన్కు సూచించిన కలెక్టర్ విశ్వాసపూర్వకమైన కానీ తప్పు ముగింపులను ఉత్పత్తి చేస్తుంది. ఏమీ తిరిగి ఇవ్వని క్వెరీని డీబగ్ చేయడానికి ముందు మార్గాన్ని మరియు యజమాని ప్రక్రియను నిర్ధారించండి.