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

नियम तालिका चुनते हैं, फिर तालिका मार्ग चुनती है

हर नियम में प्राथमिकता, मिलान की शर्त और लक्ष्य तालिका होती है। कर्नेल नियमों को प्राथमिकता क्रम में चलता है और पहले मिलान पर रुक जाता है, फिर उस तालिका में सामान्य सबसे लंबे प्रीफ़िक्स की खोज करता है। खाली तालिका की ओर इशारा करने वाला नियम अगले नियम द्वारा चुने गए पर गिर जाता है, और इसी तरह सावधानी से लिखा गया नियम कुछ न करता हुआ प्रतीत हो सकता है।

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

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

नियम-समूह को सूची नहीं, क्रम के रूप में पढ़ें

नियमों को उनकी प्राथमिकताओं और उन तालिकाओं के साथ छापें जिनका वे संदर्भ देते हैं, फिर हर उस तालिका को छापें जिसमें डिफ़ॉल्ट या टनल मार्ग है। महत्वपूर्ण हिस्सा क्रम है, और स्क्रीनशॉट आमतौर पर यही हिस्सा छोड़ देता है:

ip rule show
ip route show table all | sed -n '1,60p'
ip route get 198.51.100.20 from 10.8.0.2
ip route get 198.51.100.20 from 10.8.0.2 mark 0x1

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

मार्क और सॉकेट: क्लाइंट ट्रैफ़िक बाँटने के दो तरीके

कुछ क्लाइंट फ़ायरवॉल में पैकेट मार्क करते हैं और मार्क से मेल खाता नियम जोड़ते हैं। अन्य सॉकेट स्तर पर राउटिंग उपयोग करते हैं, जुड़ने से पहले सॉकेट पर मार्ग रखते हैं। पहला ip rule में दिखता है; दूसरा नहीं, और सामान्य खोज में नहीं दिखेगा।

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

एक और नियम जोड़ने से पहले स्वामित्व का पता लगाएँ

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

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

एक नहीं, दो फ़्लो से दायरा साबित करें

सुधार की पुष्टि केवल उस फ़्लो से होती है जिस पर असर होना चाहिए और उस फ़्लो से जिस पर नहीं। ऐसा गंतव्य चुनें जिसे नीति टनल में भेजती है, और एक जिसे बाहर रहना चाहिए, फिर दोनों के लिए खोजों और कैप्चर की तुलना करें:

ip route get 198.51.100.20 from 192.0.2.44
ip route get 198.51.100.21 from 192.0.2.44
tcpdump -ni any host 198.51.100.21 and port 443

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

टिकट में नियमों की प्राथमिकताएँ और स्वामी सेवा दो परीक्षण पतों के साथ दर्ज करें। तब अगले व्यक्ति के पास लक्षण के वर्णन के बजाय दोहराने योग्य जोड़ी होती है, और वह एक मिनट में बता सकता है कि नीति-आधारित राउटिंग अब भी चल रही है या नहीं।

संबंधित लेख