غالبًا ما تعرض شبكات الفنادق وجدران حماية المؤتمرات مربع سماح مخصصًا، فيكتب أحدهم 47 داخله آملًا أن يعمل PPTP. تُنشأ القاعدة، ويظل النفق فاشلًا، وتستخدم المحاولة التالية رقمًا مختلفًا. الخطأ يكمن في الحزمة نفسها: يمتلك IPv4 حقل بروتوكول يحدد ما يلي رأس IP، بينما يمتلك TCP وUDP حقلي منفذ لا وجود لهما إلا داخل أحد هذين الرأسين. وهما ليسا تهجئتين مختلفتين للتصريح نفسه.

رأس IPv4 يحدد البروتوكول التالي

حقل البروتوكول بايت واحد في رأس IPv4، ويحمل رقمًا يصف الحمل: 6 لـ TCP، و17 لـ UDP، و47 لـ GRE، و50 لـ ESP. كل ما يرشّح الحزم يقرأ تلك القيمة قبل أن ينظر أعمق، لأن الرأس الأعمق لا معنى له إلا بعد معرفة النوع. غيّر منفذًا لاحقًا في المحادثة، وهذا الحقل لم يتحرك.

إذن فالقاعدة المكتوبة على البروتوكول 47 تصف طبقة IP. ولا يشارك أي منفذ في القرار على الإطلاق.

المنافذ موجودة داخل TCP وUDP، ولا مكان آخر

المنافذ معرّفات بطول ستة عشر بت داخل رأسي TCP وUDP، ومهمتها فصل المحادثات التي تتشارك عنوانًا واحدًا. ويحمل رأس GRE قيمة نوع بروتوكول، غالبًا EtherType، إضافة إلى مفاتيح اختيارية تُستخدم لتعدد الإرسال. لذا فإن عبارة المنفذ 47 لا تسمّي شيئًا يمكن لحزمة GRE مطابقته.

تختلف واجهات جدران الحماية في مقدار ما تكشفه من هذا. بعضها يقبل رقم بروتوكول، وبعضها يعرض قائمة أسماء، وقليل منها لا يقبل إلا TCP أو UDP مع منافذ.

PPTP يستخدم الطبقتين في آن واحد

PPTP أوضح مثال لأنه يقسّم عمله بينهما عن قصد. اتصال التحكم جلسة TCP إلى المنفذ 1723، ومسار البيانات GRE، البروتوكول 47، دون أي منفذ في أي مكان. جدار حماية يسمح بـ 1723 ولا شيء غيره يترك التفاوض يبدأ ثم يتجاهل الحمل. يبدو النفق معلقًا بعد المصادقة بدلًا من أن يفشل في الاتصال، ولهذا يُبلَّغ عن العَرَض غالبًا كمشكلة كلمة مرور.

PathOuter protocolPort
Control channelTCP, protocol 61723
Data channelGRE, protocol 47None

اقرأ الصفين بشكل منفصل عندما تكتب القاعدة، وتحقق من كل منهما مقابل صيغة البائع. يحتاج أحد الصفين إلى منفذ، ويحتاج الآخر إلى رقم بروتوكول، ولا يغطي أي إدخال واحد الاثنين.

لماذا لا تستطيع صفحة إعادة توجيه المنافذ التعبير عن GRE

لا يستطيع نموذج إعادة توجيه يقبل TCP وUDP فقط وصف GRE، أيًا كان اسم النموذج. وتضيف ترجمة العناوين صعوبة ثانية، لأن GRE لا منافذ له وعلى المترجم أن يتبع معرّف النداء بدلًا من ذلك. بعض أجهزة التوجيه الاستهلاكية تأتي بمساعد يتولى ذلك؛ وكثير منها لا يأتي به، ولن ينشئ أي إدخال سماح إضافي لـ TCP هذا السلوك.

حيث يكون النفق الحديث هو المطلب الفعلي، اختر تصميمًا يستخدم TCP أو UDP عمدًا بدلًا من الأمل في أن يخمّن المترجم بشكل صحيح.

التغليف يحدد ما يراه المرشّح

يغيّر التغليف الحزمة الخارجية، والحزمة الخارجية هي ما تطابقه القاعدة. ESP الأصلي هو البروتوكول 50، بينما يلفّ اجتياز NAT بروتوكول ESP داخل UDP 4500 ليمكنه النجاة من ترجمة العناوين. المرشّح الذي يسمح بـ UDP 4500 لا يرى البروتوكول 50 أبدًا، والمرشّح المكتوب للبروتوكول 50 لا يطابق الشكل الملفوف أبدًا.

اسأل عن التغليف الذي اتفق عليه العميل والبوابة، ثم اكتب القاعدة لذلك الشكل الخارجي ولا شيء أكثر.

اكتب القاعدة بحيث يستطيع شخص ما التحقق منها

عبّر عن كل قاعدة بعائلة العناوين، والبروتوكول الخارجي، ومنافذ النقل إن وُجدت، والاتجاه، وكلا الطرفين. يستطيع المراجع مقارنة تلك الجملة بتسجيل حزمة والتوصل إلى حكم. أما تعليمة تفتح 47 فلا يستطيع أحد التحقق منها، وهكذا تبقى في الكتيبات سنوات.

أضف الاختبار الذي يثبت ذلك: اتصل أثناء الالتقاط على الواجهة الخارجية، وتأكد من البروتوكول والمنفذ الخارجيين اللذين يظهران فعلًا في الأثر.

مقالات ذات صلة