लिनक्स पर मेरे पास कितने कस्टम रूट टेबल हो सकते हैं?


12

मैं लिनक्स पर कस्टम रूट टेबल के साथ काम कर रहा हूं, और "आईपी मार्ग" कमांड के कुछ प्रलेखन और व्यवहार से थोड़ा भ्रमित हूं। ऐसा लगता है कि केवल मान्य मान 0-255 होना चाहिए और साथ ही / etc / iproute2 / rt_tables में परिभाषित नाम:

255 local
254 main
253 default
0   unspec

यह कस्टम तालिकाओं के लिए 1-252 छोड़ देगा। अपरिभाषित तालिका नाम का उपयोग करने का प्रयास एक त्रुटि देता है:

$ ip route show table kermit
Error: argument "kermit" is wrong: table id value is invalid

हालांकि, ऐसा लगता है कि मैं त्रुटि के बिना 255 से अधिक संख्या का उपयोग कर सकता हूं:

$ ip route show table 1000
[no output]
$ ip route add 10.10.10.0/24 dev eth0 table 1000
[no output]
$ ip route show table 1000
10.10.10.0/24 dev eth0  scope link

कुछ बिंदु पर, चीजें भी अजीब हो जाती हैं। अधिकतम (2 ^ 31) पर, यह स्थानीय तालिका (255) में "ओवरफ्लो" होता है:

$ ip route show table 2147483647
[no output]
$ ip route show table 2147483648
[exact output of table 255 (local)]

क्या कोई समझा सकता है कि क्या हो रहा है? क्या वास्तव में अधिकतम कस्टम रूटिंग टेबल हैं जिनका उपयोग किया जा सकता है?

जवाबों:


8

जहाँ तक 2.6 कर्नेल का संबंध है, अधिकतम तालिका 0xFFFFFFFF (rtnetlink.h से) है। हालाँकि, iproute2 लुकअप करने के लिए इसमें फ़िल्टर किए गए पूर्णांक का उपयोग करता है, इसलिए 2 ^ 31 पर ऐसा लगता है कि आप एक अवैध तालिका निर्दिष्ट करते हैं और आपको तालिका 255 दिखाने के लिए चूक करते हैं।


तो, एक अमान्य नाम आपको एक त्रुटि देता है, लेकिन एक अमान्य पूर्णांक आपको 255 देता है? इसके अलावा, मुझे लगता है कि 255 पिछली अधिकतम थी (2.4 में शायद?) लेकिन कर्नेल 2.6 में 32-बिट संख्या में वृद्धि हुई थी?
बॉब

हाँ, 2.4 और 2.2 में अधिकतम 255 था
Ciclamino

इसके अलावा, हमेशा 32 वें बिट के साथ मानों के लिए तालिका 255 दिखाते हुए किसी भी प्रकार का नियोजित व्यवहार नहीं दिखता है, बस बग। एक पंक्ति पैच के साथ iproute करने के लिए मैं नंबर 4294967290 के साथ एक तालिका बनाने और दिखाने में सक्षम था। हालांकि, यह उतना सरल नहीं हो सकता है, अन्य टुकड़े हो सकते हैं जो अभी भी 2 ^ 32 तालिकाओं के साथ सौदा नहीं करते हैं।
सिसलैमिनो 20

स्वीकार किया, धन्यवाद। हो सकता है कि आपको अपना पैच :)
Bob

1
अधिक हाल के उपकरण 2 ^ 32-1 (जैसे: $ ip -V ip utility, iproute2-ss180813 $ ip route list table 4294967296 Error: argument "4294967296" is wrong: table id value is invalid $ ip route list table 4294967295(आउटपुट नहीं)) तक तालिका मानों की अनुमति देते हैं । पिछला व्यवहार "अनिर्दिष्ट" तालिका 0 (255 नहीं) दिखाने के लिए हो सकता है, लेकिन 0 में 255 शामिल होंगे (और कोई भी) अन्य तालिका)।
एबी
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.