التقطت حركة المرور على مضيف IPsec، ورأيت حزم ESP تغادر، ولم ترَ شيئًا يعود، فاستنتجت أن الطرف البعيد معطل. هذا الالتقاط لا يدعم ذلك الاستنتاج. يحمي ESP اتجاهًا واحدًا من المحادثة ولا يعترف بشيء على طبقة IP، لذا فإن غياب ESP العائد قد يعني أن التطبيق لم يكن لديه ما يقوله بسهولة مماثلة لاحتمال أن يكون النفق ميتًا. اقرأ التبادل الداخلي وحالة جهة الاستقبال قبل أن تلوم أيًا من الطرفين.

الأسطورة: كل حزمة محمية تستحق ردًا

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

ما يثبته الالتقاط أحادي الاتجاه فعلًا هو أن مكدس المرسل شفر شيئًا عند نقطة المراقبة تلك. لا شيء عن الوصول، ولا شيء عن نية الرد. السؤال المفيد ليس "لماذا لا يوجد رد" بل "ما الذي كان ينبغي أن تنتجه المحادثة الداخلية".

ارتباطان أمنيان، معرّفان اثنان، محادثة واحدة

ارتباطات الأمان في IPsec أحادية الاتجاه، لذا يجري التبادل المحمي الطبيعي ارتباطًا واردًا وارتباطًا صادرًا بمعرّفين منفصلين وحالة مستقلة. البحث عن حركة العودة بمعرّف SPI الخاص بالحزمة الصادرة خطأ في التصنيف، لأن أي رد يسير تحت ارتباط SA الصادر الخاص بالقرين بمعرّفه الخاص. طابق الزوج عبر محددات الحركة وعناوين القرين بدلًا من ذلك.

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

ما على المستقبل فعله قبل أن يرد أي شيء

StageWhat to look atWrong conclusion if skipped
Sender encryptsoutbound SA packet counter"the tunnel is up"
Peer receivesinbound SA counter and replay window"the peer is down"
Inner deliverytarget host or service logs"routing is broken"
Application repliesthe app's own trace"the reply was dropped"
Protected returnthe peer's outbound SA"ESP only works one way"

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

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

ESP الأصلي ليس UDP

ESP الأصلي هو البروتوكول 50 في IP، وهو ليس TCP ولا UDP وليس له منافذ على الإطلاق. قاعدة جدار ناري تسمح بـ IKE على UDP 500 لا تقول شيئًا عن مسار البيانات، ومرشح مكتوب حول المنافذ يمكن أن يسمح للنفق بالتفاوض ثم يُهمل كل ما يُحمل داخله. اختبر مسار البيانات وحده، في الوضع الذي لاحظته فعلًا.

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

اقرأ العدادات التي تخص هذه الحادثة

على مضيف strongSwan، يقدم swanctl --list-sas عدادات الحزم والبايتات لكل ارتباط في الاتجاهين، وهو ما يكفي للتمييز بين "لم يصل قط" و"وصل ولم يُجب عنه". على Linux، يحصي /proc/net/xfrm_stat الإخفاقات المجمعة مثل الحالة الغائبة والسياسة الغائبة وأخطاء البروتوكول. تتراكم تلك المجاميع منذ الإقلاع وتخص فضاء أسماء شبكيًا واحدًا، لذا فإن رقمًا كبيرًا ليس إسنادًا.

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

سمِّ المرحلة، لا المشتبه به

الاستنتاج المفيد يقول أين توقفت الحزمة: لم تُستقبل قط، أو استُقبلت وأُهملت، أو سُلّمت ولم يُجب عنها، أو أُجيب عنها وفُقدت في طريق العودة. كل واحد من هذه يشير إلى مالك مختلف وأمر تالٍ مختلف. "لا استجابة من خادم VPN" تسحق أربعة أعطال متميزة في جملة واحدة لم يبررها الالتقاط قط.

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

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