लिनक्स रूटिंग बग?


9

मैं थोड़ी देर से आसानी से प्रतिलिपि प्रस्तुत करने योग्य मुद्दे से नहीं जूझ रहा हूं। मैं लिनक्स कर्नेल v3.1.0 का उपयोग कर रहा हूं, और कभी-कभी कुछ आईपी पते पर रूट करने से काम नहीं होता है। ऐसा लगता है कि पैकेट को गेटवे पर भेजने के बजाय, कर्नेल गंतव्य पते को स्थानीय मानता है, और एआरपी के माध्यम से अपना मैक पता प्राप्त करने की कोशिश करता है।

उदाहरण के लिए, अब मेरा वर्तमान आईपी पता 172.16.1.104/24 है, गेटवे 172.16.1.254 है:

# ifconfig eth0 eth0      Link encap:Ethernet  HWaddr 00:1B:63:97:FC:DC
          inet addr:172.16.1.104  Bcast:172.16.1.255  Mask:255.255.255.0
          UP BROADCAST RUNNING MULTICAST  MTU:1500  Metric:1
          RX packets:230772 errors:0 dropped:0 overruns:0 frame:0
          TX packets:171013 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:1000
          RX bytes:191879370 (182.9 Mb)  TX bytes:47173253 (44.9 Mb)
          Interrupt:17

# route -n
Kernel IP routing table
Destination     Gateway         Genmask         Flags Metric Ref    Use Iface
0.0.0.0         172.16.1.254    0.0.0.0         UG    0      0        0 eth0
172.16.1.0      0.0.0.0         255.255.255.0   U     1      0        0 eth0

मैं कुछ पते लिख सकता हूं, लेकिन 172.16.0.59 नहीं:

# ping -c1 172.16.1.254
PING 172.16.1.254 (172.16.1.254) 56(84) bytes of data.
64 bytes from 172.16.1.254: icmp_seq=1 ttl=64 time=0.383 ms

--- 172.16.1.254 ping statistics ---
1 packets transmitted, 1 received, 0% packet loss, time 0ms
rtt min/avg/max/mdev = 0.383/0.383/0.383/0.000 ms
root@pozsybook:~# ping -c1 172.16.0.1
PING 172.16.0.1 (172.16.0.1) 56(84) bytes of data.
64 bytes from 172.16.0.1: icmp_seq=1 ttl=63 time=5.54 ms

--- 172.16.0.1 ping statistics ---
1 packets transmitted, 1 received, 0% packet loss, time 0ms
rtt min/avg/max/mdev = 5.545/5.545/5.545/0.000 ms
root@pozsybook:~# ping -c1 172.16.0.2
PING 172.16.0.2 (172.16.0.2) 56(84) bytes of data.
64 bytes from 172.16.0.2: icmp_seq=1 ttl=62 time=7.92 ms

--- 172.16.0.2 ping statistics ---
1 packets transmitted, 1 received, 0% packet loss, time 0ms
rtt min/avg/max/mdev = 7.925/7.925/7.925/0.000 ms
root@pozsybook:~# ping -c1 172.16.0.59
PING 172.16.0.59 (172.16.0.59) 56(84) bytes of data.
From 172.16.1.104 icmp_seq=1 Destination Host Unreachable

--- 172.16.0.59 ping statistics ---
1 packets transmitted, 0 received, +1 errors, 100% packet loss, time 0ms

172.16.0.59 पिंग की कोशिश करते समय, मैं tcpdump में देख सकता हूं कि ARP रीक भेजा गया था:

# tcpdump -n -i eth0|grep ARP
tcpdump: verbose output suppressed, use -v or -vv for full protocol decode
listening on eth0, link-type EN10MB (Ethernet), capture size 96 bytes
15:25:16.671217 ARP, Request who-has 172.16.0.59 tell 172.16.1.104, length 28

और / proc / net / arp में 172.16.0.59 के लिए एक अधूरी प्रविष्टि है:

# grep 172.16.0.59 /proc/net/arp
172.16.0.59      0x1         0x0         00:00:00:00:00:00     *        eth0

कृपया ध्यान दें कि 172.16.0.59 है अन्य कंप्यूटरों से इस लैन से पहुँचा जा सकता।

क्या किसी को भी पता नहीं है कि क्या हो रहा है? धन्यवाद।

अपडेट: नीचे दी गई टिप्पणियों का जवाब दें:

  • Eth0 और lo के अलावा कोई इंटरफेस नहीं है
  • ARP req को दूसरे छोर पर नहीं देखा जा सकता है, लेकिन यह है कि यह कैसे काम करना चाहिए। मुख्य समस्या यह है कि पहले स्थान पर एआरपी रीक भी नहीं भेजा जाना चाहिए
  • समस्या तब भी बनी रहती है जब मैं एक स्पष्ट रास्ता जोड़ देता हूं "कमांड ऐड -होस्ट 172.16.0.59 gw 172.16.1.254 dev eth0"

मैं सोच रहा हूँ कि यह किसी प्रकार का डिफ़ॉल्ट व्यवहार है, आइए ARP तालिका भी देखें? दूसरे छोर की arp टेबल यहाँ उपयोगी हो सकती है।
स्पेसमैनस्पीफ

इसे ठीक कैसे कर सकते हैं? क्या एक मेजबान विशिष्ट मार्ग डालने से उसे फिर से काम करना पड़ता है? मुझे आश्चर्य है कि अगर आप किसी तरह से एक ICMP रीडायरेक्ट हो रहे हैं जो मेजबान को लगता है कि गंतव्य स्थानीय है।
पॉल

ऐसा लगता है कि arp उत्तर वापस नहीं आ रहा है। क्या आप 172.16.0.59 होस्ट पर tppdump कर सकते हैं? क्या यह एक vm अतिथि है? होस्ट पर नेटवर्क ट्रैफ़िक भी जांचें।
एंड्रियासएम

क्या आप कृपया इसका आउटपुट पोस्ट कर सकते हैं ifconfig -a? क्या आपके पास इस होस्ट के लिए अन्य इंटरफेस / आईपी हैं?
खालिद

मैंने उत्तर के साथ सवाल अपडेट किया है
Balázs Pozsár

जवाबों:


7

यह वास्तव में एक लिनक्स कर्नेल बग है, शायद संस्करण 2.6.39 के बाद से। मैंने प्रश्न को lkml और netdev सूचियों ( https://lkml.org/lkml/2011/11/18/191 पर देखें ) पर पोस्ट किया है, और यह http: // www में एक अलग नेटदेव धागे में चर्चा की गई थी .spinics.net / सूचियों / netdev / msg179687.html

वर्तमान समाधान अब या तो रिबूट है या सभी मार्गों को फ्लश करने के लिए और आईसीएमपी पुनर्निर्देश को समाप्त करने के लिए 10 मिनट की प्रतीक्षा करें। इसे फिर से रोकने के लिए,

echo 0 >/proc/sys/net/ipv4/conf/eth0/accept_redirects

मदद करता है।


दुर्भाग्य से ऊपर मदद करने के लिए प्रतीत नहीं होता है ..
सिवन

सभी इंटरफ़ेस के लिए इसे करने का प्रयास करें: x पढ़ते समय / proc / sys / net -name accept_redirects खोजें; इको-एन ०> $ x; किया या हो सकता है कि आपके पास एक और बग हो
Balázs Pozsár

धन्यवाद, मैंने पहले ही सभी इंटरफेस के लिए इसे सक्षम कर दिया था। IP, IPSEC सुरंगों से हैं (इस मशीन में उनमें से हंड्रेंड हैं) और उनमें से 5-10 हमेशा (172.x) होते हैं, जो कि eth0 इंटरफ़ेस में arp टेबल में सूचीबद्ध हैं (अधूरी) HWaddress, और लापता HWtype। वे समाप्त हो रहे हैं, और नए लोग उनकी जगह लेते हैं, लेकिन कभी-कभी एक रिबूट की आवश्यकता होती है।
सिवनी

-1

172.16.XX डिफ़ॉल्ट सबनेट मास्क 255.255.0.0 है, आपने इसे 255.255.255.0 पर पुन: कॉन्फ़िगर किया है। तो मेजबान चीजें 172.16.0.x और 172.16.1.x अलग-अलग सबनेट पर हैं। इस प्रकार यह कोशिश करेगा और डिफ़ॉल्ट गेटवे के माध्यम से इसे रूट करेगा।

अपने सबनेट मास्क को 255.255.0.0 में बदलने से समस्या हल हो जाएगी।

क्या आप एक आरेख प्रदान कर सकते हैं। यदि आप एक नेटवर्क नहीं बना सकते हैं, तो इसे ठीक नहीं किया जा सकता है (पुराने नेटवर्क इंजीनियर कहावत ... मेरे द्वारा!)।

चीयर्स,


नेटवर्क आरेख ड्राइंग के लिए आप किस वेब ऐप या लाइट वेट डेस्कटॉप ऐप की सिफारिश करेंगे?
बेलमिन फर्नांडीज 14

इसका आम तौर पर "डिफ़ॉल्ट" नेटमास्क से कोई लेना-देना नहीं है। वैसे भी, ऊपर मेरा जवाब देखें।
बालज पॉज़सोर

नीचे निशान के लिए धन्यवाद। तो, आपको क्यों लगता है कि राउटर icmp रिडायरेक्ट जनरेट कर रहा है।
यूनिक्स जेनेटर

राउटर रीडायरेक्ट जनरेट कर रहा है, क्योंकि यह चीजें होस्ट को एक अलग गेटवे का उपयोग करना चाहिए। मुझे लगता है कि समस्या की आपकी समझ एक बग है। जब तक आप मुझे अन्यथा शिक्षित नहीं करना चाहेंगे
द यूनीक्स जेनिटर

कृपया स्वीकृत उत्तर में दिए गए थ्रेड्स को पढ़ें। समस्या यह है कि इन रूटिंग सूचनाओं को खारिज नहीं किया जाता है, भले ही वे होनी चाहिए। यह राउटर / गेटवे के साथ कोई समस्या नहीं है।
बलाज़ पॉज़सर
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.