লিনাক্সে আমার কয়টি কাস্টম রুট টেবিল থাকতে পারে?


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 কার্নেল সম্পর্কিত, সর্বাধিক সারণি 0xFFFFFFFFF (rtnetlink.h থেকে)। যাইহোক, আইপ্রোটি 2 তার ফিল্টারটিতে একটি স্বাক্ষরিত পূর্ণসংখ্যা ব্যবহার করে তাই 2 ^ 31 এ দেখে মনে হয় যে আপনি একটি অবৈধ সারণী নির্দিষ্ট করেছেন এবং আপনাকে টেবিল 255 দেখানোর ক্ষেত্রে ডিফল্ট রয়েছে।


সুতরাং, একটি অবৈধ নাম আপনাকে একটি ত্রুটি দেয় তবে একটি অবৈধ পূর্ণসংখ্যা আপনাকে 255 দেয়? এছাড়াও, আমি ধরে নিয়েছি যে 255 পূর্বের সর্বোচ্চ ছিল (সম্ভবত 2.4 তে?) তবে কার্নেল ২.6-তে 32-বিট সংখ্যায় বৃদ্ধি পেয়েছিল?
বব

হ্যাঁ, ২.৪ এবং ২.২ এ সর্বাধিক ছিল 255.
সিক্লামিনো

এছাড়াও, সর্বদা 32 তম বিটের সাহায্যে মানগুলির জন্য সারণী 255 প্রদর্শন করা কোনও ধরণের পরিকল্পিত আচরণ হিসাবে দেখা যায় না, কেবল একটি বাগ। আইপ্রেটে একটি লাইনের প্যাচ দিয়ে আমি 4294967290 নম্বর সহ একটি টেবিল তৈরি করতে এবং দেখাতে সক্ষম হয়েছি However তবে, এটি এতটা সহজ নাও হতে পারে, এমন অন্যান্য টুকরাও থাকতে পারে যা এখনও 2 ^ 32 টেবিলের সাথে ডিল করে না।
সিক্লামিনো

গ্রহণ করা হয়েছে, ধন্যবাদ। হতে পারে আপনার প্যাচ জমা দেওয়া উচিত :)
বব

1
আরও সাম্প্রতিক সরঞ্জামগুলি টেবিলের মানগুলিতে 2 $ 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 4294967295output 32-1 অবধি অনুমতি দেয় (যেমন: (কোনও আউটপুট নয়) previous অন্যান্য টেবিল)।
এবি
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.