गलत गेटवे वापस लाने के आधार पर लिनक्स रूट पॉलिसी


-1

मेरे पास डॉकटर पर एक सिम्युलेटेड एड-हॉक नेटवर्क है, जो आधार के रूप में उबंटू 16.04 का उपयोग कर रहा है।

मेरे पास कई राउटिंग टेबल हैं। तालिका 102, प्रश्न के रूप में दिखाई देती है:

root@b22e0eafe06d:~# ip route show table 102
172.17.0.3 via 172.17.0.3 dev eth0  proto static
172.17.0.4 via 172.17.0.4 dev eth0  proto static
172.17.0.5 via 172.17.0.3 dev eth0  proto static
172.17.0.6 via 172.17.0.3 dev eth0  proto static
172.17.0.7 via 172.17.0.3 dev eth0  proto static
172.17.0.8 via 172.17.0.3 dev eth0  proto static
172.17.0.9 via 172.17.0.3 dev eth0  proto static

कुछ नीति नियम भी शामिल हैं, जिसमें 0x02 की तालिका सेटिंग 102 के साथ कुछ भी निर्देशन करने वाला कोई भी शामिल है:

root@b22e0eafe06d:~# ip rule list
0:  from all lookup local
1:  from all tos 0x02 lookup 102
2:  from all tos 0x04 lookup 104
3:  from all tos 0x06 lookup 106
4:  from all tos 0x08 lookup 108
32766:  from all lookup main
32767:  from all lookup default

हालाँकि, जब मैं एक काम करता हूं ip route get 172.17.0.9 tos 0x02, जब मुझे 172.17.0.3गेटवे के रूप में लौटना चाहिए , मुझे मिलता है 172.17.0.4:

root@b22e0eafe06d:~# ip route get 172.17.0.9 tos 0x02
172.17.0.9 via 172.17.0.4 dev eth0  src 172.17.0.2
    cache

यह गेटवे के लिए होता है जिसे चुना जाएगा मुख्य राउटिंग टेबल का उपयोग किया गया था। मुझे संदेह है कि नियम 0x02 का संदर्भ किसी कारण से मेल नहीं खा रहा है।

मैंने नियम 1 को एक नियम से बदल दिया, जो 172.17.0.9 को दिए गए सभी पैकेटों को तालिका 102 में भेजता है, और यह काम करता है। मैं यह निष्कर्ष निकालता हूं कि तालिका १०२ काम कर रही है, लेकिन किसी कारण के लिए ० एक्स ०२ पर मेल नहीं खाता है।

root@b22e0eafe06d:~# ip rule del priority 1
root@b22e0eafe06d:~# ip rule add to 172.17.0.9 table 102
root@b22e0eafe06d:~# ip route get 172.17.0.9
172.17.0.9 via 172.17.0.3 dev eth0  src 172.17.0.2
    cache

कोई स्पष्टीकरण?

BTW, जब मैं अन्य tos मानों, जैसे 0x04, 0x08 के साथ रूटिंग करने का प्रयास करता हूं, तो यह काम करता दिखता है। यह 0x02 है जो एक समस्या दे रहा है। मैं परीक्षण उद्देश्यों के लिए कस्टम टॉस मानों का उपयोग कर रहा हूं।

जवाबों:


0

यह पता लगा, और मुद्दा मैं उपयोग कर रहा था tos मूल्यों है।

एक पैकेट हेडर में, टोस को 8 बिट्स द्वारा दर्शाया जाता है। ऐसे कई RFC हैं जो यह बताते हैं कि इन बिट्स की व्याख्या कैसे की जाती है, लेकिन सभी मामलों में केवल उच्चतम 6 बिट्स ही टॉस के लिए प्रासंगिक हैं। सबसे कम 2 बिट अतिरिक्त जानकारी के लिए आरक्षित हैं (उदाहरण के लिए, भीड़ की सूचना)।

नीति नियम में टॉस सेट करते समय, आप संपूर्ण फ़ील्ड (सभी 8 बिट्स) सेट कर रहे हैं। चूंकि 0x02 का मान मैं केवल 2s कॉलम बिट्स का उपयोग कर रहा था, इसलिए इसे 0x00 (अनिवार्य रूप से सभी में कोई टो नहीं) के रूप में व्याख्या की जा रही थी।

इसलिए यह याद रखना महत्वपूर्ण है कि जब आप tos मान चुन रहे हों, तो उन्हें असाइन करने से पहले बिट्स 2 स्थिति को बाईं ओर शिफ्ट करें।

हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.