بدء OpenVPN قبل جاهزية الشبكة ليس فشلًا
العميل الذي يبدأ قبل أن يصبح الخادم متاحًا يعيد المحاولة ولا يفشل. افصل بين الترتيب وDNS والمصادقة والاستعادة بعد الاتصال.
تشغّل العميل عند الإقلاع، فتُبلغ الوحدة بأنها نشطة، ولا يكون النفق موجودًا. الاستنتاج الطبيعي أن الخدمة فشلت في البدء، والإصلاح الطبيعي أن تعيد تشغيلها. وكلاهما خطأ في كثير من الحالات بما يكفي لصياغة قاعدة: العميل العامل الذي يعيد المحاولة يبدو من الخارج تمامًا كعميل معطل. الفرق يكمن في ما تفعله العملية، لا في حالة الوحدة.
خرافة: خدمة بدأت تعني نفقًا يعمل
الوحدة النشطة تثبت أن العملية أُطلقت ولم تنته. وهي لا تثبت أن الملف الشخصي حُمّل، أو أن الشهادة قُبلت، أو أن الطرف الآخر أجاب. قد يبقى عميل مغلّف في حلقة إعادة محاولة لدقائق بينما لا يبلغ systemd إلا عن النجاح. تلك الفجوة بين الحالة والسلوك هي الموضوع كله.
الحالة المعاكسة شائعة بالقدر نفسه. ربما انتهت العملية بعد عجزها عن قراءة مفتاح، ثم تُبلغ الوحدة عن حالة فشل لا تقول شيئًا عن السبب. تحتاج الحالتان إلى السجل للتمييز بينهما.
اقرأ سجل الوحدة للنسخة بدلًا من حالة الوحدة. سطر السبب موجود في السجل، لا في تسمية الحالة.
خرافة: إعدادات إعادة المحاولة تغطي كل فشل
تحليل الأسماء وإعادة محاولات النقل عنصران للتحكم مستقلان بقيم افتراضية مستقلة. يحكم resolv-retry عمليات البحث المتكررة عن اسم مضيف بعيد، ويستمر الافتراضي الموثق في المحاولة بلا نهاية. ويضبط connect-retry الفاصل بين المحاولات، في حين يستطيع connect-retry-max تحديد عدد المرات التي تُجرَّب فيها كل جهة بعيدة. تحقق من المرحلة التي يسمّيها السجل قبل تغيير أي منها.
لا ينطبق شيء من ذلك على ملف شخصي مشوّه أو مفتاح خاص غير قابل للقراءة أو حساب مرفوض. هذه تحتاج إلى تصحيح، والعميل الذي يواصل إعادة المحاولة عليها لا يحقق تقدمًا.
إعادة محاولة شهادة غير معتمدة إلى الأبد ليست سببًا لإزالة التحقق. بل هي سبب لقراءة الخطأ.
خرافة: مشغّل واحد يكفي، لذا أضف آخر
الاتصال الذي يديره NetworkManager أو وحدة مغلّفة بالفعل لا يحتاج إلى مشغّل ثانٍ مرتبط به. عمليتان تتنافسان على المسارات نفسها تنتجان واجهات مكررة وسجلات مربكة ونفقًا يتذبذب لأسباب لا يراها أحد. والنسخة الثانية تصل عادة كحل مؤقت لأن الأولى بطيئة.
حدد أي مكوّن يملك النفق قبل إضافة أي شيء. ثم أزل المشغّل الآخر بدلًا من تعطيله والأمل في أن ينجح ذلك.
المالك يحدد أيضًا مصدر إعادة المحاولات وبيانات الاعتماد، ولهذا يأتي هذا القرار قبل ضبط أي شيء. الملكية تأتي أولًا لهذا السبب بالضبط.
ما يحتاج إلى ترتيب فعليًا
يمكن للترتيب أن ينتظر عنوانًا مُكوَّنًا، وهذا كل ما يضمنه. يؤخر network-online.target التنشيط حتى يعتبر المدير الشبكة قائمة، وتعريف «قائمة» يعتمد على المدير. وهو لا يقول شيئًا عن تحليل اسم VPN، ولا عن استجابة المستمع، ولا عن قبول بوابة أسيرة للجهاز.
اقرأ الوحدة المثبتة وأي ملفات drop-in قبل إضافة التبعيات. إن After= الواسعة على كل خدمة شبكة تؤخر الإقلاع دون إقامة الاتصال الذي تحتاجه فعليًا.
رتّب التبعية التي يمكنك اختبارها، وتحقق من كل شيء آخر بمسبار جاهزية. مسبار يفتح النفق أفضل من مؤقت يخمّن.
ما يحدث بعد أن يصعد النفق أول مرة
الإقلاع حدث واحد بين أحداث كثيرة. يتغير رابط الوصول، وتنتهي جلسة بوابة، ويعيد النظير التشغيل. ميّز إعادة الاتصال الداخلية من خروج العملية الذي يديره مدير الخدمة، لأن للاثنين مالكين مختلفين ويتركان أدلة مختلفة.
المصادقة التفاعلية تقيّد الاستعادة غير المراقبة. لا تفتح وحدة خلفية سلسلة مفاتيح سطح مكتب ولا تجيب عن طلب MFA، لذا اتبع ترتيب بيانات الاعتماد المعتمد لسياق الخدمة.
قرر بشكل منفصل ما يجوز للتطبيقات فعله أثناء تعطل النفق. إعادة المحاولة تستعيد الاتصال، بينما تقرر سياسة الحظر ما إذا كانت الحركة المباشرة مسموحة في تلك الفجوة.