يلتبس سؤالان كلما التقى L2TP وGRE وIPsec في المذكرة التصميمية نفسها: أي جلسة أحمل، وأي طبقة تحميها؟ إذا أخطأت في الأول، بقي كل ما بعده متسقًا داخليًا بينما تُحل المشكلة الخطأ — طبقة تراكب موجَّهة بُنيت حيث كان المستخدمون يحتاجون إلى الاتصال الهاتفي، أو مُجمِّع اتصال هاتفي يحل محل بوابة بين موقعين. يفرض جدول العمل أدناه هذا التمييز قبل أن يسجل أي شخص الدخول إلى جهاز. املأه بالترتيب، وسيصبح كل سطر شيئًا يمكنك اختباره بمفرده.

ابدأ من الجلسة، لا من قائمة البروتوكولات

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

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

أسند إلى كل طبقة مهمة واحدة بالضبط

يحمل L2TPv2 جلسات PPP بين طرفيه. يدير PPP التفاوض على الرابط، وعند التفاوض عليه، مصادقة المستخدم؛ ولا يضيف L2TP أي تشفير، لذا لا ينفّذ خادم L2TP المجرد أي جزء من علاقة أمان IPsec، ولا ينتمي إلا داخل رابط تثق به بالفعل.

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

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

LayerIts one jobWhat it never does
PPPLink negotiation, optional user authentication, address assignmentProtect traffic between gateways
L2TPv2Carry the PPP session between two endpointsEncrypt or authenticate peers
GREEncapsulate network-layer packets between two addressesHide or authenticate the payload
IPsecAuthenticate peers and encrypt selected trafficCarry a dial-in user session by itself

اكتب مسار الحزمة قبل الإعداد

خذ حزمة واحدة واسرد كل ترويسة تُضاف، بالترتيب الذي تُضاف به، وسمِّ الجهاز الذي يضيفها. بالنسبة لمستخدم الاتصال الهاتفي يكون ذلك عادة PPP داخل L2TP داخل IPsec؛ وبالنسبة لتراكب المواقع، حزمة IP الداخلية داخل GRE داخل IPsec. وإذا أضاف جهازان الترويسة نفسها، فلديك حلقة أو نفق مكرر، ولن يصلح ذلك أي تعديل للسياسة.

تحسم القائمة نفسها مسألة MTU، لأن الحجم الداخلي الصالح هو MTU المسار المقيس ناقص الترويسات التي عددتها للتو ولا شيء غيرها. لا تنسخ رقمًا من منشور منتدى: اجمع عبء IP الخارجي وUDP وESP، ثم GRE أو L2TP، ثم PPP حيث ينطبق، واطرح ذلك من MTU المسار الذي قسته فعلًا. الأعراض التي لا تظهر إلا في عمليات النقل الكبيرة، أو الجلسات التي تُقام ثم تموت عند أول استجابة كبيرة، تعود عادةً إلى أن هذا الجمع قُدِّر بالتخمين.

افحص كل طبقة على حدة، من الخارج إلى الداخل

نفّذ الفحوص بالترتيب وتوقف عند أول فحص يفشل. كل سطر يجيب عن سؤال مختلف، لذا يشير الفشل إلى عمود واحد في الجدول بدلًا من أن يقول إن النفق معطوب.

ip xfrm state                  # is the IPsec SA up?
ip -s link show gre1           # does the overlay interface carry packets?
ip route get 10.20.0.5         # does the inner prefix route where you think?
ss -lun | grep -E "1701|4500"  # are the L2TP and NAT-T listeners bound?

على جهاز Cisco يعتمد المكافئ على الدور، وتعتمد الصيغة الدقيقة على المنصة والإصدار: show crypto session لأقران IPsec، وعدادات الواجهة لواجهة GRE أو النفق، والتحقق من VPDN أو PPP لدور الاتصال الهاتفي. مجموعة أوامر تُنهي PPP لا تثبت شيئًا عن دعم GRE، وواجهة GRE عاملة لا تثبت شيئًا عن خدمة PPP، لذا تحقق من الدور الذي أعددته فعلًا لا الذي في المخطط.

سجّل كل مخرَج بجانب سطر الجدول الذي ينتمي إليه. الملاحظات المدونة أثناء العطل الحيّ أثمن من طوبولوجيا يُعاد رسمها لاحقًا من الذاكرة.

رتّب التفكيك، ثم تحقق مرة أخرى

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

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

أبقِ الجدول المملوء بجانب إعداد الجهاز. أي عمود لا تستطيع ملأه هو طبقة بلا مهمة مسندة، والطبقة بلا مهمة مسندة هي عادةً طبقة لا ينبغي أن تكون في المكدس.

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