OpenWrt VPN ज़ोन, फ़ॉरवर्डिंग और मास्करेडिंग: कौन-सा चाहिए?
ज़ोन इनपुट, फ़ॉरवर्डिंग और मास्करेडिंग अलग-अलग सवालों के जवाब देते हैं। WAN ज़ोन खोलने से पहले तय करें कि आपके VPN ट्रैफ़िक को किसकी ज़रूरत है।
जब भी VPN की OpenWrt से मुलाक़ात होती है, तीन बदलाव आपस में मिल जाते हैं: पोर्ट खोलना, फ़ॉरवर्डिंग की अनुमति देना और मास्करेडिंग चालू करना। ये अलग-अलग सवालों के जवाब देते हैं, और आम तौर पर इनमें से सिर्फ़ एक ही असली ज़रूरत होती है। हर नियंत्रण को उस ट्रैफ़िक भूमिका के हिसाब से पढ़ना, जिसे वह नियंत्रित करता है, अनुमान को फ़ैसले में बदल देता है, और यह भी बताता है कि बदलाव ग़लत होने पर कौन-सा लक्षण अपेक्षित है। उस भूमिका का नाम लेकर शुरू करें जो विफल हुई, न कि उस चेकबॉक्स का जो आपको याद है।
किसी नियंत्रण को छूने से पहले ट्रैफ़िक भूमिका का नाम लें
ज़ोन इनपुट तय करता है कि राउटर तक क्या पहुँच सकता है। ज़ोन आउटपुट उस ट्रैफ़िक को कवर करता है जो राउटर ख़ुद बनाता है, ज़ोन फ़ॉरवर्डिंग किसी ज़ोन से गुज़रने वाले ट्रैफ़िक के लिए डिफ़ॉल्ट है, और मास्करेडिंग तय करता है कि बाहर जाते समय स्रोत पता फिर से लिखा जाए या नहीं। ये चार अलग सवाल हैं, और एक ज़ोन नीति एक ही मान के साथ एक साथ चारों का जवाब देती है, इसलिए पूरे ज़ोन में बदलाव एक मोटा औज़ार है। नाम वाला नियम बाक़ी को छुए बिना इनमें से किसी एक का जवाब दे सकता है।
काम का नक़्शा ट्रैफ़िक भूमिका के हिसाब से है, क्योंकि कुछ विफल होने पर आप वही देख सकते हैं। नीचे की हर भूमिका के पास एक नियंत्रण है जो उसे तय करता है और एक लक्षण है जो उसकी ओर इशारा करता है:
| Traffic role | Control that decides it | Where it lives in the config | Symptom when it is wrong |
|---|---|---|---|
| A client reaching a listener on the router | Input policy of the zone that carries the connection, or a rule for the port | option input in the zone stanza, or a named rule | The handshake never completes and the tunnel log says nothing |
| A tunnel client reaching the router itself | Input policy of the tunnel zone | option input in the VPN zone | A ping to the gateway fails |
| A tunnel client reaching another LAN host | Forwarding from the tunnel zone to the LAN zone | config forwarding plus the zone assignment | The gateway answers and the file share times out |
| The router's own traffic leaving the WAN | Output policy, and translation if the far side needs it | option output and option masq | The tunnel never establishes, or replies vanish |
राउटर पर सुनने वाली सेवा को एक सँकरा इनपुट नियम चाहिए
राउटर पर मौजूद OpenVPN सर्वर राउटर को संबोधित ट्रैफ़िक लेता है, इसलिए उसका बाहरी कनेक्शन उस ज़ोन की इनपुट नीति पर निर्भर करता है जो उसे ढोता है। कॉन्फ़िगर किए गए ट्रांसपोर्ट और पोर्ट की अनुमति दें और उस ज़ोन में बाक़ी सब कुछ अस्वीकृत रखें। एक पोर्ट नियम पूरे ज़ोन की अनुमति से कहीं छोटा बदलाव है, और एक साल बाद भी आप ठीक उसी की व्याख्या कर सकेंगे।
दो बातें उस नियम को रखने के लिए सुरक्षित बनाती हैं: यह उस पोर्ट का नाम लेता है जो सेवा असल में इस्तेमाल करती है, और यह ज़ोन की परिभाषा के बगल में रहता है ताकि अगला व्यक्ति देख सके कि यह क्यों मौजूद है। नीचे की पंक्तियाँ सिर्फ़ आकार हैं, जिनमें पोर्ट सर्वर पर कॉन्फ़िगर किए गए मान का स्थान लेता है। सेवा के हटने पर वह पोर्ट दोनों जगह बदलें, क्योंकि पुराने पर रह गया नियम ऑडिट तक अदृश्य रहता है।
config zone
option name 'wan'
option input 'REJECT'
option forward 'REJECT'
option output 'ACCEPT'
option masq '1'
config rule
option name 'allow-openvpn'
option src 'wan'
option proto 'udp'
option dest_port '1194'
option target 'ACCEPT'फिर से लोड करने से पहले जाँचें, क्योंकि फ़ायरवॉल फ़ाइल में व्याकरण की ग़लती राउटर को काम करने वाले नियम-समूह के बिना छोड़ सकती है। fw4 वाले संस्करण में जाँच एक अलग कमांड है, और यह टूटे हुए खंड को चुपचाप स्वीकार करने के बजाय ज़ोर से विफल होती है। जाँच पास होने के बाद ही फिर से लोड करें, और पिछली फ़ाइल वहाँ रखें जहाँ से आप उसे वापस रख सकें।
fw4 check
service firewall reloadक्लाइंट का अनुरोध इनपुट से नहीं, फ़ॉरवर्डिंग से गुज़रता है
प्रमाणीकरण के बाद, LAN सेवा माँगने वाले टनल क्लाइंट का अनुरोध फ़ॉरवर्ड किया गया प्रवाह बनाता है, इसलिए उसे तय करने वाला नियंत्रण टनल ज़ोन और LAN ज़ोन के बीच का फ़ॉरवर्डिंग संबंध है। टनल इंटरफ़ेस को इच्छित ज़ोन में सौंपें, फिर दिशा, स्रोत और सेवा घोषित करें। ज़ोन आवंटन ही फ़ॉरवर्डिंग नियम को अर्थ देता है, और दोनों साथ पढ़े जाने पर ही समझ आते हैं। जो फ़ॉरवर्डिंग संबंध टनल ज़ोन को स्रोत और LAN ज़ोन को गंतव्य कहता है वह एक सुविचारित फ़ैसले के रूप में पढ़ा जाता है, जबकि पूरे ज़ोन की दो अनुमतियाँ दुर्घटना के रूप में पढ़ी जाती हैं।
राउटर तक पहुँचना अब भी इनपुट पथ का इस्तेमाल करता है, इसलिए गेटवे को ping उसके पीछे की फ़ाइल साझा के बारे में कुछ नहीं कहता। वे दो विफलताएँ अलग खंडों में रहती हैं और अलग बदलावों से ठीक होती हैं। किसी एक को बदलने से पहले दोनों पथ अलग-अलग लिख लें।
मास्करेडिंग रूटिंग का फ़ैसला है, अनुमति नहीं
मास्करेडिंग चुने हुए बाहर जाने वाले ट्रैफ़िक का स्रोत पता फिर से लिखती है। यह ऐसी निकास रचना बचा सकती है जहाँ दूर के पक्ष के पास वापसी का मार्ग नहीं है, और यह पते दर्ज करने वाली या पते के आधार पर अनुमति देने वाली किसी भी सेवा से अलग-अलग क्लाइंट के पते भी छिपाती है। इसे बंद करना वापसी मार्ग के बारे में रूटिंग का चुनाव है, अंदरूनी छेद बंद करने वाला सुरक्षा स्विच नहीं। जो टनल अनुवाद चालू रहने पर काम करता है और बंद करते ही विफल हो जाता है, उसमें आम तौर पर वापसी का मार्ग गायब होता है, फ़ायरवॉल नियम नहीं।
रूट किया गया विकल्प अनुवाद के बजाय दूर के पक्ष पर वापसी मार्ग माँगता है। दोनों में से कोई विकल्प फ़ायरवॉल अनुमति या एप्लिकेशन खाता नहीं देता, इसलिए मास्करेडिंग बंद करना लगभग कभी ऐसे टनल क्लाइंट को ठीक नहीं करता जो कहीं पहुँच ही नहीं सकता। IPv4 और IPv6 नीति को भी अलग-अलग देखें, क्योंकि एक अनुवाद सेटिंग दोनों परिवारों का वर्णन नहीं करती।
अनुमत और अस्वीकृत अनुरोध से फ़ैसला साबित करें
एक अनुरोध भेजें जिसे अनुमत होना चाहिए और एक जिसे अस्वीकृत होना चाहिए, फिर वह नियंत्रण पहचानें जिसने हर फ़ैसला लिया। जो पेज संयोग से लोड हो जाए वह सबूत नहीं है; सबूत वह नियम है जो मेल खाया, उसी श्रृंखला में जहाँ वह मेल खाया। अस्वीकृति सफलता जितनी ही मायने रखती है, क्योंकि वह दिखाती है कि नीति कुछ कर रही है, सब कुछ अनुमत होने के बजाय।
मौजूदा संस्करण में दो कमांड आपको वह सबूत देते हैं। अनुरोध स्वीकार होने पर मेल खाते नियम का काउंटर हिलता है, और अगर आपने उस नियम के लिए लॉगिंग चालू की है तो लॉग ड्रॉप दिखाता है:
nft list chain inet fw4 forward_wan
logread -f | grep -i -E 'DROP|REJECT'कोई भी फ़ायरवॉल नीति बदलने से पहले ऐसा प्रशासन मार्ग रखें जिसका आप अब भी इस्तेमाल कर सकें, और कॉन्फ़िगरेशन के मालिक की जाँच और रोलबैक प्रक्रिया का पालन करें। जो बदलाव आपको राउटर से बाहर बंद कर दे वह परीक्षण का नतीजा नहीं, दूसरी घटना है। हर अवलोकन के बगल में ज़ोन और ट्रैफ़िक भूमिका दर्ज करें, ताकि नतीजों की जोड़ी नीति की व्याख्या करे, किसी भाग्यशाली पेज लोड का वर्णन न करे।