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 मधील इंटरफेस चाचणीची सुरुवात आहे, शेवट नाही.