VPN क्लाइन्टका रूपमा Pi: एउटा प्रबन्धक वा आफ्नै स्क्रिप्ट?
Raspberry Pi मा NetworkManager प्रोफाइलको तुलना हातले लेखिएको क्लाइन्ट स्क्रिप्टसँग, पूर्ण सुरुङ, DNS, IPv6 र सुरुङ खस्दा हुने व्यवहार सहित।
आफ्नै बाहिर जाने ट्राफिक मात्र सुरक्षित गर्नुपर्ने Raspberry Pi का लागि दुई यथार्थपरक डिजाइन छन्: नेटवर्क प्रबन्धकलाई सुरुङको स्वामित्व दिनु, वा त्यसको स्वामित्व लिने स्क्रिप्ट राख्नु। दुवैले ट्राफिक बोक्न सक्छन्। तिनीहरू फरक ठाउँमा असफल हुन्छन्, र राति दुई बजे टाढाबाट तपाईंले निदान गर्न सक्ने असफलता नै छान्न योग्य हो। स्वामित्वमा, IPv6 र DNS संलग्न हुँदा पूर्ण सुरुङको अर्थ के हो भन्नेमा, र सुरुङ खस्ने क्षणमा के हुन्छ भन्नेमा तिनीहरूको तुलना गर्नुहोस्।
एउटै सुरुङका दुई स्वामी
डिजाइन A प्रणालीको नेटवर्क प्रबन्धकभित्रको प्रोफाइल हो: आयात गरिएको OpenVPN प्रोफाइल वा मूल WireGuard जडान, जुन बुटमा Ethernet र Wi-Fi उठाउने त्यही सेवाबाट सक्रिय हुन्छ। डिजाइन B तपाईंको आफ्नै इकाई हो, जसले क्लाइन्ट सिधै चलाउँछ, रिजोल्भर कन्फिगरेसन सम्पादन गर्छ र आफ्नै मार्ग तथा फायरवाल नियम स्थापना गर्छ। दुवै वैध डिजाइन हुन्; राउटिङ तालिका बदल्न कसलाई अनुमति छ भन्नेमा तिनीहरू फरक छन्।
स्वामी फरक भएकाले असफलताहरू पनि फरक छन्। A मा, सक्रिय नहुने प्रोफाइलले इन्टरफेस माथि र सुरुङ तल राख्छ, र प्रबन्धकका लगले किन भनी बताउँछन्। B मा, आधा सफल हुने स्क्रिप्टले तिनीहरूलाई बनाउने प्रक्रियापछि पनि रहने मार्गहरू छोड्छ। दुवै चलाउनु सबैभन्दा नराम्रो परिणाम हो: दुई प्रक्रियाले पूर्वनिर्धारित मार्ग लेख्छन्, बुटमा दुई रिजोल्भर सम्पादन प्रतिस्पर्धा गर्छन्, र घुमाउन दुई सेट गोप्य कुरा चाहिन्छ।
प्रत्येक सुरुङका लागि एउटा स्वामी छान्नुहोस् र केही परीक्षण गर्नुअघि अर्कोलाई निष्क्रिय गर्नुहोस्। दुई स्वामी भन्नाले सुरुङ माथि हुँदा र केही पनि नमिल्दा हेर्ने दुई ठाउँ पनि हो। यही एउटा नियमले Pi VPN छलफलमा वर्णन गरिएका अधिकांश अन्योलपूर्ण अवस्था रोक्छ।
आयातले के बनाउँछ, के बनाउँदैन
Raspberry Pi OS Bookworm र त्यसपछिका संस्करणमा पूर्वनिर्धारित नेटवर्क कन्फिगरेसन उपकरण NetworkManager हो, त्यसैले क्लाइन्ट सुरुङका लागि प्रोफाइल स्वाभाविक घर हो। आयातका लागि मिल्ने प्लगइन स्थापना भएको हुनुपर्छ; त्यो नभए आयात असमर्थित जडान प्रकारको सन्देशसहित असफल हुन्छ, जुन रोकिएर प्लगइन स्थापना गर्ने इमानदार संकेत हो।
nmcli connection import type openvpn file ./provider.ovpn
nmcli connection show
nmcli --ask connection up id provider-name
आयातले प्रोफाइल भण्डारण गर्छ। यसले अर्को पक्ष पुग्न सकिने प्रमाण दिँदैन, र फाइलको हरेक निर्देशन रूपान्तरणबाट बाँचेको ग्यारेन्टी गर्दैन। नतिजा जडान पढेर पहिचान र विश्वास बोक्ने भाग जाँच्नुहोस्: प्रमाणपत्र, टाढाको होस्ट र पोर्ट, र पासवर्ड सोधिन्छ कि भण्डारण गरिन्छ।
--ask सँग सक्रिय गर्दा साझा मेसिनमा शेल इतिहासबाहिर पासफ्रेज रहन्छ। निगरानीविहीन Pi का लागि अन्ततः तपाईं प्रोफाइल बुटमा माथि आउने चाहानुहुनेछ, जुन हातले एकपटक माथि ल्याउनुभन्दा छुट्टै निर्णय हो।
पूर्ण सुरुङ, दुवै डिजाइनको तुलनामा
पूर्ण सुरुङ मार्गहरूको बारेमा दाबी हो, मनसायको बारेमा होइन, र दुवै डिजाइनले यसलाई फरक तरिकाले व्यक्त गर्छन्। प्रोफाइल दृष्टिकोणले प्रबन्धकलाई पूर्वनिर्धारित मार्ग र यसको रिजोल्भर सेटिङ स्थापना गर्न भन्छ; स्क्रिप्ट दृष्टिकोणले स्क्रिप्टले भनेको गर्छ, केही नगर्नु पनि समावेश। कुनै पनि डिजाइनले नभनिएसम्म IPv6 समेट्दैन, र नछोइएको IPv6 पूर्वनिर्धारित मार्गले IPv4 उत्तम देखिँदा खुसीसाथ सुरुङबाहिर ट्राफिक बोक्नेछ।
ip -4 route get 198.51.100.23
ip -6 route show default
resolvectl query example.org
मार्ग खोजका लागि कागजात ठेगाना प्रयोग गर्नुहोस् र जाँच्ने अनुमति भएको होस्टले बदल्नुहोस्। पहिलो आदेशले Pi सामान्य गन्तव्यका लागि कुन इन्टरफेस प्रयोग गर्छ देखाउँछ; दोस्रोले IPv6 पूर्वनिर्धारित मार्ग अझै छ कि छैन देखाउँछ; तेस्रोले कुन रिजोल्भरले जवाफ दियो प्रमाणित गर्छ। पूर्ण सुरुङको कुनै पनि दाबी विश्वास गर्नुअघि ती तीनै पढ्नुहोस्।
यदि प्रदायकका निर्देशनले पूर्ण सुरुङको वाचा गर्छ तर IPv6 पूर्वनिर्धारित मार्ग रहन्छ भने Pi चुहावट गर्दैछ। अपलिङ्कमा IPv6 निष्क्रिय गर्नुहोस् वा प्रोफाइललाई त्यो माग्न भन्नुहोस्, र पछि पत्ता लगाउनुको सट्टा सचेत रूपमा निर्णय गर्नुहोस्।
खुला असफलता बनाम बन्द असफलता
सुरुङ खस्दा आफ्नो पूर्वनिर्धारित मार्ग गुमाउने राउटिङ तालिका सिधै भौतिक अपलिङ्कमा फर्कन्छ, र ट्राफिक खुलै रूपमा जारी रहन्छ। यो खुला असफलता हो, र केहीले रोकेन भने यो दुवै डिजाइनको पूर्वनिर्धारित व्यवहार हो। धेरैजसो मानिसले यो हप्तौंपछि फायरवाल लग पढेर थाहा पाउँछन्।
बन्द असफलताले सुरुङ तल हुँदा तपाईंको टाढाको पहुँच खोस्छ, त्यसैले व्यवस्थापन मार्गका लागि सचेत अपवाद चाहिन्छ। एउटा तरिका सुरुङबाहिर VPN सँगीको ठेगाना मात्र अनुमति दिने नियम हो:
sudo nft add table inet vpnkill
sudo nft 'add chain inet vpnkill out { type filter hook output priority 0; policy accept; }'
sudo nft add rule inet vpnkill out oifname != "tun0" ip daddr != 203.0.113.24 reject
सञ्चालन लागतको इमानदार तुलना गर्नुहोस्। प्रोफाइलले सामान्यतया यो नियम व्यक्त गर्न सक्दैन, त्यसैले बन्द असफलताले तपाईंलाई स्क्रिप्ट डिजाइनतिर वा सुरुङबाट स्वतन्त्र रूपमा नियम स्थापना गर्ने सानो इकाईतिर धकेल्छ। जसरी भए पनि, एक हप्ता अस्वीकृति लग गर्नुहोस्: मौन अस्वीकृति बिग्रिएको सेवाजस्तै देखिन्छ, र प्रयोगकर्ताले एउटा साइट लोड हुन छाडेको जानकारी दिँदा तपाईंलाई काउन्टर चाहिनेछ।
स्क्रिन नभएको Pi का लागि छनोट
यदि इमेजले पहिले नै NetworkManager चलाउँछ, सुरुङलाई विशेष केही चाहिँदैन, र तपाईं यो अपलिङ्कलाई स्वतः पछ्याओस् भन्ने चाहनुहुन्छ भने प्रोफाइल लिनुहोस्। यदि तपाईंलाई नीति राउटिङ, प्रत्येक गन्तव्यका लागि छानिएका धेरै सुरुङ, वा सुरुङ माथि आउनुअघि हुनैपर्ने बन्द-असफलता नियम चाहिन्छ भने स्क्रिप्ट लिनुहोस् र बुट क्रम र सफाइ सहित यसको हरेक भागको स्वामित्व लिनुहोस्। दुवै डिजाइन मिसाउनु कुनै एउटाभन्दा महँगो पर्छ।
तिनीहरूबीच स्थानान्तरण मुख्यतः क्रमको विषय हो: पुरानो स्वामीलाई निष्क्रिय गर्नुहोस्, पुरानो मार्ग वा रिजोल्भर प्रविष्टि बाँकी नरहेको पुष्टि गर्नुहोस्, त्यसपछि नयाँ सक्रिय गरेर दुई पटक रिबुट गर्नुहोस्। एउटा रिबुटले दोस्रोले खोल्ने दौड लुकाउन सक्छ। सुरुङको होइन, Pi को परीक्षण गरेर अन्त्य गर्नुहोस्: नाम समाधान गर्नुहोस्, IPv4 बाट केही ल्याउनुहोस्, राखेको भए IPv6 बाट पनि ल्याउनुहोस्, त्यसपछि सुरुङ खसाल्नुहोस् र तपाईंले छानेको व्यवहार साँच्चै हुन्छ भनी पुष्टि गर्नुहोस्। ip link मा इन्टरफेस परीक्षणको सुरुवात हो, अन्त्य होइन।