2011-05-25 7 views
7

मेरे पास दो मशीनें हैं जिनमें दो वैध नेटवर्क इंटरफेस हैं, एक ईथरनेट इंटरफ़ेस eth0 और एक ट्यून/टैप इंटरफ़ेस gr0 है। लक्ष्य मशीन ए पर इंटरफेस gr0 का उपयोग कर एक टीसीपी कनेक्शन शुरू करना है, लेकिन उसके बाद मशीन बी से प्रतिक्रियाएं (एसीके, इत्यादि) ईथरनेट इंटरफ़ेस पर वापस आती हैं, eth0। इसलिए, मशीन ए gr0 पर एक SYN भेजता है और मशीन बी को अपने gr0 पर SYN प्राप्त होता है लेकिन फिर eth0 के माध्यम से इसके SYN/ACK को वापस भेजता है। ट्यून/टैप डिवाइस एक जीएनयू रेडियो वायरलेस लिंक है और हम सिर्फ ईथरनेट के माध्यम से प्रतिक्रियाएं चाहते हैं।एक अलग इंटरफ़ेस के माध्यम से टीसीपी/आईपी प्रतिक्रियाओं को कैसे रूट करें?

इसे पूरा करने का सबसे आसान तरीका क्या है? मुझे टीसीपी/आईपी पर अधिक शोध करने की ज़रूरत है, लेकिन मैं शुरुआत में सोच रहा था कि स्रोत-स्पूफिंग आउटगोइंग पैकेट रिसीवर को स्पूफ़ेड पते का जवाब देने के लिए कहेंगे (जिसे eth0 पर भेज दिया जाना चाहिए)। इसमें gr0 के माध्यम से ट्यून/टैप इंटरफेस से आईपी को रूट करना शामिल होगा और अन्य ट्रैफ़िक को eth0 पर छोड़ दें।

हम लिनक्स का उपयोग कर रहे हैं और एक पायथन समाधान बेहतर होगा।

देखने के लिए धन्यवाद!

+0

इसके अलावा, कर्नेल एक प्राप्त पैकेट के साथ क्या करता है इसकी पहचान करने की एक अच्छी विधि क्या है? क्या यह इसे त्याग देता है? इसे '/ dev/null' पर भेजें? हां, यह शायद एक अलग सवाल के रूप में बेहतर है। –

+0

'नेटस्टैट-एस' का आउटपुट आपको केवल एक ही स्तर पर पैकेट (गिराए गए/वितरित/कनेक्शन गिनती) के साथ कर्नेल के साथ क्या करता है इसका एक विचार दे सकता है। तार पर क्या चल रहा है यह देखने के लिए 'tcpdump' या' wireshark' का उपयोग करें। –

+1

ठीक है, मेरे स्पूफिंग के संपर्क में, मैं प्राप्त पैकेट देखता हूं, लेकिन कोई प्रतिक्रिया उत्पन्न नहीं होती है। ऐसा लगता है जैसे कर्नेल कुछ कारणों से चुपचाप पैकेट को त्याग देता है। –

उत्तर

5

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

उदाहरण के लिए:

Machine A: 
    ip addr add 1.1.1.1/32 dev lo 
    ip route add 2.2.2.2/32 dev eth0 via <eth0 default gateway> 

Machine B: 
    ip addr add 2.2.2.2/32 dev lo 
    ip route add 1.1.1.1/32 dev gr0 

तो मशीन एक पर 1.1.1.1 करने के लिए बाध्य और 2.2.2.2 से कनेक्ट।

2

आप मार्टिन पैकेट net.ipv4.conf.all.log_martians के लॉगिंग को सक्षम करने में रुचि रखते हैं, और प्रभावित इंटरफेस पर net.ipv4.conf.<interface>.rp_filter रिवर्स पथ फ़िल्टरिंग अक्षम कर सकते हैं।

यह sysctl vars sysctl उपयोगिता और/या /proc फाइल सिस्टम के माध्यम से एक्सेसिबल हैं।

संबंधित मुद्दे