it-swarm.asia

تحليل رؤوس امتداد IPv6 التي تحتوي على

أكتب عامل تصفية صافي بسيط للغاية ، ونصل إلى حيث أريد تحليل رؤوس IPv6 لمطابقة أشياء مثل أنواع ICMPv6 ، وأرقام منافذ TCP/UDP ، إلخ.

لذلك أنا أقرأ عن بتنسيق الحزمة IPv6 في العمق ، وأنا من النوع ... حسناً ... كان عليّ أن أقرأها مرارًا وتكرارًا للتأكد من أنني كنت أقرأها بالفعل حق. يبدو لي أنه يجب عليك البدء برأس ثابت 40 بايت وإلقاء نظرة على حقل العنوان التالي. بعد ذلك ، يجب عليك إلقاء نظرة على حقل العنوان التالي للرأس التالي ، وهكذا ، مثل قائمة مرتبطة ، حتى تصل إلى النهاية. إذا كان هناك حمولة ، فسيتبع ذلك.

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

هذا الأمر يذهلني كتصميم غريب ، وربما حتى له أرنب. ماذا لو واجهت نوع رأس ملحق غير معروف؟ ماذا أفعل؟ أنا لا أعرف طوله. أعتقد أنه يجب علي التخلص من الحزمة وحظرها ، حيث أنه في عامل التصفية الصافي الذي يسمح للحزمة بالسماح للمهاجم بالتهرب من مرشح الشبكة عن طريق تضمين نوع رأس وهمية. ولكن هذا يعني أنه إذا تم تمديد البروتوكول ، فيجب تحديث كل قطعة من برامج تحليل عناوين IPv6 في وقت واحد إذا تم استخدام الامتداد الجديد.

فكيف يمكنني تحليل عناوين IPv6 إذا لم أكن أعرف الامتدادات التي يستخدمونها؟ كيف يمكنني تخطي رأسًا لملحق غير معروف ، لأنني لا أعرف طوله؟

111
AdamIerymenko

إذا واجهت شيئًا لا يمكنك تحليله ، فيجب عليك اتخاذ القرار أو تنفيذ الإجراء بناءً على ما قمت بتحليله بالفعل.

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

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

تم تعديله للإضافة: هذا التصميم يعني أن صناديق الوساطة يمكنها فقط تغيير ما يعرفونه. إذا رأى صندوق وسيط رأسًا لا يعرفه ، فلديه خياران فقط: الرفض أو التمرير. في IPv4 ، يمكنه أيضًا إزالة الامتداد غير المعروف وتمرير الباقي. IMO تجعل هذه الخاصية التصميم أكثر من قابلية للتمديد.

33
arnt

ماذا لو واجهت نوع رأس ملحق غير معروف؟

من RFC 2460 :

إذا كنتيجة لمعالجة رأس ما ، فستكون العقدة مطلوبة للمتابعة إلى العنوان التالي لكن قيمة العنوان التالي في الرأس الحالي غير معروفة من قبل العقدة ، يجب أن تتجاهل الحزمة وترسل رسالة مشكلة معلمة ICMP إلى مصدر الحزمة ، مع قيمة رمز ICMP بقيمة 1 ("نوع عنوان الرأس التالي غير المعترف به") وحقل مؤشر ICMP الذي يحتوي على إزاحة القيمة غير المعترف بها داخل الحزمة الأصلية. يجب اتخاذ نفس الإجراء إذا واجهت العقدة قيمة "رأس التالي" بقيمة صفر في أي رأس بخلاف رأس IPv6.

95
Oliver Charlesworth

من المستحيل (في العالم الحقيقي) إضافة رأس ملحق جديد إلى IPv6.

غير صحيح ، لأن:

  1. يُسمح للمضيف الوجهة فقط برفضه استنادًا إلى رؤوس الإضافات غير المعترف بها (مع ذكر استثناء واحد في السؤال الذي ربطته )

  2. إذا كان رأس الامتداد الجديد اختياريًا بطريقة ما (كان من الأفضل أن يكون) ، فستتلقى خطأ ICMP حول ذلك ويمكنك إعادة المحاولة دون ذلك.

28
Andreas Klöckner

يغطي التحديث RFC 6564 هذه الحالة. إنها تحدد السيناريو الذي تصفه تمامًا وتضع نسقًا لرؤوس الامتداد الجديدة (إن وُجدت من أي وقت مضى) التي يمكن أن تستخدمها الصناديق الوسطى مثل لك ، على الأقل في بعض الوقت.

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

4
Michael Hampton