उबंटू में लोकलहोस्ट के लिए रास्ता क्यों नहीं है?


12
$ sudo docker run --rm ubuntu:14.04 route -n
Kernel IP routing table
Destination     Gateway         Genmask         Flags Metric Ref    Use Iface
0.0.0.0         172.17.42.1     0.0.0.0         UG    0      0        0 eth0
172.17.0.0      0.0.0.0         255.255.0.0     U     0      0        0 eth0

क्या इसका मतलब यह नहीं है कि 127.0.0.0/8 को 172.17.42.1 के प्रवेश द्वार की ओर रूट किया गया है और लूपबैक डिवाइस को नहीं?


मेरा मतलब था: उबंटू में लूपबैक के लिए कोई रास्ता क्यों नहीं है?
बालाज़्स राऊ

मुझे लगता है कि लूपबैक नेटवर्क के लिए स्पष्ट मार्ग अतीत से हैं। आपके प्रश्न को देखकर मैं हमारे कुछ सर्वरों पर एक नज़र डालता हूं और लूपबैक के रूटिंग टेबल पर कोई मार्ग नहीं हैं। यह भी Solaris 10 के लिए मान्य है, Solaris 8 के लिए नहीं (हाँ, हमारे पास अभी भी Solaris 8 के साथ कुछ बॉक्स हैं)।
अल्फामाइकविक्टर

जवाबों:


25

routeआदेश हटाई गई है, और अब और नहीं किया जाना चाहिए।

नया तरीका आदेशों के iproute सेट का उपयोग करना है, जो सभी ipएक वस्तु द्वारा पीछा किया जाता है। उदाहरण के लिए:

$ ip route show
default via 192.168.1.254 dev eth0 
192.168.0.0/23 dev eth0  proto kernel  scope link  src 192.168.1.27 

अब, मैं आपको सुनता हूँ, यह मूल रूप से एक ही जानकारी है! हां, लेकिन यह पूरी कहानी नहीं है। रूटिंग टेबल से पहले (हाँ, बहुवचन) नियम तालिका आती है:

$ ip rule show
    0:  from all lookup local 
32766:  from all lookup main 
32767:  from all lookup default 

राउटिंग टेबल जिसे हम पहले देख रहे थे वह mainराउटिंग टेबल है। आपका प्रश्न localरूटिंग टेबल की चिंता करता है , जिसमें स्थानीय कनेक्शन से संबंधित सभी मार्ग शामिल हैं। इस तालिका को निम्नानुसार दिखाया जा सकता है:

$ ip ro sh table local
broadcast 127.0.0.0 dev lo  proto kernel  scope link  src 127.0.0.1 
local 127.0.0.0/8 dev lo  proto kernel  scope host  src 127.0.0.1 
local 127.0.0.1 dev lo  proto kernel  scope host  src 127.0.0.1 
broadcast 127.255.255.255 dev lo  proto kernel  scope link  src 127.0.0.1 
broadcast 192.168.0.0 dev eth0  proto kernel  scope link  src 192.168.1.27 
local 192.168.1.27 dev eth0  proto kernel  scope host  src 192.168.1.27 
broadcast 192.168.1.255 dev eth0  proto kernel  scope link  src 192.168.1.27

(आप ipविकल्पों / मापदंडों को तब तक संक्षिप्त कर सकते हैं जब तक वे अभी भी अद्वितीय हैं, इसलिए ip ro shजैसा है वैसा ही है ip route show।)

यहां आप लूपबैक रूट देख सकते हैं।

आप इस नीति-आधारित रूटिंग के साथ सभी प्रकार की अद्भुत चीजें कर सकते हैं , मैं आपको मैथ्यू जी मार्श द्वारा लिनक्स के साथ पॉलिसी रूटिंग को पढ़ने की सलाह देता हूं ।


1
आपके शब्दों के बारे में बस एक चिंता: उनका प्रश्न वास्तव में स्थानीय पते (127.0.0.0/8) के लिए मार्ग के बारे में था। table localजवाब है, लेकिन सवाल नहीं है। यह उत्तर है क्योंकि किसी भी 127 पर यातायात। * पता 127.0.0.1 के स्रोत पते के रूप में परिवर्तित हो जाता है, और मुझे लगता है कि इसका उपयोग करने के लिए भी मजबूर किया जाता है dev lo
पीटर कॉर्डेस

1
तो सवाल का असली जवाब है "क्योंकि लूपबैक विशेष है और इसे किसी की ज़रूरत नहीं है", असली जवाब है। उन राउटिंग टेबल प्रविष्टियों में से कोई भी उदाहरण के लिए, 127.1.1.1 के मार्ग के बारे में कुछ भी नहीं कहता है, लेकिन यह अभी भी काम करता है (जैसा कि आप पिंग बार से बता सकते हैं)। संभवतः नेटवर्किंग कोड विशेष-मामलों के स्थानीय पते प्रदर्शन के कारणों के लिए, क्योंकि ip addrयह अपने स्वयं के पते loसे अधिक नहीं दिखाता है 127.0.0.1, लेकिन यह वास्तव में 127 में किसी भी आईपी के लिए ट्रैफ़िक प्राप्त करेगा ... / 8
पीटर कॉर्डेस

4
@PeterCordes वास्तव में लाइन 127.1.1.1 local 127.0.0.0/8 dev lo proto kernel scope host src 127.0.0.1के मार्ग को कवर करती है; इसका मतलब है कि 127 से शुरू होने वाली कोई भी चीज स्थानीय है।
wurtel

आह, ठीक है मैं सब कुछ समझ नहीं पाया था कि तालिका localमें एक प्रविष्टि localनिहित है। धन्यवाद।
पीटर कॉर्ड्स

2

routeआदेश 10 साल पहले के बाद से की थी और आप के साथ जाना चाहिए iproute2संकुल।

जिसका उपयोग करते समय तालिका प्रदर्शित होता है। तालिका उपयोग प्रदर्शित करने के लिए ।ip route showmainlocalip route show table local

आशा है कि यह मदद की।

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