systemd ExecCondition ने घरचा VPN वगळा
जाणीवपूर्वक वगळणे आणि तुटलेली तयारी आदेश या दोन वेगळ्या गोष्टी आहेत. हेल्परचे एक्झिट कोड ठरवा, नंतर नेटवर्कमधील बदल तपासा.
लॅपटॉप आधीच त्या नेटवर्कवर असेल तेव्हा घरच्या नेटवर्कच्या VPN ला करण्यासारखे काही उरत नाही. मोहक शॉर्टकट म्हणजे शून्य नसलेल्या कोडने बाहेर पडणारा तयारी आदेश; त्यामुळे युनिट अयशस्वी होते आणि प्रत्येक डॅशबोर्ड तुटलेला दिसतो. systemd मध्ये नेमक्या या प्रकारच्या निर्णयासाठी निर्देश आहे, आणि तो जाणीवपूर्वक वगळण्याला खऱ्या बिघाडापासून वेगळे करतो. ते योग्यरीत्या करणे म्हणजे मुख्यतः प्रत्येक एक्झिट कोडचा अर्थ लिहून ठेवणे.
अयशस्वी पूर्वअट चुकीचा आकार का आहे
ExecStartPre शून्य नसलेल्या एक्झिटला सुरुवातीचा अपयश मानते, जे सेवा तयार करणाऱ्या आदेशासाठी योग्य आहे. ते अट म्हणून वापरल्यास धोरणाचा निर्णय तुटलेल्या अवलंबनापासून वेगळा ओळखता येत नाही. ExecCondition यासाठी आहे की युनिट अपयशी असे चिन्हांकित न होता सुरू होण्यास नकार देऊ शके.
हा फरक रात्री तीन वाजता महत्त्वाचा असतो, जेव्हा रचनेनुसार वागणाऱ्या लाल युनिटची तपासणी कोणालाही करायची नसते. अयशस्वी युनिट जाणीवपूर्वक केलेल्या अपयशांमध्ये खऱ्या बिघाडांनाही लपवते.
आधी एक्झिट-कोड करार लिहा
स्क्रिप्टपूर्वी करार लिहा. शून्य एक्झिट म्हणजे पुढे चालू ठेवणे, एक एक्झिट म्हणजे उर्वरित स्टार्ट आदेश वगळणे, आणि 255 एक्झिट म्हणजे अट स्वतःच चालू शकली नाही. दोन आणि 254 मधील कोडही सामान्यतः वगळणे दर्शवतात, हेल्पर यादृच्छिक त्रुटी कोड परत देतो तेव्हा हे विसरणे सोपे असते. खालील drop-in हेल्परला युनिटच्या खऱ्या नावाशी जोडतो.
[Service]
ExecCondition=/usr/local/libexec/should-start-home-vpnमूलभूत अर्थ गृहीत धरण्यापूर्वी प्रभावी युनिटमध्ये वारशाने मिळालेल्या SuccessExitStatus किंवा stop-post सेटिंग्ज तपासा. नंतर तीनही निकाल जाणीवपूर्वक तपासा.
नेटवर्कचा सुगावा स्थानाचा पुरावा नाही
पोहोचण्यायोग्य राउटर पत्ता किंवा ज्ञात MAC योग्य नेटवर्कचा सुगावा देऊ शकतात, आणि दोन्हीपैकी कोणतेही ते सिद्ध करत नाही. दुसरे नेटवर्क तोच पत्ता पुन्हा वापरू शकते, ARP डेटा जुना असू शकतो, आणि ओळखणारे घटक बनावट करता येतात. तपासणीला धोरणाशी सुसंगत अनुकूलन माना, प्रमाणीकरणाचा निकाल नाही.
अनिश्चिततेचा अर्थ आधीच ठरवा. शंका असताना VPN सुरू करणे अशा क्लायंटसाठी सुरक्षित आहे जो फक्त जोडू शकणार नाही; शंका असताना ते वगळणे सुरक्षित नाही. तपासणी मर्यादित ठेवा, आणि यादीतील पहिला गृहीत धरण्याऐवजी सक्रिय इंटरफेस वाचा. जी तपासणी अडकते ती “नाही” असे उत्तर देणाऱ्यापेक्षा वाईट आहे, कारण युनिट तिची वाट पाहते.
त्या गृहीतकांची नोंद युनिट फाइलजवळ करा, जेणेकरून पुढील व्यक्तीला हेल्पर काय मानतो हे कळेल. स्क्रिप्टच्या शीर्षस्थानी टिप्पणी ठेवणे हे त्या साठवण्याचे सर्वात स्वस्त स्थान आहे.
नेटवर्कमधील बदल हाताळा
सेवा सुरू होताना अट चालते, आणि नंतर तिचे पुनर्मूल्यांकन होत नाही. लॅपटॉप कॅफेमध्ये गेल्यानंतरही वगळलेले युनिट वगळलेलेच राहते, आणि लॅपटॉप घरी परत आल्यानंतरही चालू असलेला बोगदा वरच राहतो. नेटवर्क बदलाचे जीवनचक्र वेगळ्या यंत्रणेने सुरू आणि थांबवण्याच्या निर्णयाशी जोडा.
systemctl cat home-vpn.serviceचार प्रकरणे तपासा: घरी सुरुवात, बाहेर सुरुवात, चालू शकत नाही अशी तपासणी, आणि युनिट सक्रिय असताना नेटवर्कमधील बदल. जर्नलमध्ये वगळण्याचे कारण दृश्यमान ठेवा, जेणेकरून जाणीवपूर्वक घेतलेला निर्णय कधीही प्रमाणीकरण अपयशासारखा वाटणार नाही. सेवा संदर्भ एक्झिटचा अर्थ आणि किमान आवृत्तीचे दस्तऐवजीकरण करतो.