2011-11-15 9 views
8

मैं एक कर्नेल मॉड्यूल बनाने की कोशिश कर रहा हूं जो नेटफिल्टर हुकिंग के माध्यम से प्राप्त किए गए संशोधित पैकेट भेजने में सक्षम होगा। मैं here प्रदान किए गए कोड कंकाल का उपयोग कर रहा हूं। मैं कर्नेल के अंदर एक रॉ सॉकेट बनाने रहा हूँ बस इस कोड का उपयोग:कर्नेल मॉड्यूल के माध्यम से एक पैकेट भेजना

sendpacket समारोह इस से पुकारा जाता है: रॉ सॉकेट मैं बनाया जा रहा है socketptr

len = sendpacket(sockptr, dev, IPPROTO_TCP, duplicate, ntohs(dupiph->tot_len)); 

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

कॉल से dev_queue_xmit पर वापसी इंगित करती है कि पैकेट सफलतापूर्वक प्रेषित किया गया था लेकिन मुझे तार पर पैकेट नहीं दिखाई दे रहा है। मेरे पास दो प्रश्न हैं: सबसे पहले, मैं क्या हो रहा है बेहतर तरीके से डीबग करने में सक्षम होना चाहता हूं, इसलिए इसके बारे में कोई सलाह बहुत सराहना की जाती है। साथ ही, मैं सोच रहा हूं कि क्या मैं सॉकेट निर्माण को सही तरीके से संभालने में सक्षम हूं या यदि कुछ प्रकार की कॉन्फ़िगरेशन है तो मुझे याद आ रही है। यह मेरे लिए बहुत नया है इसलिए यह बहुत अच्छा हो सकता है कि मुझे कुछ मूर्खतापूर्ण याद आ रही है।

+0

क्या आप यह बता सकते हैं कि "तार पर पैकेट नहीं देख सकता"। मैं वायरशर्क या एक और स्निफर कार्यक्रम स्थापित करने का सुझाव देता हूं। – Michel

+0

क्षमा करें, मुझे स्पष्ट करना चाहिए था। इस्तेमाल किया जा रहा इंटरफ़ेस "venet0" है जो ओपनवज़ कंटेनर द्वारा उपयोग किया जाने वाला इंटरफ़ेस है। मैं वायरसहार्क का उपयोग करके उस इंटरफेस पर यातायात देख रहा था और पैकेट नहीं देख रहा था। – bschulte3

+0

क्या आप वाकई ऐसे पैकेट पास करने के लिए iptables को सही तरीके से कॉन्फ़िगर किया गया है? – Dan

उत्तर

1

यह संभावना नहीं है कि आपको अपना कार्य पूरा करने के लिए कर्नेल को संशोधित करने की आवश्यकता है। क्या आपने ट्यून या टैप इंटरफ़ेस का उपयोग करने पर विचार किया है ताकि आप उपयोगकर्ता के सभी स्थान पर अपना पूरा काम कर सकें? यहां एक ट्यूटोरियल है: http://backreference.org/2010/03/26/tuntap-interface-tutorial/

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