अनेक स्क्रिप्टबद्दलचा इशारा वेळापत्रकाच्या तक्रारीसारखा वाटतो, म्हणून स्पष्ट उपाय म्हणजे तो अदृश्य होईपर्यंत ओळींची पुनर्रचना करणे। पण ही वेळापत्रकाची तक्रार नाही। नंतरची --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 उत्तर, मार्ग नोंद आणि स्वच्छता आहेत, जी दोन पुनर्जोडणीनंतरही नीट चालतात।

संबंधित लेख