WireGuard त्याचा इंटरफेस तयार करू शकत नाही: कर्नेल की परवानगी?
कोणत्याही पीअरच्या हँडशेकपूर्वीच इंटरफेस तयार होणे अयशस्वी होते. गहाळ मॉड्यूलला परवानगीच्या मर्यादेपासून किंवा विद्यमान इंटरफेस मालकापासून वेगळे ओळखण्यासाठी त्रुटी वाचा.
WireGuard त्याचा इंटरफेस तयार करण्यात अयशस्वी होतो, त्यामुळे संरचना करण्यासाठी उपकरण नाही, देवाणघेवाण करण्यासाठी की नाही आणि डीबग करण्यासाठी हँडशेक नाही। अयशस्वीता पूर्णपणे स्थानिक मशीनवरच राहते, आणि त्रुटीचा मजकूर सांगतो की स्थानिक स्टॅकचा कोणता भाग नकार दिला। ती योग्यरीत्या वाचणे पीअरची संरचना पुन्हा प्रस्थापित करण्यापेक्षा जलद आहे। स्तर वेगळे करता येतात, आणि संदेश नकार देणाऱ्या स्तराचे नाव घेतो।
कोणताही पीअर बोलण्यापूर्वीच त्रुटी उद्भवते
इंटरफेस तयार करणे म्हणजे कर्नेलला wireguard प्रकारच्या उपकरणासाठी एक netlink विनंती। कर्नेलकडे तो प्रकार समजणारा ड्रायव्हर आहे किंवा नाही, आणि उत्तर लगेच परत येते। या पायरीत कोणतेही पॅकेट मशीनबाहेर जात नाही, म्हणून एंडपॉइंट पत्ते आणि सर्व्हर की कारण असू शकत नाहीत।
हा क्रम निदानासाठी महत्त्वाचा आहे। जर आदेशाने कधीही उपकरण तयार केले नाही, तर समस्या चुकीची सार्वजनिक की किंवा अवरोधित UDP पोर्ट असू शकत नाही। आधी स्थानिक निर्मिती मार्ग दुरुस्त करा आणि त्यानंतरच बाहेर पहा।
कोणती अंमलबजावणी उपकरणाची मालक असावी
त्या विनंतीला दोन अंमलबजावणी उत्तर देऊ शकतात। कर्नेलमधील मॉड्यूल wireguard उपकरण प्रकार नोंदवते, आणि wireguard-go सारखी वापरकर्ता-जागा अंमलबजावणी वेगळ्या यंत्रणेद्वारे तोच इंटरफेस पुरवते। जर मॉड्यूल नसेल, तर कर्नेल असमर्थित उपकरणाच्या त्रुटीसह विनंती नाकारते, आणि उपाय म्हणजे एकतर मॉड्यूल लोड करणे किंवा साधने वापरकर्ता-जागा अंमलबजावणीकडे वळवणे।
दोन्हींमधून निवडण्यापूर्वी प्रत्यक्षात काय आहे ते तपासा। पहिला आदेश मॉड्यूल लोड झाले आहे का ते दाखवतो आणि दुसरा कर्नेलला थेट विचारतो:
lsmod | grep wireguard
ip link add wgtest0 type wireguard
दुसरा आदेश हे शक्य तितके लहान पुनरुत्पादन आहे: तो उपकरण मागतो आणि दुसरे काही नाही। जर तो असमर्थित प्रकाराच्या संदेशासह अयशस्वी होत असेल, तर गहाळ भाग अंमलबजावणी आहे, तुमची संरचना फाइल नाही।
| Error text | What refused | Next step |
|---|---|---|
| Unknown device type or operation not supported | The kernel has no wireguard driver | Load the module or use the userspace implementation |
| Operation not permitted | Missing privilege | Use the service context or grant the capability |
| File exists | The name is already in use | Inspect the owner before touching it |
| No such device in a container | No tunnel device or capability | Add the device and NET_ADMIN to the container |
परवानग्या आणि कंटेनरच्या मर्यादा
नेटवर्क उपकरण तयार करणे आणि संरचित करणे यासाठी परवानगी लागते, एकतर root म्हणून किंवा नेटवर्क प्रशासनाच्या क्षमतेसह। सामान्य वापरकर्ता सत्र हे करू शकत नाही, आणि ही मर्यादा हीच रचना आहे, तुम्ही पुनरावलोकन न केलेला इंस्टॉलर चालवून टाळावयाचा अडथळा नाही।
कंटेनरच्या आत मर्यादा दुप्पट होते। कंटेनरला बोगदा उपकरणाचा प्रवेश आणि ते संरचित करण्याची क्षमता लागते, आणि ती देणारे फ्लॅग Linux वरील VPN कंटेनर वापरतो तेच आहेत। सामान्यपणे वेब ब्राउझ करू शकणारा मर्यादित अतिथीही इंटरफेस तयार करू शकत नाही, कारण ब्राउझिंगला अशी क्षमता लागत नाही। क्षमता तिची गरज असलेल्या सेवेला द्या, होस्टवरील प्रत्येक सत्राला नाही।
नावाचा संघर्ष सोडवा, नंतर पुन्हा प्रयत्न करा
आधीच अस्तित्वात असलेला इंटरफेस आपोआप उर्वरित भाग नसतो। दुसरा व्यवस्थापक त्या नावाचा मालक असू शकतो आणि तो आत्ताच वापरत असू शकतो, म्हणून काहीही हटवण्यापूर्वी तो तपासा:
ip link show wg0
sudo wg show wg0
जर मालक सक्रिय सेवा असेल, तर दुसरे उपकरण तयार करण्याऐवजी तीच सेवा संरचित करा। जर ते खरोखर जुने असेल, तर ते तयार करणाऱ्या साधनाने काढून टाका, आणि नंतर संरचना व उपकरण सुसंगत राहावे म्हणून दस्तऐवजीकृत क्लायंट किंवा युनिटने इंटरफेस वर आणा।
निर्मिती यशस्वी झाल्यावर, पुढील अयशस्वीता नंतरच्या टप्प्यातील आहे, आणि उपकरण अस्तित्वात आल्यानंतर अयशस्वीतेची नोंद देणारे युनिट कधीही न तयार झालेल्या उपकरणापेक्षा वेगळी समस्या आहे। पुन्हा परवानग्या बदलण्यापूर्वी दोन्ही वेगळे करा।