युनिट -.mount मास्क केलेले आहे: OpenVPN क्लायंट सुरू होणार नाही
/run/systemd/system मध्ये उरलेली -.mount फाइल रूट माउंट युनिट मास्क करते, म्हणून फाइल सिस्टमची गरज असलेले प्रत्येक युनिट OpenVPN सुरू होण्यापूर्वीच अयशस्वी होते.
तुमची सेवा OpenVPN कधीही चालण्यापूर्वीच अयशस्वी होते, आणि त्रुटी अशा माउंट युनिटबद्दल बोलते जे तुम्ही कधीही कॉन्फिगर केले नाही. हेच लक्षण आहे: systemd संपूर्ण व्यवहार नाकारत आहे कारण रूट माउंट युनिट मास्क आहे, आणि तुमची VPN प्रोफाइल अजून वाचली गेलेली नाही. नेहमीचे कारण म्हणजे रनटाइम युनिट डिरेक्टरीत उरलेली फाइल, तुटलेला fstab नाही आणि गहाळ प्रमाणपत्र नाही. आधी फाइलचा मागोवा घ्या, कारण तिला वगळणे हे सर्वात स्वस्त स्पष्टीकरण आहे.
त्रुटी रूट माउंटचे नाव घेते, तुमच्या प्रोफाइलचे नाही
systemd स्वतः कर्नेलच्या माउंट माहितीवरून रूट माउंट युनिट तयार करतो आणि तिला -.mount म्हणतो कारण डॅश रूट मार्ग दर्शवतो. हे युनिट सहसा फक्त मेमरीत असते आणि त्यामागे फाइल नसते. त्रुटी जेव्हा म्हणते की ते मास्क आहे, तेव्हा कोणीतरी युनिट फाइल तिथे ठेवली आहे जिथून systemd ती लोड करेल आणि ती फाइल /dev/null कडे निर्देशित केली आहे. मास्क असणे ही खरी स्थिती आहे, संदेशातील टायपो नाही.
इन्स्टन्स युनिट अयशस्वी होते कारण त्याचा जॉब ग्राफ क्रम आणि स्वतःच्या माउंट आवश्यकतांमधून रूट माउंटपर्यंत पोहोचतो. OpenVPN बायनरी चालण्यापूर्वीच व्यवहार नाकारला जातो, म्हणून क्लायंटच्या कॉन्फिगरेशनमधील काहीही कारण असू शकत नाही. म्हणूनच प्रोफाइल, प्रमाणपत्रे किंवा क्रेडेन्शियल्स बदलण्याचा या विशिष्ट अयशस्वीतेवर काहीच परिणाम होत नाही.
OpenVPN डीबग करण्यापूर्वी रनटाइम डिरेक्टरी पहा
रनटाइम युनिट डिरेक्टरीत नेमक्या त्याच नावाची फाइल शोधा, नंतर systemd ला विचारा की त्याला युनिट काय वाटते. दोन्ही उत्तरे झटपट आहेत, आणि एकत्रितपणे उरलेल्या फाइलला खऱ्या माउंट समस्येपासून वेगळे करतात.
ls -l /run/systemd/system/-.mount
systemctl status -.mount
systemctl list-unit-files --state=masked | grep mount
नेहमीच्या मशीनमध्ये अशी फाइल नसते, आणि मास्क केलेल्यांच्या यादीत रूट माउंट नसतो. पहिला कमांड /dev/null ची सिम्बॉलिक लिंक छापत असल्यास निदान निश्चित आहे. त्याच डिरेक्टरीत त्याच साधनांनी तयार केलेला tmp.mount मास्कही असू शकतो, आणि तो दुसऱ्या नावाने त्याच प्रकारची अयशस्वीता निर्माण करतो. संपूर्ण डिरेक्टरी पहा, फक्त त्रुटीतील नाव नाही.
ls -la /run/systemd/system/*.mount
डिरेक्टरी स्वच्छ असेल आणि युनिट अजूनही मास्क असेल, तर मास्क शोधमार्गात दुसरीकडे आहे, आणि systemctl cat -.mount कोणती फाइल लोड होत आहे ते दाखवेल.
फाइल हटवा, पुन्हा लोड करा आणि पुन्हा सुरू करा
रनटाइम फाइल काढणे आणि मॅनेजर पुन्हा लोड करणे पुरेसे आहे, आणि ते पॅकेजमधून आलेल्या कोणत्याही गोष्टीला स्पर्श करत नाही. सुरू करण्यापूर्वी पुन्हा लोड करा, कारण systemd लोड केलेल्या युनिटची स्थिती डिरेक्टरी पुन्हा वाचेपर्यंत ठेवतो.
sudo rm -f /run/systemd/system/-.mount /run/systemd/system/tmp.mount
sudo systemctl daemon-reload
systemctl status -.mount
sudo systemctl start [email protected]
मग दुरुस्ती चालली असे गृहीत धरण्याऐवजी सेवेचा स्वतःचा जर्नल वाचा. स्वच्छ सुरुवात फक्त हे सिद्ध करते की systemd ने युनिट स्वीकारले; क्लायंट तरीही गहाळ प्रोफाइल, अगम्य सहकारी किंवा सत्यापित न होणाऱ्या प्रमाणपत्रामुळे मरू शकतो. या OpenVPN च्या सामान्य समस्या होत्या ज्या मास्क युनिटमागे लपल्या होत्या. जर्नल नोंदवते की कोणती प्रोफाइल लोड झाली आणि बोगदा खरोखर तयार झाला का. युनिट सुरू झाले आणि बोगदा नाही, तर तुम्ही दुसऱ्या समस्येवर गेला आहात, आणि ही प्रगती आहे.
journalctl -u [email protected] -b --no-pager
/run तात्पुरती फाइल सिस्टम असल्याने, रीबूट फाइलही पुसतो. यामुळे रीबूट उपयुक्त चाचणी होते: सेवा रीबूटनंतर चालली आणि पुढील डिप्लॉयमेंटनंतर पुन्हा अयशस्वी झाली, तर फाइल इमेजमध्ये भाजली जात आहे.
ती इमेजमधून परत येण्यापासून रोखा
कंटेनर किंवा व्हर्च्युअल मशीनचा टेम्पलेट जो तयारीच्या वेळी माउंट युनिट मास्क करतो, तो मास्क प्रत्येक क्लोनमध्ये नेईल. पुढे ज्याला फाइल सिस्टम हवी असेल ते तुटते, आणि संदेश ती आलेल्या इमेजऐवजी माउंटला दोष देतो. एका चालू इन्स्टन्समध्ये दुरुस्ती केल्यास पुढील इन्स्टन्स तयार होईपर्यंत समस्या लपते.
तयारीच्या संदर्भात फाइलचे नाव आणि ती तयार करणारा कमांड शोधा, नंतर टेम्पलेटमधून मास्क काढा आणि पुन्हा तयार करा. मास्क तयारीच्या वेळी खरोखर आवश्यक असल्यास, तो तयारी पूर्ण करणाऱ्या त्याच थरात काढा, जेणेकरून पाठवली जाणारी इमेज स्वच्छ सुरू होईल. ताज्या क्लोनवर तपासा, हाताने दुरुस्त केलेल्या मशीनवर नाही. इमेज बदलली हे सिद्ध करणारी हीच एकमेव चाचणी आहे.
जे लक्षण लक्षात ठेवावे ते म्हणजे त्रुटी आणि तुम्ही कॉन्फिगर करत असलेल्या गोष्टीतील तफावत. जेव्हा systemd माउंटबद्दल तक्रार करेल आणि तुम्ही VPN क्लायंट सुरू करत असाल, तेव्हा आधी संदेशातील युनिटचे नाव वाचा आणि नंतर सेवेचे नाव.