سؤال

إنها ليست مجرد عملية التقاط أتطلع إلى القيام بها هنا.أريد أولاً التقاط الحزمة، ثم في الوقت الفعلي، التحقق من الحمولة النافعة بحثًا عن بيانات محددة، وإزالتها، وإدخال التوقيع وإعادة إدخال الحزمة في المكدس ليتم إرسالها كما كان من قبل.

لقد قرأت مآخذ تحويل ipfw باستخدام IPFW وهي تبدو واعدة جدًا.ماذا عن الأمثلة في تعديل الحزم وإعادة إدخالها مرة أخرى في المكدس باستخدام مآخذ التحويل؟أيضًا، من باب الفضول، هل من الممكن قراءة البيانات من المقبس باستخدام Java أم أن هذا سيقيدني في تغيير التعبئة وإعادة الحقن وما إلى ذلك؟

هل كانت مفيدة؟

المحلول

كنت سأقوم بتكرار الردود الأخرى التي أوصت بـ iptables (اعتمادًا على مدى تعقيد الأنماط التي تحاول مطابقتها وتعديلات الحزمة التي تريد إجراؤها) - حتى لاحظت وجود علامة BSD على السؤال.

مثل ستيفن بيليسر كما ذكرنا سابقًا، يعد libpcap خيارًا جيدًا لالتقاط الحزم.ومع ذلك، أعتقد أنه يمكن أيضًا استخدام libpcap لإرسال الحزم.للإشارة أنا متأكد من ذلك com.tcpreplay يستخدمه لإعادة تشغيل الملفات بتنسيق pcap.

نصائح أخرى

انظر تحويل المقابس: كيفية تحويل المقابس الصغيرة.

إنها تعمل عن طريق تمرير حركة المرور المطابقة لقاعدة ipfw معينة إلى مقبس خام خاص يمكنه بعد ذلك إعادة إدخال حركة المرور المتغيرة في طبقات الشبكة.

إذا كنت تبحث فقط عن التقاط الحزم، فإن libpcap يحظى بشعبية كبيرة.يتم استخدامه في الأدوات الأساسية مثل tcpdump و ethereal.بقدر ما يتعلق الأمر بـ "الربط بالمكدس"، إلا إذا كنت تخطط لتغيير طريقة تنفيذ الشبكة بشكل جذري (على سبيل المثال،أضف طبقتك الخاصة أو قم بتغيير سلوك TCP)، فإن فكرتك عن استخدام IPF لتعديل الحزمة أو التدخل تبدو أفضل رهان.في Linux، لديهم هدف إعادة توجيه محدد لوحدات مساحة المستخدم، ربما يكون لدى IPF شيء مشابه أو يمكنك تعديل IPF للقيام بشيء مماثل.

إذا كنت مهتمًا فقط برؤية الحزم، فإن libpcap هو الحل الأمثل.يمكنك العثور عليه في: http://www.tcpdump.org/

من الممكن القيام بذلك في مساحة المستخدمين باستخدام هدف QUEUE أو NFQUEUE iptables على ما أعتقد.يرتبط تطبيق العميل بقائمة انتظار ويستقبل جميع الحزم المطابقة، والتي يمكنه تعديلها قبل إعادة إدخالها (يمكنه أيضًا إسقاطها إذا أراد ذلك).

توجد مكتبة عملاء libnetfilter_queue تحتاج إلى الارتباط بها.من المؤسف أن التوثيق ضئيل للغاية، ولكن هناك بعض منشورات القائمة البريدية والأمثلة المتداولة.

لأسباب تتعلق بالأداء، لن ترغب في القيام بذلك لكل حزمة، ولكن فقط للحزم المطابقة المحددة، والتي سيتعين عليك مطابقتها باستخدام قواعد iptables القياسية.إذا لم يكن ذلك كافيًا، فستحتاج إلى كتابة وحدة netfilter kernel الخاصة بك.

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top