एनआईसी की पहचान कैसे करें जो लिनक्स बॉक्स से एक ही स्विच से जुड़े हैं?


15

प्रारंभिक व्यवस्था

लिनक्स प्रशासक के रूप में आपने 6 एनआईसी एथ 0 से एथ 5 के साथ एक नया लिनक्स बॉक्स स्थापित किया है। Eth0 इंटरफ़ेस सही ढंग से कॉन्फ़िगर किया गया है और अन्य सभी इंटरफेस वर्तमान में ऊपर हैं, लेकिन आईपी पते के बिना। नेटवर्क के लोगों ने इस बॉक्स में केवल चार केबल संलग्न किए हैं। दो LAN केबल्स का उपयोग बॉक्स को उत्पादन नेटवर्क से जोड़ने के लिए किया जाता है और दो का उपयोग बॉक्स को एक निजी नेटवर्क से जोड़ने के लिए किया जाता है। आप केवल जानते हैं कि eth0 उत्पादन जाल से जुड़ा है। लेकिन आप यह नहीं जानते हैं कि कौन से अन्य एनआईसी एक ही स्विच से जुड़े हैं क्योंकि अलग-अलग सर्वर पीढ़ी हैं और / या नेटवर्क लोग अपने कनेक्शन के लिए गलत एनआईसी का उपयोग करते हैं।

हाथ में लिया काम

जैसा कि यह सेटअप आपके बुनियादी ढांचे के लिए विशिष्ट है, आप बॉन्डिंग इंटरफेस के कॉन्फ़िगरेशन को स्वचालित करना चाहते हैं। अब आपके पास यह पता लगाने का कार्य है कि कौन से एनआईसी बिल्कुल जुड़े हुए नहीं हैं और कौन से एनआईसी एक ही स्विच से जुड़े हुए हैं इसलिए वे बंधुआ हो सकते हैं। आपके पास केवल लिनक्स बॉक्स तक पहुंच है और स्विच को क्वेरी नहीं कर सकते।

विचार

लिंक की स्थिति का पता लगाना आसान है:

ethtool $device | grep 'Link detected' | cut -d ':' -f 2

लेकिन उन उपकरणों से कैसे मिलान करें जो एक ही स्विच से जुड़े हैं?

एचपी-यूएक्स में उस उद्देश्य के लिए एक उपकरण है जिसे लिंकलूप [1] कहा जाता है । आधिकारिक लिनक्स उपकरण गायब है (हालांकि एक पुराना SourceForce परियोजना है, हालांकि)।

संभावित समाधान जो पहले से ही मेरे दिमाग में आ चुके हैं:

  1. Tcpdump के साथ सभी इंटरफेस पर सुनें। क्राफ्ट करें और ICMP (ब्रॉडकास्ट) पैकेट भेजें। उस पैकेट को देखने वाले इंटरफेस को एक ही स्विच से जोड़ने की आवश्यकता होती है। -> इसके लिए उपयोग किए जा सकने वाले सरल उपकरणों के सुझावों की आवश्यकता है। मैं स्क्रिप्टिंग के लिए सादे खोल कमांड या पायथन का उपयोग करना चाहूंगा।

  2. कुछ आसान प्रोटोकॉल (HTTP?) के माध्यम से बाहरी बॉक्स से बात करने की कोशिश करें और देखें कि क्या प्रतिक्रिया है। -> त्रुटि प्रवण और बाहरी बॉक्स पर निर्भर।

क्या आपके पास इस कार्य को हल करने के लिए आगे के विचार या सुझाव हैं?

सभी टिप्पणियों के लिए अग्रिम धन्यवाद!

[१] http://linux.die.net/man/1/linkloop


1
यह वास्तव में होमवर्क की तरह बदबू आ रही है - क्या यह एक वास्तविक समस्या है जो आप उत्पादन वातावरण में सामना कर रहे हैं?
voretaq7

2
वास्तविक समस्या और एक कष्टप्रद, मैं जोड़ सकता हूं। मैं लंबे समय से स्कूल से बाहर हूं ...
रेनर रॉटमैन

ठीक है - कारण मैं पूछ रहा हूं कि आप जिस तरह से सवाल पूछ रहे हैं वह मुझे मेरी नेटवर्किंग पाठ्यपुस्तकों में से एक की शैली की याद दिलाता है :-)
voretaq7

जवाबों:


10

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

आप निम्नलिखित के साथ इस जानकारी को देखने के लिए tcpdump का उपयोग कर सकते हैं (उपयुक्त इंटरफ़ेस का प्रतिस्थापन कर सकते हैं):

tcpdump -nn -v -i eth0 -s 1500 -c 1 'ether[20:2] == 0x2000'

सीडीपी का मानक आधारित संस्करण एलएलडीपी (लिंक लेयर डिस्कवरी प्रोटोकॉल) है। कुछ विक्रेताओं के पास डिफ़ॉल्ट रूप से और अन्य पर यह होगा, इसलिए आपका माइलेज अलग-अलग होगा। लिनक्स के लिए कुछ एलएलडीपी कार्यान्वयन हैं, लेकिन यदि आप उपरोक्त के समान कुछ चाहते हैं तो आप इसका उपयोग कर सकते हैं (एलएलडीपी को सिस्को स्विच पर सेट करें और नीचे परीक्षण किया गया है, जो ऊपर से अधिक सुसंगत है):

tcpdump -nn -v -i eth0 -s 1500 -c 1 'ether proto 0x88cc'

यह कहते हुए कि, मैं कहूंगा कि विकल्प 1 का एक संशोधन जो आप प्रदान करते हैं, वह काम कर सकता है, हालांकि, एक प्रसारण ICMP भेजने के बजाय, आप एक सामान्य ICMP (ARP तालिका में एक मेजबान के लिए नहीं) की कोशिश कर सकते हैं और ARP पैकेट पर कब्जा कर सकते हैं। यदि ARP अनुरोध को eth0 से बाहर भेजा जाता है और आप इसे eth1 और eth3 पर प्राप्त करते हैं, तो आप जानते हैं कि वे उसी VLAN पर हैं। उसके लिए सबसे सरल आदेश इस प्रकार है:

tcpdump -i eth0 arp

1
वास्तव में मैं इस समाधान के साथ गया था और एक छोटी सी स्क्रिप्ट लिखी थी जो पृष्ठभूमि में थ्रेड्स के रूप में tcpdumps चलाता है और फिर मैं arp अनुरोध भेजता हूं और देखता हूं कि किस इंटरफ़ेस से arp संकुल प्राप्त होता है जिसमें से src mac। काम करता है लेकिन सभी टाइमआउट में कुछ समय लगता है।
रेनर रॉटमैन

मुझे लगता है कि आप पिंग टाइमआउट के बारे में बात कर रहे हैं? आप एक सेकंड से कम समय के लिए समय कम करने के लिए विकल्प के रूप में फप्पिंग या नैम्प की कोशिश कर सकते हैं। उदाहरण के लिए, "fping -c1 -t200 192.168.0.1" या "nmap -sP --max-retries = 1 --host-timeout = 200ms 192.168.0.1"।
यूलर

3

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


3

यदि स्विच सिस्को डिवाइस हैं, तो आप शायद सीडीपी जानकारी प्राप्त कर सकते हैं, बशर्ते वे सीडीडी जानकारी की घोषणा / प्रसारण कर रहे हों

जैसे cdp टूल या cdpr


1

सिर्फ linkloopटूल को डाउनलोड और निर्माण क्यों नहीं करते ? यह इतना पुराना नहीं है ...

अन्यथा, मैं बस कुछ उपकरण का उपयोग करूंगा जो परत 2 पर प्रसारित होंगे और सत्यापित करेंगे कि आप इसे tcpdump के माध्यम से प्राप्त करते हैं।

एक प्रसारण ICMP पैकेट भेजना आसान है ping -b 192.168.1.255


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