पैकेट को एक इंटरफेस से दूसरे में कॉपी करना


9

मेरे पास 2 ईथरनेट कार्ड के साथ लिनक्स सिस्टम (इसे ए) होने दें, जिसका नाम एथ0 और एथ 1 है जो दो पूरी तरह से असंबंधित LAN से जुड़े हैं।

मूल रूप से eth0 का उपयोग सामान्य अनुप्रयोग ट्रैफ़िक के लिए किया जाता है और eth1 का उपयोग केवल डीबगिंग उद्देश्यों के लिए किया जाता है। डीबगिंग का अर्थ है कि एथ 1 एक क्रॉस केबल का उपयोग करके किसी अन्य लिनक्स बॉक्स (इसे बी होना चाहिए) से जुड़ा हुआ है, जो विरेशर चलाता है। मैं चाहता हूं कि Wireshark A के eth0 पर यात्रा करने वाले एप्लिकेशन पैकेट को संसाधित करने में सक्षम हो।

मूल रूप से मुझे eth1 इंटरफ़ेस से इंटरफ़ेस eth1 के लिए यात्रा पैकेट को कॉपी करने की आवश्यकता है ताकि बॉक्स B पर Wireshark उन्हें सूँघ सके (कुछ कारणों से मेरे पास LAN eth0 तक भौतिक पहुँच नहीं है)। मुझे यह भी निर्दिष्ट करने की आवश्यकता हो सकती है कि कौन से पैकेट को किसी नियम के अनुसार eth0 से eth1 तक कॉपी किया जाए (केवल टीसीपी / आईपी फ़ील्ड के आधार पर)।

यह भी ध्यान दें कि A के eth0 को उचित मोड में रखने की आवश्यकता नहीं है क्योंकि मैं केवल उन पैकेटों के सबसेट को कॉपी करना चाहता हूं जिनके पास गंतव्य है

वहाँ अकेले iptables का उपयोग कर इसे प्राप्त करने का एक तरीका है? या क्या मुझे यह काम करने के लिए एक आवेदन लिखने की आवश्यकता है? पैकेट को "कॉपी" करने के लिए मुझे क्या करना चाहिए?

जवाबों:


7

यदि आपकी कर्नेल हाल ही में पर्याप्त है, तो आप ip0 से फ़ॉरवर्ड 0 से कैप्चर मशीन तक फ़्रेम्स का उपयोग कर सकते हैं ।


वह लिंक अब पासवर्ड से सुरक्षित है।
पाइप

4

आप tc mirred कार्रवाई का उपयोग कर सकते हैं। उदाहरण के लिए: आने वाले ट्रैफ़िक के लिए:

tc qdisc add dev eth0 ingress
tc filter add dev eth0 parent ffff: \
   protocol all prio 2 u32 \
   match u32 0 0 flowid 1:1 \
   action mirred egress mirror dev eth1

आउटगोइंग ट्रैफ़िक के लिए:

tc qdisc replace dev eth0 parent root handle 10: prio
tc filter add dev eth0 parent 10: \
   protocol all prio 2 u32 \
   match u32 0 0 flowid 10:1 \
   action mirred egress mirror dev eth1

3

Tcpbridge के लिए नेट खोजें, जो कि वास्तव में अय्यूब क्या करता है। इसका इस्तेमाल वर्चुअल मशीन से बात करने के लिए भी किया जा सकता है।


1

कुछ ऐसा काम करता है जैसे कि rinetd काम कर सकता है ( केवल मुझे विश्वास है कि TCP के लिए रिडायरेक्टर / सर्वर , इसलिए कोई ARP, लेयर 2, आदि) नहीं है, लेकिन सभी ईमानदारी से, कुछ प्रबंधित स्विच हो रहे हैं जिनमें पोर्ट मिररिंग क्षमताएं हैं या यदि वह बॉक्स केवल वायरशार्क के लिए उपयोग किया जाता है, आप इसमें एक और NIC जोड़ सकते हैं, दो इंटरफेसों को पाट सकते हैं, इसे मशीन A के eth0 के सामने रख सकते हैं, और एक समर्पित सूँघने की मशीन रख सकते हैं।


1

एक उपकरण जो ईथरनेट फ्रेम को एक इंटरफेस से दूसरे में कॉपी करता है वह एक पुल है। पुल के रूप में कार्य करने के लिए आप अपने लिनक्स सिस्टम को कॉन्फ़िगर कर सकते हैं। कुछ दस्तावेज यहां देखे जा सकते हैं:

आप ebtables का उपयोग करके ब्रिजिंग ट्रैफ़िक के लिए फ़िल्टरिंग नियम लागू कर सकते हैं , जो कि iptablesलेयर 2 ट्रैफ़िक का एक एनालॉग है ।


0

मेरे सेटअप में मल्टीकास्ट TX ​​ट्रैफ़िक को iptables द्वारा चिह्नित किया गया था, लेकिन नई रूटिंग टेबल का उपयोग करते हुए पॉलिसी राउटिंग ने कभी काम नहीं किया। हालांकि इसने यूनिकैस्ट TX ​​पैकेट्स के लिए काम किया था (eth0 से eth5 के पैकेटों की उत्पत्ति को पुनः निर्देशित करते हुए)। Tc का उपयोग करने से मुझे eth5 में m0 ट्रैफ़िक मिल सकता है src mac और src ip एड्रेस को t5 से बदल दिया जाता है ताकि स्विच लर्निंग के साथ कोई समस्या न पैदा हो। कर्नेल पैकेट शेड्यूलिंग CONFIG_NET_SCHED के लिए सभी कर्नेल समर्थन सक्षम होना चाहिए

नीचे की ओर से काम करता है unicast और मल्टिकास्ट ट्रैफिक के लिए eth0 से eth5 तक रीडायरेक्ट

नेटफिल्टर का उपयोग सीधे कर्नेल में एक पैकेट का प्रतिनिधित्व करने वाली संरचना के साथ बातचीत करने के लिए किया जा सकता है। इस संरचना, sk_buff में "__u32 nfmark" नामक एक फ़ील्ड शामिल है जिसे हम संशोधित करने जा रहे हैं। तब एक पैकेट के गंतव्य वर्ग का चयन करने के लिए टीसी उस मूल्य को पढ़ेगा।

IP_ADDR_ETH0 = ifconfig eth0 | grep 'inet addr'| cut -d ':' -f 2 | cut -d ' ' -f 1 | tr -d '\n' iptables -t mangle -A OUTPUT -s $ {IP_ADDR_ETH0} -p udp --match मल्टीपॉर्ट --dports 329,330 -o eth0 -j MARK --सेट-मार्क 2

एक पेड़ बनाने जा रहे हैं जो हमारी शेड्यूलिंग नीति का प्रतिनिधित्व करता है, और जो PRIO qdisc (पैकेट शेड्यूलर) का उपयोग करता है (अन्य उपलब्ध लोगों की कोशिश कर सकता है)। डिवाइस की जड़ में संलग्न qdiscs

टीसी qdisc देव eth0 रूट संभाल 15: prio जोड़ें

अब एक तरफ ट्रैफ़िक को आकार देने की नीति है, और दूसरी तरफ़ पैकेट मार्किंग है। दोनों को जोड़ने के लिए, हमें एक फिल्टर की आवश्यकता है।

संदर्भित व्यक्ति tc-mirred (8): mirred कार्रवाई पैकेट मिररिंग (प्रतिलिपि) या पुनर्निर्देशन (चोरी) को प्राप्त पैकेट को प्राप्त करने की अनुमति देती है। मिररिंग जिसे कभी-कभी स्विच पोर्ट एनालाइज़र (SPAN) के रूप में संदर्भित किया जाता है और आमतौर पर विश्लेषण और / या डिबग प्रवाह के लिए उपयोग किया जाता है।

संदर्भित मैन tc-fw (8): fw - fwmark ट्रैफिक कंट्रोल फ़िल्टर fw फ़िल्टर iptables द्वारा पहले से निर्धारित fwmark के आधार पर पैकेट को वर्गीकृत करने की अनुमति देता है। यदि यह फ़िल्टर के 'हैंडल' के समान है, तो फ़िल्टर मेल खाता है। iptables MARK लक्ष्य या CONNMARK का उपयोग करके पूरे कनेक्शन के साथ एकल पैकेट को चिह्नित करने की अनुमति देता है।

MAC_ADDR_ETH1 = cat /sys/class/net/eth1/address IP_ADDR_ETH1 = ifconfig eth1 | grep 'inet addr'| cut -d ':' -f 2 | cut -d ' ' -f 1 | tr -d '\n' tc फ़िल्टर जोड़ें dev eth0 पैरेंट 15: 0 प्रोटोकॉल IP prio 1 हैंडल 0x2 fw एक्शन पेडिट ex munge eth src set $ {MAC_ADDR_ETH1} पाइप \ एक्शन पेडिट ex munge ip src सेट $ {IP_ADDR_ETH1_pH1 देव eth1

निर्धारित नियमों से ऊपर दिखाएं: tc qdisc show dev eth0 tc फ़िल्टर शो dev eth0

सेट नियमों से ऊपर / हटाएं: tc qdisc del dev eth0 root

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