OpenVPN: العنوان المحلي مقابل عنوان النفق — مقبسان مختلفان
العنوان الذي يتصل بالخادم ليس العنوان الموجود داخل النفق. قراءة local و remote و nobind كأدوار منفصلة تفسّر معظم أخطاء الربط.
يرفض العميل البدء ويشكو من أنه لا يستطيع ربط عنوان محلي، ويبدو الحل البديهي هو توجيهه إلى عنوان النفق الذي يتوقع استلامه. فهذا لا يمكن أن ينجح، والسبب يستحق الفهم: قبل وجود النفق لا يوجد عنوان داخلي، والمقبس الذي يتصل بالخادم يجب أن يوجد أولًا. هناك عنوانان مختلفان، وواحد منهما فقط يمكن اختياره محليًا.
خطأ الربط يسمّي عنوانًا محليًا
حين يُبلغ OpenVPN أنه لا يستطيع ربط عنوان محلي، فهو يتحدث عن مقبس النقل: نقطة نهاية UDP أو TCP التي تحمل الاتصال المشفّر إلى النظير.
التوجيه الصريح local يطلب من الخدمة ربط ذلك المقبس بعنوان محلي محدّد. ويجب أن يكون العنوان موجودًا في فضاء أسماء الشبكة الذي يعمل فيه الإجراء، وأن يكون قابلًا للتخصيص لحظة بدء العميل.
العنوان العام المترجَم عند موجّه أو عند حافة سحابية ليس عنوانًا محليًا يمكن للخدمة ربطه، حتى وإن كان هو العنوان الذي يراه الخادم. هذا التمييز يفسّر لماذا يعمل ملف تعريف واحد في المنزل ويفشل على نسخة سحابية. وهو يفسّر أيضًا لماذا لا تساعد إضافة العنوان العام إلى واجهة الاسترجاع، لأن النقل سينطلق حينها من عنوان لا تستطيع الشبكة العودة إليه. اقرأ قائمة الواجهات قبل تحرير ملف التعريف.
ما الذي يختاره local و remote فعليًا
remote يسمّي النظير الذي يجب الاتصال به. و local يربط الطرف القريب من المقبس نفسه. و nobind يترك لنظام التشغيل اختيار العنوان المحلي والمنفذ معًا، ولهذا تعمل العملاء خلف موجّهات المنزل عادةً دون أي من التوجيهين.
لا علاقة لأي من التوجيهين بالعنوان الموجود داخل النفق.
داخل حاوية أو فضاء أسماء شبكة تنطبق القاعدة نفسها بحدود أضيق: عناوين المضيف غير موجودة في الداخل، لذا يفشل سطر local المنسوخ من إعداد المضيف لسبب مختلف تمامًا عن سبب فشل عنوان خاطئ.
ip -brief address show
ip route get 203.0.113.10العنوان الداخلي يأتي من الخادم
يجري التفاوض على العنوان داخل النفق أو يُخصَّص بعد إنشاء قناة التحكم. ومع مجموعة ديناميكية يقرّره الخادم عند الاتصال، ومع إعداد خاص بالعميل قد يكون ثابتًا لكل هوية.
كتابة local بعنوان داخلي لا تطلب من الخادم تخصيص ذلك العنوان. في أفضل الحالات يفشل الربط، وفي أسوأها يجد العميل عنوان مضيف غير ذي صلة بالقيمة نفسها ويبدأ استخدامه للنقل.
الواجهات التي يجب قراءتها مختلفة أيضًا. معاملات ifconfig وإعداد المجموعة يصفان الداخل، بينما remote و local و proto و nobind تصف الخارج. والفصل بين القائمتين يفسّر تقريبًا كل مثال مربك تجده في منتدى. ويوثّق دليل OpenVPN 2.6 هذه المعاملات في أقسام منفصلة لهذا السبب.
الفخ: نفق كامل يلتقط نقله الخاص
بعد أن يصبح النفق قائمًا ويحمل المسار الافتراضي، يجب ألا تُوجَّه الرزم التي تعضده داخله. فهذه مشكلة توجيه لا مشكلة عنونة، والخدمة تعالجها بتثبيت مسار أكثر تحديدًا إلى عنوان الخادم نفسه عبر البوابة الأصلية.
إذا ثبّتت النقل على عنوان محلي محدّد ثم غيّرت المسار الذي يستخدمه ذلك العنوان، فقد تفقد الوصلة الخارجية طريقها بينما يبقى الداخل مهيّأً. يواصل النفق الإبلاغ بأنه متصل لأن الداخل سليم. النقل وحده معطوب، ولهذا تُقرأ السجلات كتناقضات.
تبدو الأعراض حينها كنفق يتصل ثم يتجمد، أو كنفق يعيد الاتصال في حلقة دون خطأ مفيد. افحص المسار إلى عنوان النظير قبل أن تفحص أي شيء داخل النفق، وتأكد من أن العنوان المحلي الذي ربطته لا يزال يخص الواجهة التي توقعتها.
عادة تمنع الالتباس
اقرأ كل عنوان في ملف التعريف وقرّر إلى أي طبقة ينتمي قبل تحريره.
فإن كان يسمّي الطرف البعيد من النقل أو يربط طرفه القريب، فهو عنوان خارجي ويجب أن يوجد قبل البدء. وإن كان يصف ما يحدث داخل النفق، فهو يأتي من الخادم أو من الطوبولوجيا، ولا يمكن لأي توجيه محلي أن يحل محله.
اكتب القائمتين في ملاحظات النشر بجوار ملف التعريف. تبدأ جلسة استكشاف الأخطاء التالية عندئذ بالطبقة بدلًا من التخمين.