OpenVPN को धेरै --up स्क्रिप्टसम्बन्धी चेतावनी: एउटा मात्र चल्छ
दुई up लाइन पुनःक्रम गर्दा दुवै चल्दैनन्। OpenVPN प्रत्येक चरणमा एउटा आदेश राख्छ, त्यसैले दुवै परिभाषा खोज्नुहोस् र कामलाई एउटै प्रवेश बिन्दु दिनुहोस्।
धेरै स्क्रिप्टसम्बन्धी चेतावनी तालिकाको गुनासोजस्तो सुनिन्छ, त्यसैले स्पष्ट समाधान त्यो नदेखिएसम्म लाइनहरू पुनःक्रम गर्नु हो। तर यो तालिकाको गुनासो होइन। पछिको --up परिभाषाले त्यो चरणका लागि पहिल्यै सुरक्षित आदेशलाई प्रतिस्थापन गर्छ, र पार्सरले त्यसै भन्छ, अर्थात् तपाईंका दुई स्क्रिप्टमध्ये ठ्याक्कै एउटा मात्र चलेको छ। अर्को त्यसको पछाडि पङ्क्तिमा छैन; त्यो गइसक्यो।
त्यसैले यो चेतावनी घातक नभए पनि ध्यान दिन योग्य छ: यसले जुन कुराको पूर्वानुमान गर्छ त्यो चुपचाप हुन छाडेको DNS अद्यावधिक वा मार्ग परिवर्तन हो।
चेतावनी क्रमको बारेमा होइन
OpenVPN up चरणका लागि एउटै प्रयोगकर्ता-स्क्रिप्ट आदेश राख्छ। पार्सरले प्रोफाइलबाट, समावेश गरिएको फाइलबाट वा कमाण्ड लाइनबाट अर्को परिभाषा भेट्टाउँदा पहिल्यै राखेको कुरा प्रतिस्थापन गर्छ र चेतावनी दिन्छ। केही पनि जोडिँदैन, केही पनि दुई पटक चल्दैन, र क्रमको प्रश्न नै हुँदैन। जुन आदेश बाँच्छ त्यो पार्सरले अन्तिम पटक देखेको आदेश हो, त्यसैले लाइन सार्दा विजेता बदलिन सक्छ र अर्को स्क्रिप्ट मृत रहन्छ।
यही ढाँचा अन्य स्क्रिप्ट चरणहरूमा पनि लागू हुन्छ: प्रत्येकका लागि एउटा आदेश। यदि दुई काम दुवै हुनुपर्छ भने तिनलाई सूचीजस्तो देखिने दुई निर्देशन होइन, एउटै प्रवेश बिन्दु चाहिन्छ।
वास्तविक सुरुवातमा दुवै परिभाषा खोज्नुहोस्
तपाईंले सम्पादन गरेको प्रोफाइलबाट होइन, डेमनले वास्तवमै पाएको कुराबाट सुरु गर्नुहोस्। ps -ef र युनिटको ExecStart ले कमाण्ड लाइन देखाउँछन्, जसमा कन्टेनर प्रवेश बिन्दु वा र्यापरबाट --up थपिएको हुन सक्छ; वितरणको init फाइलले पनि त्यही गर्न सक्छ। systemctl cat openvpn-server@server सेवा आफैंले के थप्छ भनेर देखाउँछ, र कन्फिगरेसन डाइरेक्टरीमा पुनरावृत्त grep ले फाइल-स्तरीय परिभाषा भेट्टाउँछ। नक्कलहरू सामान्यतया फरक तहबाट आउँछन्, र एउटा फाइल सम्पादन गर्दा केही नबदल्नुको कारण पनि त्यही हो।
स्क्रिप्टलाई अर्को डाइरेक्टरीमा प्रतिलिपि गर्नु वा नाम बदल्नुले पनि निर्देशन हटाउँदैन। पार्सरले फाइल होइन, परिभाषा गन्छ।
एउटै hook कामको मालिक होस्
टिकाउ समाधान भनेको दुवै क्रिया सोचविचार गरी क्रममा चलाउने एउटै डिस्प्याचर हो। set -eu सहितको छोटो shell स्क्रिप्टले आवश्यक एकीकरण र त्यसपछि स्थानीय क्रिया बोलाउँछ, र तर्कहरूको सीमा जोगिनका लागि "$@" पास गर्छ; यसले व्यवहार एउटै जाँच्न सकिने ठाउँमा राख्छ। तर्क पास गर्नुले तिनलाई मात्र जोगाउँछ; दुई सहायकले एउटै इन्टरफेस अपेक्षा गर्छन् भनी यसले प्रमाणित गर्दैन, त्यसैले प्रत्येकको करार पढ्नुहोस्। असफलताले के गर्नुपर्छ र आंशिक परिवर्तन फर्काउनुपर्छ कि भन्ने निर्णय गर्नुहोस्।
यदि लन्चरले समर्थित एक्सटेन्सन hook दिन्छ भने हातले बनाएको शृंखलाभन्दा त्यही रोज्नुहोस्। कन्टेनर इमेज वा विक्रेताको प्याकेजमा थप कामका लागि कागजात गरिएको ठाउँ हुन्छ, र त्यसको प्रयोगले अपग्रेडले तपाईंको डिस्प्याचरमाथि नलेख्ने बनाउँछ।
सफाइ सम्बन्धित down चरणको हो। DNS पुनःलेख्ने वा मार्ग थप्ने up क्रियालाई कागजात गरिएको उल्टाउने आवश्यक हुन्छ, र केवल सुरुवात सम्हाल्ने डिस्प्याचर आधा डिजाइन हो।
केवल मौन होइन, एकीकरण पुष्टि गर्नुहोस्
दोहोरिएको चेतावनी हटाउनु सजिलो भाग हो; एकीकरणले अझै काम गर्नुपर्छ। जडानपछि resolvectl status प्रयोग गरी वा /etc/resolv.conf पढेर रिजोल्भरको अवस्था जाँच्नुहोस्, र ip route प्रयोग गरी मार्ग पुष्टि गर्नुहोस्। त्यसपछि डिस्कनेक्ट गरी फेरि जोड्नुहोस्, किनकि हतारमा जोडिएको hook ले अघिल्लो सत्रको केही कुरा छोड्छ। journalctl -u openvpn-server@server -b ले तपाईंको डिस्प्याचर चल्यो कि र के छाप्यो देखाउँछ।
hook का विशेषाधिकार जहाँ हुनुपर्ने हो त्यहीँ राख्नुहोस्। script-security बढाउनु वा डेमनलाई बढी अधिकारसहित चलाउनु बदलिएको hook का लागि समाधान होइन; यसले भविष्यका हरेक स्क्रिप्ट, आक्रमणकारीले नाम दिने स्क्रिप्टसमेत के गर्न सक्छ भन्ने फराकिलो बनाउँछ।
समाधान साँच्चै भएको संकेत लगमा मौनता होइन। त्यो DNS उत्तर, मार्ग प्रविष्टि र सफाइ हुन्, जुन दुई पटक पुनःजडानपछि पनि ठीकसँग चल्छन्।