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

الترتيب الذي يتبعه الموزّع

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

SituationAddress chosenPractical effect
Reconnect, old address still freeThe remembered addressRules appear stable for days
Old address taken by another clientLeast recently used free addressA working rule silently stops matching
Concurrent sessions, same nameFirst free address, per sessionOne identity can hold several leases

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

لماذا يبدو الإيجار مستقرًا ثم يتحرك

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

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

ملف الاستمرارية يتذكر، ولا يحجز

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

ifconfig-pool-persist /etc/openvpn/ipp.txt
server 10.8.0.0 255.255.255.0

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

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

تثبيت عنوان بشكل صحيح

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

# client-config-dir entry for "laptop-acme"
ifconfig-push 10.8.0.50 255.255.255.0

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

أكّد النتيجة على العميل بدلًا من الوثوق بمحاسبة الخادم. وعندما تعود الجلسة، انظر إلى عنوان الواجهة والمسار المدفوع، لأن سجلًا على الخادم قد يبلّغ عن العنوان المطلوب بينما تحمل الواجهة نفسها عنوانًا آخر.

العنوان البعيد مسألة منفصلة

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

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

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