रूटिंग नियम पैकेट मार्क पढ़ता है, conntrack नहीं
पॉलिसी रूटिंग पैकेट मार्क पढ़ती है; conntrack एक अलग मान रखता है जिसका जीवन लंबा होता है। दोनों के बीच नकल करना एक ऐसा चरण है जिसे किसी को लिखना पड़ता है।
चार जाँचें एक काम करने वाले मार्क नियम को एक काम करने वाले रूट से अलग करती हैं: नियम कौन-सा मार्क पढ़ता है, क्या पैकेट उसे लुकअप के समय अब भी ले जाता है, क्या बाद के पैकेटों पर कनेक्शन मार्क बहाल किया गया था, और क्या क्या मेल खाते नियम का मास्क और प्राथमिकता उसे सक्रिय होने देते हैं। बढ़ता काउंटर केवल यह साबित करता है कि कोई नियम किसी चीज़ से मेल खाया। यह इस बारे में कुछ नहीं कहता कि कर्नेल ने अपना रास्ता चुनते समय पैकेट क्या ले जा रहा था।
दोनों मार्क अलग-अलग जगहों पर रहते हैं और अलग-अलग समय-सारणियों पर समाप्त होते हैं।
दो मार्क, दो जीवन
पैकेट मार्क एक skb का होता है, उसके साथ हुकों से गुज़रता है और पॉलिसी रूटिंग का fwmark चयनकर्ता उसे उपभोग करता है। कनेक्शन मार्क conntrack प्रविष्टि का होता है, उस प्रवाह के पैकेटों में बना रहता है और रूटिंग नियम के लिए अदृश्य रहता है जब तक कोई उसे वापस नकल न करे। पैकेट मार्क को कनेक्शन में संग्रहित करना एक भंडारण है; उसे बहाल करना एक अलग क्रिया है। दोनों में से कोई भी अपने आप नहीं होता।
इसीलिए नियमों का समूह सुसंगत दिख सकता है जबकि रूटिंग निर्णय शून्य देखता है: मान संग्रहित किया गया था, और किसी ने उसे बहाल नहीं किया।
दोनों के बीच नकल करना एक चरण है जिसे आप लिखते हैं
दो महत्वपूर्ण कथन विपरीत दिशाओं में चलते हैं: एक पैकेट का मार्क कनेक्शन में संग्रहित करता है, दूसरा कनेक्शन का मार्क पैकेट पर लोड करता है। आपको कौन-सा चाहिए यह इस पर निर्भर करता है कि वर्गीकरण प्रवाह के सापेक्ष कब होता है। किसी रचना को केवल पैकेट मार्क की आवश्यकता हो सकती है, और यह कि कोई कामचलाऊ उपाय दोनों का उपयोग करता था इसलिए conntrack मार्किंग जोड़ना वह तरीका है जिससे एक सरल पॉलिसी दूसरी विफलता विधि पा लेती है।
ct mark set meta mark meta mark set ct mark
नियम के पास दिशा लिखें, क्योंकि पहली नज़र में वाक्य-रचना से यह स्पष्ट नहीं है। पहली पंक्ति संग्रहित करती है, दूसरी बहाल करती है, और कोई भी दूसरी को अनिवार्य नहीं करती।
उस लुकअप से पहले वर्गीकृत करें जो इसे उपभोग करता है
स्थानीय रूप से उत्पन्न ट्रैफ़िक और LAN से अग्रेषित ट्रैफ़िक अलग-अलग हुकों से गुज़रते हैं और अलग-अलग क्षणों पर रूटिंग निर्णयों तक पहुँचते हैं। राउटर के अपने कनेक्शनों के लिए काम करने वाला आउटपुट नियम यह साबित नहीं करता कि अग्रेषित क्लाइंट का पैकेट अपने लुकअप से पहले मार्क किया गया था। वर्गीकरण को वहाँ रखें जहाँ उसे उपभोग करने वाला लुकअप अभी नहीं हुआ है, और देखें कि क्या उसी श्रृंखला के बाद के नियम मान को अधिलेखित करते हैं। श्रृंखला के भीतर क्रम विन्यास का हिस्सा है, कार्यान्वयन का विवरण नहीं।
कनेक्शन-स्थिति की स्थिरता को भी एक स्पष्ट योजना चाहिए। यदि किसी प्रवाह का केवल पहला पैकेट वर्गीकृत होता है, तो बाद के पैकेटों को संग्रहित मार्क बहाल करने की आवश्यकता होती है, वरना वे बिना मार्क वाला रास्ता लेंगे। यही अंतर है कनेक्शन का वर्णन करने वाले मार्क और पैकेट का वर्णन करने वाले मार्क के बीच।
रूट से एक मार्क वाला प्रश्न पूछें
ip route get 10.77.0.10 mark 0x2
नियमों और तालिका की जाँच करें, फिर मार्क सहित रूट से पूछें, और जब स्रोत या आने वाला इंटरफ़ेस पॉलिसी को प्रभावित करते हों तो उन्हें भी शामिल करें। साधारण बिना मार्क वाला लुकअप किसी दूसरे प्रश्न का उत्तर देता है और खुशी से वह रास्ता बताएगा जो आप नहीं चाहते थे। नियम का मान के साथ-साथ उसका मास्क और प्राथमिकता जाँचें, और पुष्टि करें कि चयनित तालिका में उपयोगी रूट है।
बढ़ता काउंटर इस बात का प्रमाण है कि कोई नियम किसी पैकेट से मेल खाया। यह प्रमाण नहीं है कि अंतिम पैकेट सही निर्णय-बिंदु पर इच्छित मार्क ले जा रहा था।
मार्क, दिशा, समय और मास्क पढ़ें। चार जाँचें, और रूट रहस्य बनना बंद कर देता है।