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

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

اقرأ خطأ الربط الدقيق

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

systemctl status openvpn-server@lab --no-pager
journalctl -u openvpn-server@lab -n 20 --no-pager

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

اجرد المقبس، لا المنفذ

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

ss -lunp | grep -F ':1194'
ss -ltnp | grep -F ':1194'
ss -lunp 'sport = :1194'

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

اعرف أي عملية تملكه

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

sudo ss -lunp 'sport = :1194'
sudo fuser -v -n udp 1194

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

مالك واحد، أو نسختان مصممتان

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

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

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

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

تحقق من الربط قبل أي شيء آخر

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

ss -lunp 'sport = :1194'
systemctl is-active openvpn-server@lab
journalctl -u openvpn-server@lab -f

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

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