दो /1 प्रीफ़िक्स ठीक वही IPv4 पते कवर करते हैं जो एक /0 कवर करता है, और यह समानता केवल पीयर की अनुमत प्रीफ़िक्स सूची के भीतर ही लागू होती है। जैसे ही सेटअप औज़ार तय करता है कि रूटिंग कैसे हो, यह लागू होना बंद हो जाती है, क्योंकि Linux में wg-quick डिफ़ॉल्ट प्रीफ़िक्स को अंकगणित नहीं बल्कि विशेष स्थिति मानकर संभालता है। विशेष शाखा एक समर्पित तालिका, दो नीति नियम, एक सॉकेट मार्क और रिवर्स-पथ सेटिंग्स लगाती है, जो आधे रूटों की जोड़ी को कभी नहीं मिलतीं। इसलिए संपादन के बाद जब कोई प्रॉक्सी या ब्राउज़र काम करना बंद कर दे, तो प्रीफ़िक्स बदलाव का सबसे कम दिलचस्प हिस्सा होते हैं।

प्रीफ़िक्स सूची पूरा कॉन्फ़िगरेशन नहीं है

AllowedIPs एक साथ दो काम करता है, और उनमें से सिर्फ़ एक कवरेज से जुड़ा है। WireGuard के लिए यह सूची क्रिप्टोकी रूटिंग है: यह तय करती है कि कौन-से गंतव्य किसी पीयर की ओर एन्क्रिप्ट होंगे और वह पीयर कौन-से स्रोत पते इस्तेमाल कर सकता है। wg-quick के लिए वही सूची रूट विनिर्देश का काम भी करती है, और जो रूट बनता है वह इस पर निर्भर है कि सूची किस शाखा से संयोगवश मेल खाती है। इसलिए दो अलग सूची आकृतियों में समान कवरेज होने से समान होस्ट स्थिति के बारे में कुछ नहीं कहा जा सकता।

डिफ़ॉल्ट कॉन्फ़िगरेशन यह फ़ैसला आपके हाथ से ले लेता है, क्योंकि Table डिफ़ॉल्ट रूप से स्वचालित है और औज़ार ख़ुद चुनता है कि रूट कहाँ उतरें। कोई दूसरा नेटवर्क प्रबंधक, वितरण रैपर या कस्टम Table मान नतीजा फिर बदल देता है, इसीलिए एक होस्ट के लिए लिखी सलाह अगले होस्ट पर ग़लत लग सकती है।

डिफ़ॉल्ट शाखा रूट के अलावा क्या जोड़ती है

/0 प्रविष्टि wg-quick को उसके डिफ़ॉल्ट-रूट पथ में भेजती है: एक अलग रूटिंग तालिका डिफ़ॉल्ट पाती है, एक नीति नियम बिना-मार्क ट्रैफ़िक वहाँ भेजता है, दूसरा नियम मुख्य तालिका के अधिक विशिष्ट रूटों को प्राधिकृत रखता है, और इंटरफ़ेस को अपने ही सॉकेट पर फ़ायरवॉल मार्क मिलता है। वही मार्क लूप गार्ड है। सुरंग का ट्रैफ़िक ढोने वाले एन्क्रिप्टेड डेटाग्राम मार्क लगे होने पर निकलते हैं, ताकि बाक़ी सब कुछ सुरंग में भेजने वाला नियम सुरंग के अपने ट्रांसपोर्ट पैकेट न निगल जाए।

इसके बजाय /1 प्रविष्टियों की जोड़ी सामान्य रूट पथ लेती है। कॉन्फ़िगर की गई तालिका में दो रूट उतरते हैं, और आसपास की कोई मशीनरी नहीं दिखती, इसलिए नहीं कि वह अनावश्यक है, बल्कि इसलिए कि उस कोड पथ में कभी प्रवेश ही नहीं हुआ।

दोनों व्यवस्थाएँ कहाँ अलग होती हैं

अंतर सबसे पहले रिकर्शन के रूप में दिखता है। मुख्य तालिका में आधे रूट होने पर पीयर का अपना ट्रांसपोर्ट पता सुरंग प्रीफ़िक्स के भीतर आ जाता है, इसलिए जिस पैकेट को सुरंग ढोनी चाहिए वह सुरंग के भीतर की ओर इशारा करने वाले रूट से मेल खाता है। किसी चीज़ को उसे छूट देनी होगी: मौजूदा एंडपॉइंट के लिए होस्ट रूट, हाथ से लगाया गया मार्क, या इंटरफ़ेस-विशिष्ट नियम। होस्ट रूट तब तक काम करता है जब तक एंडपॉइंट का पता न बदले, जो DNS-आधारित एंडपॉइंट, घूमते क्लाइंट और बहु-पीयर कॉन्फ़िगरेशन में होता है।

दूसरे, मार्कों पर तर्क करने वाली हर चीज़ का व्यवहार बदल जाता है। स्थानीय रूप से कनेक्शन रीडायरेक्ट करने वाला पारदर्शी प्रॉक्सी नए सॉकेट बनाता है जिनके मार्क और स्रोत मूल क्लाइंट प्रवाह से अलग होते हैं, और डिफ़ॉल्ट शाखा जो नीति नियम बनाती है वे उन प्रवाहों को छाँटने का हिस्सा थे। प्रॉक्सी के अपने आउटबाउंड कनेक्शन को पढ़ना मूल गंतव्य तक पहुँचने की जाँच से अलग अभ्यास है।

संपादन से पहले नियम और मार्क पढ़ें

सुरंग के स्वस्थ रहते मौजूदा स्थिति कैप्चर करें, फिर बदलाव के बाद दोबारा, और कॉन्फ़िगरेशन फ़ाइल से तर्क करने के बजाय दोनों डंप की तुलना करें। नीति नियम, हर तालिका, इंटरफ़ेस का मार्क और दर्ज किए गए एंडपॉइंट शामिल करें।

ip rule show
ip -4 route show table all | grep -E 'default|wg1'
wg show wg1 fwmark
wg show wg1 endpoints

अगर आउटपुट की पहली पंक्ति बिना-मार्क ट्रैफ़िक का नियम खो चुकी है और समर्पित तालिका ख़ाली है, तो डिफ़ॉल्ट शाखा नहीं चल रही है और कोई भी प्रीफ़िक्स अंकगणित उसके प्रभाव बहाल नहीं करेगा। पहले मार्क रखने वाले इंटरफ़ेस पर शून्य मार्क वही संकेत है, जो एक ही मान में दिखता है।

जारी करने से पहले सुरंग खोने का अभ्यास करें

अगर आधे-रूट वाली व्यवस्था जान-बूझकर चुना गया विकल्प है, तो उसे ग़ायब टुकड़े स्पष्ट रूप से देने होंगे: पता बदलने पर भी टिकने वाला एंडपॉइंट पथ, सुरंग गिरने पर इच्छित व्यवहार, और IPv6 के लिए समतुल्य व्यवस्था। इन्हें किसी रुकावट के दौरान खोजने के बजाय आवश्यकता के रूप में लिख लें। फिर विफलता का अभ्यास करें, क्योंकि चुपचाप भौतिक अपलिंक पर लौट जाने वाली पूरी सुरंग काम करना बंद करने वाली सुरंग से बदतर है।

sudo ip -4 route add 198.51.100.20/32 via 192.0.2.1 dev eth0
ip -4 route get 198.51.100.20
sudo wg-quick down wg1

रूट लुकअप को सुरंग पार किए बिना भौतिक इंटरफ़ेस से एंडपॉइंट हल करना चाहिए, और इंटरफ़ेस को नीचे उतारने पर होस्ट उसी स्थिति में रहना चाहिए जिसका डिज़ाइन ने वादा किया था। बदलाव के बाद काम करने वाला प्रॉक्सी साबित करता है कि बनाई गई होस्ट स्थिति मायने रखती थी; यह साबित नहीं करता कि लूप रोकथाम और बंद स्थिति का व्यवहार संपादन से बच गए।

संबंधित लेख