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

ما الذي يتخطاه nobind فعلياً

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

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

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

ثلاثة شروط تحسم الأمر

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

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

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

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

حيث يكون المنفذ المثبت هو الإجابة الصحيحة

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

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

الخادم والعميل ليسا متماثلين

يضع دليل OpenVPN 2.6 الخيار nobind إلى جانب lport، وهو الحجة في سطر واحد: أحد الخيارين يقول إن النواة تختار، والآخر يقول إنك تختار. لا يعمل المنفذ المحلي الديناميكي إلا للنظير الذي يبدأ الاتصال، لأن الطرف المجيب لا يمكنه معرفة المنفذ مسبقاً. ولهذا فإن نسخ ملف عميل إلى خادم ينتج مستمعاً لا يمكن لأحد الوصول إليه.

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

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

تحقق من المنفذ الذي اختارته النواة

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

ss -unp | grep openvpn
ss -lunp | grep openvpn
sudo lsof -nP -i | grep openvpn

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

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