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