OpenVPN चा pull-filter तुमच्या अपेक्षेपेक्षा जास्त रूटशी जुळतो
pull-filter तुमचा मजकूर उपसर्ग म्हणून ढकललेल्या पर्यायांशी तुलना करतो, म्हणून route route-gateway आणि route-ipv6 देखील पकडतो. आधी क्रियापदे तपासा, नंतर रूट.
तुम्ही तुमचा स्थानिक डीफॉल्ट रूट ठेवण्यासाठी एक ओळ जोडता, आणि त्यानंतर टनेल आता अंतर्गत DNS सर्व्हरपर्यंत पोहोचत नाही. ती ओळ pull-filter ignore "route" होती, ज्याचा अर्थ "हा रूट दुर्लक्षित करा" नाही. त्याचा अर्थ "ज्याचा मजकूर त्या पाच अक्षरांनी सुरू होतो असा प्रत्येक ढकललेला पर्याय टाकून द्या" असा आहे, आणि सामान्य सर्व्हरवर यात रूटसह route-gateway, route-metric आणि route-ipv6 देखील समाविष्ट असतात. खालील तपासणी सूची म्हणजे दुसऱ्याने वापरायच्या प्रोफाइलला स्पर्श करण्यापूर्वी मी चालवतो ते.
फिल्टर फक्त ढकललेल्या पर्यायांवरच लागू होतो
pull-filter फक्त टनेल स्थापित झाल्यानंतर सर्व्हर पाठवतो त्या पर्याय ओळींवरच काम करतो, इतर कशावरही नाही. तुमच्या स्थानिक फाइलमध्ये लिहिलेले पर्याय यामुळे प्रभावित होत नाहीत, आणि अनुप्रयोग रहदारीही नाही. जर तुम्ही प्रक्रियेला टनेल वापरण्यापासून थांबवण्याची अपेक्षा ठेवली होती, तर हे पूर्णपणे चुकीचे साधन आहे आणि फिल्टरचे कोणतेही संयोजन ते करणार नाही.
हा व्याप उपयुक्त आहे, कारण त्याचा अर्थ असा की तुम्ही सर्व्हरचे कॉन्फिगरेशन अक्षत ठेवूनही त्याचा एक भाग स्थानिक पातळीवर नाकारू शकता. हे टिकेटमध्ये लिहिण्यासारखे मर्यादाही आहे: फिल्टर बदलतो ते हे क्लायंट काय स्वीकारतो, सर्व्हर काय देतो ते नाही. त्याच प्रोफाइलच्या इतर वापरकर्त्यांवर त्याचा कोणताही परिणाम होत नाही. हा पर्याय लागू न करणाऱ्या दुसऱ्या क्लायंटवर गेल्यावरही तो टिकत नाही, हे त्यावर कार्यप्रवाह बांधण्यापूर्वी जाणून घेण्यासारखे आहे.
नमुना लिहिण्यापूर्वी सर्व्हर प्रत्यक्षात काय पाठवतो ते निश्चित करा. उच्च वर्बोसिटीवर क्लायंट मिळालेली ढकललेली पर्याय-मालिका छापतो, आणि तुम्ही ज्या अचूक मजकुराशी तुलना करता त्याचा तोच एकमेव प्रामाणिक स्रोत आहे:
sudo openvpn --config /etc/openvpn/corp.ovpn --verb 4
sudo grep -n 'pull-filter' /etc/openvpn/corp.ovpn
ढकललेली ओळ स्वल्पविरामाने वेगळ्या केलेल्या पर्यायांची यादी म्हणून वाचा, आणि पर्यायांची नावे व त्यांचे आर्ग्युमेंट स्पेसने वेगळे होतात याकडे लक्ष द्या. तुमचा फिल्टर मजकूर त्या प्रवाहाशी तुलना केला जातो, म्हणूनच पुढच्या पायरीत स्पेस इतके महत्त्वाचे आहेत.
जुळणी उपसर्ग आहे, म्हणून स्पेसच सर्व काही ठरवतात
तुलना ही मालिकेचा उपसर्ग आहे, विश्लेषित पर्याय नाव नाही. म्हणून "route" route-gateway 10.8.0.1, route-ipv6 2001:db8::/32 आणि route-metric 100 शी जुळतो. शेवटी एक स्पेस जोडल्यास तो संभाव्य कुटुंबापर्यंत संकुचित होतो, आणि पूर्ण उपसर्ग त्याला विशिष्ट गंतव्यापर्यंत अधिक संकुचित करतो.
| Filter text | What it actually matches | Typical outcome |
|---|---|---|
"route" | Every option beginning with those letters | Routes, gateway, metric and IPv6 routes all dropped |
"route " | Route entries only, not the hyphenated siblings | The routes go, the rest survives |
"route 10.60." | A single destination range | The narrowest rule, and the easiest to audit |
"dhcp-option DNS" | Pushed DNS settings | Resolver stays local, internal names stop resolving |
शेवटची ओळ म्हणजे स्प्लिट-टनेल कामात लोकांना पकडणारी ओळ. स्वतःचा रिझोल्व्हर ठेवणे हा कायदेशीर पर्याय आहे, आणि याचा अर्थ आता प्रत्येक अंतर्गत नाव खाजगी झोन पाहू न शकणाऱ्या रिझोल्व्हरवर अवलंबून आहे. हा उत्पादनात शोधावा लागणारा दुष्परिणाम नाही, तर जाणीवपूर्वक स्वीकारायचा परिणाम आहे.
उपसर्ग जुळणीचा अर्थ असाही की नियम नंतर शांतपणे विस्तारू शकतो. सर्व्हर तुमच्या मजकुराने सुरू होणारा नवीन पर्याय जोडतो तेव्हा कोणीही तुमचे प्रोफाइल संपादित न करता तुमचा फिल्टर त्यावर लागू होऊ लागतो. हाच तो अयशस्वी मोड आहे ज्याच्या विरोधात रचना करायची असते, आणि उपाय म्हणजे पर्यायाचा शक्य तितका मोठा भाग जुळवणे, शक्य तितका लहान नाही.
तीन क्रियापदे, तीन वेगळे परिणाम
accept, ignore आणि reject एकाच कल्पनेचे तीन शुद्धलेखन नाहीत. जुळणीबरोबर क्लायंट काय करतो आणि कोणाला ते कळते यात ते वेगळे आहेत.
ignore जुळणारा पर्याय शांतपणे टाकून देतो, जाणीवपूर्वक बदललेल्या सेटिंगसाठी हेच हवे असते. reject तो टाकून देतो आणि क्लायंटला तक्रार करायला लावतो, त्याची अनुपस्थिती नंतर शोधण्याऐवजी लॉगमध्ये दिसायला हवी तेव्हा हेच हवे असते. accept सकारात्मक रूप आहे, वैयक्तिक पर्याय काढण्याऐवजी परवानगी-यादी बनवताना वापरले जाते.
तुम्ही कोणतेही क्रियापद वापरा, फिल्टर ते ज्या क्रमाने दिसतात त्याच क्रमाने लागू होतात, त्यामुळे दोन अतिक्रमण करणारे नियम क्रम-अवलंबून निकाल देतात ज्याचा आढावा घेणे खूप कठीण आहे. प्रत्येक हेतूसाठी एक नियम ठेवा आणि प्रत्येकात सर्वात विशिष्ट मजकूर ठेवा. परवानगी-यादी हवी असल्यास, तेच एकत्र करणाऱ्या ignore नियमांच्या ढिगाऱ्यापेक्षा काही accept नियमांना प्राधान्य द्या. मग आढावा घेणारे फाइल वरून खाली वाचून निकालाचा अंदाज लावू शकतात, आणि हीच एकमेव चाचणी आहे जी प्रमाण वाढवते.
लागू झालेला रूट आणि रिझोल्व्हर तपासा, प्रोफाइल नाही
फाइलमध्ये बरोबर दिसणारा फिल्टरही तुम्हाला उपयुक्त काहीही मार्गस्थ न करणाऱ्या टनेलसोबत सोडू शकतो. ढकललेले पर्याय आधीच लागू झालेल्या किंवा टाकून दिलेल्या चालू सिस्टमवर परिणाम तपासा:
ip route show default
ip route show | grep -c 'proto static'
resolvectl status | grep -A4 'Link.*tun0'
curl -sS -o /dev/null -w '%{http_code}\n' --max-time 5 https://intranet.example.internal/
पहिल्या दोन ओळी तुम्हाला ढकललेला डीफॉल्ट रूट आला का आणि किती स्थिर नोंदी टिकल्या ते सांगतात. रिझोल्व्हर क्वेरी टनेल इंटरफेस प्रत्यक्षात कोणता सर्व्हर वापरतो ते दाखवते, आणि सहसा तिथेच DNS आश्चर्य दिसते. शेवटची ओळ वापरकर्त्यासाठी महत्त्वाच्या एकमेव प्रश्नाचे उत्तर देते.
तिथे असताना दोन्ही दिशा तपासा. तुमचे स्थानिक इंटरनेट चालू ठेवणारा पण अंतर्गत नाव-निराकरण शांतपणे तोडणारा नियम वरवरच्या तपासणीत उत्तीर्ण होतो आणि पहिल्या खऱ्या कामात अपयशी ठरतो, म्हणून त्याच चाचणीत एक अंतर्गत संसाधन आणि एक सार्वजनिक साइट समाविष्ट करा.
अपवाद आणि त्याचा मालक नोंदवा
फिल्टर ऑपरेटरच्या रचनेतील अपवाद आहे, म्हणून तो कारण आणि आढावा-बिंदूसह लिहून ठेवा. "स्थानिक डीफॉल्ट ठेवण्यासाठी ढकललेले रूट दुर्लक्षित करतो" आढावयोग्य आहे; प्रोफाइलमधील नुसती ओळ नाही, आणि पुढची व्यक्ती ती पुसून टाकेल किंवा अंदाजाने वाढवेल.
आवृत्तीही इथे महत्त्वाची आहे. जुळणीचे वर्तन आणि अचूक स्वीकृत वाक्यरचना OpenVPN 2.4, 2.5 आणि 2.6 मध्ये परिष्कृत झाली आहे, म्हणून तुम्ही पाठवता त्या बिल्डच्या मॅन्युअलशी नमुना पुष्ट करा, जुन्या आवृत्तीबद्दलच्या फोरम पोस्टशी नाही. OpenVPN 2.6 मॅन्युअल हा पर्याय आणि त्याचा जुळणी नियम दस्तऐवजीकरण करते.
शेवटी, सर्व्हर चालवणाऱ्याशी अपवादावर सहमत व्हा. जाणीवपूर्वक सर्व्हर धोरणाला विरोध करणारा क्लायंट-बाजूचा फिल्टर पुढील ऑडिटची वाट पाहणारी सपोर्ट घटना आहे, आणि प्रोफाइल पाठवण्यापूर्वी तो निकाली काढणे कोणाच्या तरी लक्षात रूट गहाळ असल्याचे आल्यानंतर काढण्यापेक्षा खूप स्वस्त आहे.