IPsec ESP: ما الذي ينقله وكيف تُثبت أنه يتدفق
يغلّف ESP حزمة IP داخلية في وضع النفق ويحدد ارتباطه عبر SPI. اقرأ الحالة، ثم راقب تدفقًا واحدًا يحرّك العدادات.
يحمل ESP حركة المرور في شبكة VPN من نوع IPsec، ودليل التشغيل الخاص به يبدأ بقاعدة واحدة: اقرأ ارتباط الأمان قبل أن تغيّر أي سياسة. معظم سلوك ESP غير المفسَّر يعود إلى محدِّد لم يطابق، أو وضع جرى افتراضه بدلًا من قراءته، أو عداد لم يفحصه أحد أثناء إرسال تدفق واحد. الخطوات الثلاث أدناه تُثبت ما الذي يحمل ماذا، وتُبرهن أن تدفقًا واحدًا يستخدمه، وتترك مسارًا للرجوع لا يعتمد على الذاكرة. كل خطوة تُنتج ملاحظة واحدة تستحق التدوين.
اعرف الحقول قبل أن تقرأها
يضع ESP رأسًا أمام البيانات المحمية وذيلًا خلفها. يحمل الرأس مؤشر معاملات أمان يحدد الارتباط الذي ينبغي أن يستخدمه المستقبل، ورقم تسلسل لكشف إعادة الإرسال، وحشوًا في الذيل يُبقي الحمولة محاذية للشيفرة. يبيّن حقل الرأس التالي في الذيل ما هو المحتوى المحمي، وهكذا يعرف المستقبل ما الذي فكّ تغليفه.
يغيّر الوضع ما يوجد داخل تلك الحماية. في وضع النفق يكون المحتوى المحمي حزمة IP داخلية كاملة، ويحملها رأس خارجي جديد بين الطرفين. في وضع النقل تُغلّف الحماية حمولة الطبقة العليا لحزمة قائمة، فلا يوجد رأس IP ثانٍ يُفكّ. أي وضع مستخدم هو حقيقة في التكوين وليس مسألة تفسير. اقرأه من إدخال الحالة بدلًا من استنتاجه من رسم.
لا يخفي أي من الوضعين العنونة الخارجية التي يجب أن تُوصّل الحزمة. ذلك خاصية في التصميم لا عيب، وهو سبب أن المراقب الوسيط يظل يرى أي عنوانين يتحادثان حتى عندما تكون الحمولة غير واضحة.
الخطوة الأولى: اقرأ الحالة، ثم السياسة
تحتفظ إدخالات الحالة بالمفاتيح والعدادات؛ وتحتفظ إدخالات السياسة بالمحدِّدات التي تقرر ما يجوز استخدامها. على لينكس يظهر الاثنان دون التقاط حزم، وقراءتهما بهذا الترتيب تُبقي السؤالين منفصلين.
ip xfrm state
ip xfrm policy
في مخرجات الحالة، افحص مصدر الارتباط ووجهته، والوضع، وما إذا كان التغليف يُظهر منافذ UDP. تعني تلك المنافذ أن اجتياز NAT قيد الاستخدام، وهو ما يغيّر ما يجب أن تسمح به جدار الحماية الوسيط، لا أي المحدِّدات أو المفاتيح تنطبق عند الطرفين.
ثم اقرأ المحدِّدات في السياسة. المحدِّد الذي يسمّي بادئة أضيق من حركة المرور التي تختبرها هو السبب الأكثر شيوعًا لأن يبدو نفق عامل وكأنه يتجاهل تدفقًا، والمحدِّد الخاص ببروتوكول خاطئ يُنتج الصمت نفسه.
| Field | Where it appears | What it decides |
|---|---|---|
| Security parameter index | ESP header, and the receiving state entry | Which association and keys the receiver applies |
| Sequence number | ESP header | Replay detection for that association |
| Next header | ESP trailer | What the decapsulated payload contains |
| Inner IP header | Inside tunnel-mode payload only | The original source and destination the endpoints act on |
| Traffic selectors | Policy, not the packet | Which local traffic is allowed to use the association |
تعرض أدوات البائعين المعلومات نفسها بصيغة أسهل. ipsec statusall على strongSwan يسرد الارتباطات الفرعية ومحدِّداتها وعدادات بايتاتها، وهو غالبًا أسرع من قراءة مخرجات xfrm الخام عندما تعرف مسبقًا أي ارتباط فرعي تنظر إليه.
الخطوة الثانية: أثبت أن تدفقًا واحدًا يحرّك العدادات
لا تكون العدادات ذات معنى إلا إذا عرفت ما كان ينبغي أن يحرّكها، لذا اختر مصدرًا ووجهة يغطيهما المحدِّد بالتأكيد وأرسل طلبًا واحدًا غير ضار. ثم اقرأ الإدخال نفسه مرة أخرى وقارن.
ip -s xfrm state
tcpdump -ni any esp
قراءتان تحكيان قصتين مختلفتين. الحزم التي تزيد على الجانب الصادر ولا تزيد أبدًا على الجانب الوارد تشير إلى مشكلة في التمرير أو في مسار العودة لا إلى مشكلة في المفتاح، لأن الحزمة غُلّفت وغادرت. عدم تحرك أي عداد يعني أن حركة المرور لم تطابق السياسة إطلاقًا، والمحدِّد هو المكان الذي يجب أن تنظر فيه.
التقاط الحزم في الخطوة نفسها يؤكد التغليف على السلك، بما في ذلك ما إذا كانت الحزم الخارجية ESP أم ESP مغلّفة بـ UDP. كما يُظهر لك العناوين التي حملت التدفق فعليًا، وهي تختلف أحيانًا عن العناوين في التكوين الذي كنت تقرأه.
الخطوة الثالثة: غيّر شيئًا واحدًا واحتفظ بمسار رجوع
سجّل مصدر الارتباط ووجهته ووضعه ومحدِّداته وعداداته قبل تعديل أي شيء. إذا جعل تغيير ما الأمور أسوأ، فذلك السجل هو ما يتيح لك استعادة الحالة السابقة بدلًا من إعادة بناء تكوين عامل من تخمين. يستغرق ذلك السجل دقيقة في الكتابة ويوفّر ساعة لاحقًا. وهو أيضًا الأثر الوحيد الذي يبقى بعد الشخص الذي أجرى التغيير.
غيّر محدِّدًا واحدًا أو معاملًا واحدًا، وأعد تحميله، وكرّر الخطوة الثانية على التدفق نفسه. حذف ارتباط يهدم كل تدفق يستخدمه، لذا يكون التعديل الموجّه وإعادة تحميل الارتباط الفرعي أفضل دائمًا تقريبًا من تفريغ الحالة لترى ما سيحدث.
الرجوع بعد تعديل محدِّد هو استعادة السياسة السابقة وإعادة تحميلها، مع تحفّظ أن النظير قد يحتاج تغييرًا مطابقًا إذا كان المحدِّد يُتفاوض عليه لا محليًا. اكتب ذلك الاعتماد بينما لا يزال حديثًا، لأن زوجًا مستعادًا نصف استعادة أصعب في التحليل من أي من الحالتين النهائيتين.
أخيرًا، أبقِ النطاق أمينًا. ارتباط ESP متدفق يُثبت أن البوابتين تحميان المقطع وتُسلّمانه، ولا يقول شيئًا عن كون التطبيق الأعلى يوثّق مستخدميه أو يشفّر ما يخزّنه. تلك ضوابط منفصلة بأدلة منفصلة، ودليل التشغيل لا يكتمل إلا حين يستطيع الشخص التالي تكراره من الملاحظات.