मैं कुल नॉब हूं, कर्नेल नेटवर्किंग के साथ यह मेरा पहला प्रयोग है। मैं दो tap
इंटरफेस के बीच एक पुल बनाने का प्रयास कर रहा हूं , और ट्रैफिक भेजने की कोशिश कर रहा हूं । यह किसी विशेष उद्देश्य की तुलना में अधिक प्रयोग है।
$ brctl showstp br0
br0
bridge id 8000.46846e0c0ff9
designated root 8000.46846e0c0ff9
root port 0 path cost 0
max age 20.00 bridge max age 20.00
hello time 2.00 bridge hello time 2.00
forward delay 15.00 bridge forward delay 15.00
ageing time 300.00
hello timer 1.98 tcn timer 0.00
topology change timer 0.00 gc timer 115.04
flags
tap1 (1)
port id 8001 state forwarding
designated root 8000.46846e0c0ff9 path cost 100
designated bridge 8000.46846e0c0ff9 message age timer 0.00
designated port 8001 forward delay timer 10.34
designated cost 0 hold timer 0.98
flags
tap2 (2)
port id 8002 state forwarding
designated root 8000.46846e0c0ff9 path cost 100
designated bridge 8000.46846e0c0ff9 message age timer 0.00
designated port 8002 forward delay timer 0.00
designated cost 0 hold timer 0.98
flags
मेरे पास पुल बना br0
है, दोनों के साथ tap1
और tap2
जोड़ा। मेरे पास एक प्रोग्राम है जो ARP पैकेट को tap1
प्रयोग में ला रहा है libpcap
। Wireshark सही ढंग से पैकेट में प्रवेश दिखाता है tap1
। हालांकि, कोई भी पैकेट नहीं दिखा tap2
। मैंने ebtables में follwing नियम जोड़ने की कोशिश की:
sudo ebtables -I INPUT --log --log-level debug
कोई भी पैकेट लॉग में नहीं दिखा। मैं किसी भी जानकारी की सराहना करेंगे।
संपादित करें: अधिक जानकारी जोड़ना। नकली पैकेट इंजेक्ट करना वास्तव में अनुप्रयोग है। यहाँ मेरा इरादा अनुकरण करना है, पूरी तरह से सॉफ्टवेयर में और वीएम के बिना, कैसे पैकेट को लिनक्स कर्नेल स्टैक के माध्यम से आगे बढ़ाया जाता है। मैं कोई नया नेटवर्क नामस्थान नहीं बना रहा हूँ। शायद यही समस्या है?
मेरे पास केवल दो प्रक्रियाएं हैं। "रीड" प्रक्रिया में एक फ़ाइल डिस्क्रिप्टर खुला है tap2
, और लगातार इसे पढ़ने की कोशिश करता है। लिखने की प्रक्रिया में एक फाइल डिस्क्रिप्टर खुला है tap1
और ARP क्वेरी को भेजने के लिए उपयोगकर्ता संकेत का इंतजार करता है। ARP क्वेरी में एक यादृच्छिक स्रोत IP पता होता है। स्रोत मैक पता मैक पते के रूप में सेट किया गया है tap1
। यहाँ tcpdump का आउटपुट दिया गया है:
tcpdump: verbose output suppressed, use -v or -vv for full protocol decode
listening on tap1, link-type EN10MB (Ethernet), capture size 262144 bytes
^[[A07:19:57.752990 ARP, Request who-has google-public-dns-a.google.com tell 0.0.248.17, length 28
0x0000: ffff ffff ffff ba9c 0589 16ad 0806 0001
0x0010: 0800 0604 0001 ba9c 0589 16ad 0000 f811
0x0020: 0000 0000 0000 0808 0808
मैंने कॉन्फ़िगर किया है tap1
और tap2
आईपी पते नहीं हैं। क्या यह समस्या हो सकती है?
brctl addbr br0
ip tuntap add name tap1 mode tap
ip tuntap add name tap2 mode tap
brctl addif br0 tap1
brctl addif br0 tap2
ifconfig tap1 0.0.0.0 up
ifconfig tap2 0.0.0.0 up
ifconfig br0 10.0.1.1 netmask 255.255.255.0 broadcast 10.0.1.255
ip link set br0 up
ip link set tap1 up
ip link set tap2 up
उत्तर के आधार पर, मैंने विभिन्न अनुप्रयोगों को संलग्न करने की जाँच की tap2
। मैं यह नोटिस करता हूं: जब कोई एप्लिकेशन उपयोग नहीं कर रहा है tap1
या tap2
, दोनों इंटरफेस में LOWER_UP फ्लैग सेट नहीं है।
4: br0: <NO-CARRIER,BROADCAST,MULTICAST,UP> mtu 1500 qdisc noqueue state DOWN mode DEFAULT group default
link/ether 46:84:6e:0c:0f:f9 brd ff:ff:ff:ff:ff:ff
25: tap1: <NO-CARRIER,BROADCAST,MULTICAST,PROMISC,UP> mtu 1500 qdisc pfifo_fast master br0 state DOWN mode DEFAULT group default qlen 500
link/ether ba:9c:05:89:16:ad brd ff:ff:ff:ff:ff:ff
26: tap2: <NO-CARRIER,BROADCAST,MULTICAST,PROMISC,UP> mtu 1500 qdisc pfifo_fast master br0 state DOWN mode DEFAULT group default qlen 500
जब मैं आवेदन शुरू करता हूं, LOWER_UP ध्वज सेट हो जाता है:
4: br0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc noqueue state UP mode DEFAULT group default
link/ether 46:84:6e:0c:0f:f9 brd ff:ff:ff:ff:ff:ff
25: tap1: <BROADCAST,MULTICAST,PROMISC,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast master br0 state UP mode DEFAULT group default qlen 500
link/ether ba:9c:05:89:16:ad brd ff:ff:ff:ff:ff:ff
26: tap2: <BROADCAST,MULTICAST,PROMISC,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast master br0 state UP mode DEFAULT group default qlen 500
link/ether 46:84:6e:0c:0f:f9 brd ff:ff:ff:ff:ff:ff
मुझे खेद है कि यह लंबा हो रहा है, मैं बस उम्मीद कर रहा हूं कि इस मुद्दे की समझ बनाने के लिए पर्याप्त जानकारी है।