लिनक्स में, क्या मीट्रिक में कोई मीट्रिक वाला मार्ग है?


11

यदि आपके पास (लिनक्स में) ये दो मार्ग हैं:

default via 192.168.1.1 dev enp58s0f1
default via 192.168.16.1 dev wlp59s0  proto static  metric 600

मुझे उम्मीद है कि पहले एक का उपयोग किया जाता है, लेकिन ऐसा नहीं है: दूसरे का उपयोग इसके बजाय किया जाता है।

अगर मैं इसे इसके लिए बदल दूं:

default via 192.168.1.1 dev enp58s0f1  proto static  metric 100 
default via 192.168.16.1 dev wlp59s0  proto static  metric 600

फिर यह उम्मीद के मुताबिक काम करता है। ऐसा लगता है कि "कोई भी मीट्रिक" किसी भी संख्या की तुलना में अधिक खराब (उच्चतर) मीट्रिक नहीं है, बजाय मीट्रिक 0 के।

ये क्या हो रहा है? क्या यह लिनक्स, या एक नेटवर्किंग मानक के लिए विशिष्ट है?

अग्रिम में धन्यवाद।

जवाबों:


6

क्या आप अपने पहले अवलोकन के बारे में निश्चित हैं? फिर क्या करता है ip route showया route -nदिखाता है? यदि आप proto staticपहले मामले में जोड़ते हैं तो परिणाम बदल जाता है ?

मुझे कम से कम दो संसाधन मिले हैं जो 0यह कहते हैं कि लिनक्स में डिफ़ॉल्ट मान है:

  • http://0pointer.de/lennart/projects/ifmetric/ : लिनक्स कर्नेल में एक मार्ग के लिए डिफ़ॉल्ट मीट्रिक 0 है, जिसका अर्थ है सर्वोच्च प्राथमिकता।
  • http://www.man7.org/linux/man-pages/man8/route.8.html : यदि यह विकल्प inet6 के लिए मीट्रिक निर्दिष्ट नहीं है (IPv6) पता परिवार की चूक को '1' के लिए, inet (IPv4) के लिए यह '0' के लिए चूक। (यह तब संकेत देता है कि उपयोग करते समय डिफ़ॉल्ट अलग हो सकता है iproute2लेकिन इन स्रोतों का विश्लेषण यह नहीं दिखाता है कि यह क्या है)

एक लिनक्स कर्नेल हैकर को निश्चित रूप से उस छाँटने की आवश्यकता होगी।

इसके अलावा जो भी डिफ़ॉल्ट चुना जाता है वह स्पष्ट रूप से ओएस विशिष्ट होता है। उदाहरण के लिए यह आलेख ( https://support.microsoft.com/en-us/help/299540/an-explanation-of-the-automatic-metric-feature-for-ipv4-routes ) दिखाता है कि विंडोज डिफ़ॉल्ट मीट्रिक का चयन करता है लिंक की बैंडविड्थ के आधार पर।


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

6

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

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

यदि ip routeकोई मीट्रिक नहीं दिखाता है, तो आप पुष्टि कर सकते हैं कि route -nनेट-टूल पैकेज से पुराने कमांड का उपयोग करके यह वास्तव में 0 है cat /proc/net/route। हालाँकि, यह आउटपुट आवश्यक रूप से मेल नहीं खाता है जब रूटिंग डेमन आंतरिक रूप से उपयोग करेगा जब उसका सामना 0 मैट्रिक मान से होगा।

इसके अलावा आप मार्ग के मामलों को भी कैसे बनाते हैं। ip routeनेटलिंक एपीआई routeका उपयोग करता है , जबकि ioctl का उपयोग करता है। दो दृष्टिकोणों के बीच डिफ़ॉल्ट मीट्रिक कैसे बनाई जाती है, इसके लिए कोड अलग-अलग मीट्रिक मूल्यों में परिणत होता है। उदाहरण के लिए: के माध्यम से एक आईपीवी 6 डिफ़ॉल्ट मार्ग बनाने ip routeपर आरएचईएल 7 पर 1024 का मीट्रिक मूल्य होगा, जबकि उसी मार्ग के माध्यम routeसे 1 के मीट्रिक में परिणाम होगा।

से RedHat :

  • यदि रूट मेट्रिक के लिए कुछ भी पास नहीं किया जाता है क्योंकि मार्ग मीट्रिक 1 का मान कमांड द्वारा ही उपयोग किया जाता है।
  • यदि रूट मेट्रिक के रूप में आईपी कमांड को कुछ भी पास नहीं किया जाता है, तो विशेषता बिल्कुल नहीं बनाई जाती है और कर्नेल इसे 0 के रूप में समझता है, जिसे बाद में 1024 डिफ़ॉल्ट रूप से अनुवादित किया गया है।
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.