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