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चार अवस्था परीक्षण गर्नुहोस्: घरमा सुरुवात, बाहिर सुरुवात, चल्न नसक्ने जाँच, र युनिट सक्रिय हुँदा नेटवर्कहरूबीचको स्थानान्तरण। जर्नलमा छोड्ने कारण देखिने राख्नुहोस् ताकि जानाजान लिएको निर्णय कहिल्यै प्रमाणीकरण असफलता जस्तो नदेखियोस्। सेवा सन्दर्भ ले एक्जिटको अर्थ र न्यूनतम संस्करणको दस्तावेजीकरण गर्छ।