एक टेस्ट LAN को उसका अपना WireGuard एग्ज़िट कैसे दें
एक LAN को समर्पित रूटिंग टेबल और अगम्य गार्ड के साथ WireGuard एग्ज़िट तक सीमित करें, जबकि गेटवे अपना सामान्य WAN डिफ़ॉल्ट रूट बनाए रखता है।
तीन डिज़ाइन एक ही लैब समस्या हल करते हैं: एक छोटी LAN को WireGuard पीयर के ज़रिए बाहर निकलना है, जबकि गेटवे खुद अपना सामान्य अपलिंक बनाए रखता है। लुभावना शॉर्टकट यह है कि राउटर का डिफ़ॉल्ट रूट टनल के अंदर ले जाया जाए, पर इससे बॉक्स का अपना प्रबंधन पथ और वह जो कुछ भी फ़ॉरवर्ड करता है, सब टूट जाता है। दिलचस्प विकल्प एक इंटरफ़ेस और एक प्रीफ़िक्स तक सीमित पॉलिसी रूटिंग है। आपके पास जो मशीन वास्तव में है, उसके बारे में तीन सवालों के जवाब देकर इनमें से चुनें।
तय करें कि एग्ज़िट कहाँ रहता है
पहला सवाल: क्या यह होस्ट किसी और चीज़ के लिए भी फ़ॉरवर्ड करता है? एक समर्पित लैब गेटवे डिफ़ॉल्ट रूप से सब कुछ छोड़ देने वाली फ़ॉरवर्डिंग पॉलिसी के साथ रह सकता है। प्रोडक्शन के दायित्वों वाला राउटर ऐसा नहीं कर सकता, और मैनेज्ड फ़ायरवॉल के ऊपर प्रतिद्वंद्वी नियम-समूह चढ़ाना ही वह तरीका है जिससे आउटेज तय होते हैं। दूसरा: क्या आप दो पॉलिसी ऑब्जेक्ट और रीबूट के पार उनका क्रम अपने पास रख सकते हैं? तीसरा: क्या आपका पीयर आपके टनल स्रोत पते को अधिकृत करता है और इंटरनेट एग्रेस देता है? जो पीयर केवल एक निजी नेटवर्क दिखाता है वह दूसरा उत्पाद है, और कोई भी स्थानीय रूटिंग बदलाव उसे ठीक नहीं करता। अगर कोई भी जवाब नहीं है, तो एग्ज़िट को इसके बजाय नेमस्पेस या एक बार इस्तेमाल होने वाली वर्चुअल मशीन में रखें।
नेमस्पेस या VM मेमोरी का खर्च करता है और आपको साफ़ ब्लास्ट रेडियस देता है। पॉलिसी रूटिंग दो नियमों का खर्च करती है और डिबग करने के लिए एक ही बॉक्स छोड़ती है।
वह एग्ज़िट चुनें जो आपके स्रोत को अधिकृत करता है
इस लैब में ज़्यादातर विफलताएँ एक भी फ़ायरवॉल नियम बनने से पहले ही हो जाती हैं। एग्ज़िट ऑपरेटर को वह स्रोत पता स्वीकार करना चाहिए जो अनुवाद के बाद आपके पैकेट ले जाते हैं, और इस डिज़ाइन में वह टनल पता है, LAN प्रीफ़िक्स नहीं। इसीलिए मास्करेडिंग शुरू से ही डिज़ाइन का हिस्सा है, बाद में जोड़ी गई चीज़ नहीं।
ऑपरेटर के साथ तीन चीज़ें पक्की करें: पीयर आपके टनल पते को अधिकृत करता है, वह अपने ऊपर समाप्त होने के बजाय IPv4 फ़ॉरवर्ड करता है, और वह एग्रेस NAT लागू करता है। पहले के बिना आपके पैकेट पहुँचते हैं और गायब हो जाते हैं। तीसरे के बिना वे निजी स्रोत के साथ निकलते हैं और अगले हॉप पर मर जाते हैं। फिर जाँचें कि wg-quick अपना डिफ़ॉल्ट रूट नहीं लगा रहा, जिसे Table = off रोकता है; वह सेटिंग रूट बनना दबाती है, पीयर की AllowedIPs जाँच या उसकी DNS प्रक्रिया नहीं।
दो पॉलिसी ऑब्जेक्ट स्टीयरिंग करते हैं
स्टीयरिंग के लिए एक टेबल और एक नियम चाहिए। टेबल दो रूट रखती है: LAN इंटरफ़ेस से बाहर जाता LAN प्रीफ़िक्स और टनल से बाहर जाता डिफ़ॉल्ट। नियम उस ट्रैफ़िक को टेबल में भेजता है जो LAN इंटरफ़ेस पर आता है और वह प्रीफ़िक्स ले जाता है। स्रोत मिलान के साथ iif सेलेक्टर का उपयोग करें, क्योंकि गेटवे के अपने WireGuard पैकेट स्थानीय रूप से बनते हैं और कभी आने वाले इंटरफ़ेस से नहीं मिलते।
गार्ड लुकअप से पहले आता है, बाद में नहीं। वही क्रम डिज़ाइन की पूरी सुरक्षा-विशेषता है।
गार्ड उसी सेलेक्टर पर दूसरा नियम है जिसका फ़ैसला unreachable है। उसे ऊँची संख्यात्मक प्राथमिकता दें ताकि टनल चालू रहने तक लुकअप ही जीते। जब टनल रूट गायब हो जाता है, लुकअप कुछ नहीं लौटाता और गार्ड खोज को रोक देता है, उसे मुख्य टेबल के WAN डिफ़ॉल्ट तक गिरने नहीं देता।
ip rule add from 192.168.50.0/24 iif lan0 lookup 51861 pref 1000
ip rule add from 192.168.50.0/24 iif lan0 unreachable pref 1001
ip route add table 51861 default dev wg0
पीछे हटने की खाई खोलने से पहले बंद करें
पहले गार्ड लगाएँ और बाद में लुकअप। उलटा करने पर कुछ सेकंड की ऐसी खिड़की बचती है जिसमें टेस्ट क्लाइंट का ट्रैफ़िक अपलिंक तक पहुँच सकता है।
फ़िल्टर तस्वीर पूरी करता है। forward हुक में टेस्ट प्रीफ़िक्स के लिए LAN से टनल दिशा और स्थापित वापसी दिशा स्वीकार करें, फिर बाकी सब गिरा दें; उस प्रीफ़िक्स का टनल इंटरफ़ेस पर NAT postrouting में जाता है। फ़ॉरवर्ड चेन पर policy drop छोड़ना ही अनुपस्थित रूट को लीक के बजाय ख़ामोशी में बदलता है। रिवर्स-पाथ फ़िल्टरिंग के लिए टनल इंटरफ़ेस पर ढीली अवस्था चाहिए, क्योंकि डीकैप्सुलेशन के बाद आने वाले सार्वजनिक स्रोत का सबसे अच्छा रिवर्स रूट WAN की ओर होता है। Linux all और प्रति-इंटरफ़ेस मानों में से ऊँचा लेता है, इसलिए टनल इंटरफ़ेस सेट करना हर जगह सत्यापन कमज़ोर करने के बराबर नहीं है।
विफलता के मामले से इसे सिद्ध करें
कर्नेल से सटीक सवाल पूछें: क्लाइंट का स्रोत पता और वह इंटरफ़ेस बताएँ जिस पर वह आता है। दोनों के बिना लुकअप किसी और सवाल का जवाब देता है और दोनों हालत में सही दिखेगा। फिर फ़ायरवॉल काउंटर, पीयर की ट्रांसफ़र अवस्था और क्लाइंट की अपनी सेवा देखें।
हटाने की जाँच ठीक से करें। नियम और फ़िल्टर जगह पर रखते हुए टनल बंद करें: क्लाइंट को अटकना चाहिए और गेटवे का अपना ट्रैफ़िक चलता रहना चाहिए। फिर स्थानीय इंटरफ़ेस को छुए बिना पीयर बंद करें, और यही वह मामला है जो केवल रूट की मौजूदगी पर भरोसा करने वाले डिज़ाइन पकड़ता है। अंत में रीबूट करें और नियमों का क्रम फिर जाँचें, क्योंकि गार्ड हटाने वाला टियरडाउन हुक पूरा डिज़ाइन मुख्य टेबल को लौटा देता है। टेबल नंबर, प्राथमिकताएँ और इंटरफ़ेस नाम चेंज टिकट पर लिखें, क्योंकि अगला नियम जोड़ने वाला व्यक्ति ही इसे तोड़ेगा।