عندما يعيد IKEv2 الخطأ TS_UNACCEPTABLE، قارن الشبكات الفرعية الحقيقية
رفض المحدِّد هو خلاف في التغطية بين طرفين. اقلب التسميتين المحلية والبعيدة، ثم قارن النطاقات الدقيقة التي يقترحها كل جانب.
اقرأ TS_UNACCEPTABLE على أنه خلاف في التغطية، لا على أنه ملف تعريف تالف. البوابة تقول إن الطرفين لم يتفقا على العناوين التي يجوز لهذا النفق أن يحملها. قد تكون IKE SA قائمة بالفعل في تلك اللحظة، ولهذا قد يبدو العميل متصلاً دون أي SA فرعية خلفه. حين تصوغ الأمر بهذه الطريقة يصبح العمل ميكانيكياً. دوِّن البادئات المقصودة لدى الطرفين، ثم قارنها في اتجاه واحد، وضيِّق حتى تتقاطع.
اكتب الأزواج المقصودة أولاً
قبل أن تمسّ الإعدادات، اسرد أربع قيم: نطاق المصدر لدى البادئ، ونطاق الوجهة لديه، والنطاقان نفسهما كما يراها المستجيب. وسجّل عائلة العناوين لكل منها أيضاً. نطاق IPv4 ونطاق IPv6 نوعان مختلفان من المحدِّدات، ولا يمكن طيّ أحدهما في حمولة الآخر.
أضف أي قيد على البروتوكول أو المنفذ تحمله السياسة. القاعدة التي تسمح فقط بـ TCP 445 إلى خادم ملفات تصف مجموعة أضيق من الشبكة الفرعية التي توجد فيها. إن أغفلت ذلك من ملاحظاتك بدا نتيجة التفاوض غير متسقة لأسباب لا تراها.
اقلب التسميتين قبل مقارنتهما
المحلي والبعيد تسميتان نسبيتان. بادئة العميل المحلية هي نطاق البوابة البعيد، ونطاق البوابة المحلي هو نطاق العميل البعيد. لذا لا تتطابق لقطات الشاشة من الطرفين أبداً، ومقارنتها حرفياً هي الطريقة المعتادة لإضاعة فترة بعد الظهر.
قد يضيّق المستجيب عرضاً إلى مجموعة فرعية مقبولة بدلاً من رفضه. تلك النتيجة أسوأ من فشل نظيف، لأنها تعمل جزئياً. اطلب 10.0.0.0/16 بينما تسمح السياسة بـ 10.0.5.0/24، وقد ينتهي بك الأمر بـ SA فرعية تغطي ذلك /24 فقط. يستجيب مضيف واحد، ويقع كل شيء آخر خارجها، ولا يقول أي شيء في العميل ذلك. اقرأ المحدِّدات المقبولة لا المطلوبة قبل أن تستنتج أن التفاوض نجح.
ملفات تعريف المحارب المتجول التي تطلب مساراً افتراضياً تقع هنا باستمرار. البوابة المهيأة للوصول المنقسم تضيّق عرضاً كامل النطاق إلى شبكاتها الفرعية، وعلى العميل أن يقبل النتيجة المضيّقة أو أن يفشل بصوت عالٍ.
اقرأ الرفض من محاولة واحدة
اجمع السجلين من محاولة اتصال واحدة. الملف التعريفي المحفوظ يعرض ما أعددته، لا ما تم اقتراحه، وعلى strongSwan يطبع swanctl --log الإشعار المستلم مع المحدِّدات التي حمله.
ثم افحص ما تم تثبيته فعلاً. يعرض swanctl --list-sas محددات SA الفرعية، ويعرض ip xfrm policy النطاقات نفسها كمدخلات سياسة في النواة. وجود SA فرعية في تلك القائمة بمحددات لم تكن مقصودة هو حدث تضييق؛ وغياب SA فرعية مع TS_UNACCEPTABLE في السجل هو رفض.
افصل الجيران القريبين ما دمت هناك. يشكو INVALID_SELECTORS من محدد داخل SA فرعية قائمة، بينما يعني INTERNAL_ADDRESS_FAILURE أن المستجيب لم يستطع تخصيص عنوان افتراضي، وهذه مشكلة في البركة لا في التغطية.
افحص ما يقلّص المجموعة بصمت
ثلاثة أشياء تقلّص مجموعة المحددات دون أن تقول شيئاً. سياسة المستجيب هي الأولى، عبر قوائم الشبكات الفرعية أو قواعد المجموعات أو التصريح لكل مستخدم مما يرد العرض إلى مجموعة فرعية. عائلة العناوين هي الثانية: العميل ثنائي الحزمة كثيراً ما يقترح IPv6 إلى جانب IPv4 فيتلقى رفضاً لنطاقات لم تعدّها البوابة قط.
قيود البروتوكول والمنفذ هي الثالثة. حيث تسمح السياسة بـ TCP 445 فقط، قد تنهض SA فرعية بينما يبقى ICMP وUDP خارجها، ويبلّغ المستخدم عن نفق معطل بينما كان بروتوكول واحد هو كل ما سُمح به.
لذا لا يمكن توسيع العناوين وحده أن يصلح سياسة مقيدة بمنفذ، وهي الحالة الأرجح للبقاء دون تغيير بعد ثلاث جولات من استكشاف المشكلات.
أثبت التغطية بحركة تناسبها
بعد تثبيت SA الفرعية، أرسل طلباً واحداً يقع قطعاً داخل النطاقات المقبولة. راقب العدادات لا أيقونة الحالة: يزداد ip -s xfrm state والعدادات خلف ip xfrm policy عندما يُطابَق حزمة وتُحمى. عدد بايتات يبقى صفراً بعد حركة حقيقية يعني أن النواة لم تختَر تلك السياسة قط.
ذلك الصفر مشكلة في التوجيه أو في ترتيب السياسات، لا في التشفير. كما أنه يبدو مطابقاً لرفض المحدِّد من مقعد المستخدم، ولهذا تستحق العدادات أن تُجمع قبل أن تعيد فتح الملف التعريفي. العدادات التي ترتفع في اتجاه واحد فقط تشير بدلاً من ذلك إلى مسار العودة.
اختم بكتابة الزوج المقبول في التذكرة، بجوار النطاق المطلوب أصلاً. أبقِ الاختيار بضيق المتطلب، لأن إزالة الخطأ باستبدال نطاق خاص بكل عنوان تمنح وصولاً أوسع بكثير مما أُقرّ للحساب.