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

المقارنة التي يجريها الجدار الناري

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

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

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

تثبيت منفذ واحد عند كل طرف

منفذ UDP الافتراضي في OpenVPN هو 1194، وlport يحدد منفذ المصدر الذي يرسل منه. ثبّت النظيرين فيشير توبل كل منهما الصادر إلى منفذ يستمع عليه الآخر:

# peer A
lport 1194
remote 198.51.100.20 1194
# peer B
lport 1194
remote 203.0.113.10 1194

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

حيث يتوقف التوبل عن المطابقة

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

الترجمة على مستوى المشغّل، وNAT المتراكمة، وعشوائية المنافذ كلها تنتهي بالطريقة نفسها. وكذلك أي وسيط يعيد كتابة المنافذ ويترك العناوين كما هي.

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

أحد الطرفين يفشل عادة أولًا

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

اعرف أي طرف أسقط الحزمة قبل أن تمس الملفات. التقاط في الطرفين يحسم الأمر في محاولة واحدة: حزم البيانات التي تغادر A ولا تصل B أبدًا تعني أن التدفق أُعيدت كتابته في الطريق، أما الحزم التي تصل B دون أن يعود أي جواب فتعني أن الجدار الناري لم يقبلها كمرتبطة.

نظيران بعنواني IPv6 عامين يتجاوزان المشكلة كلها. بلا ترجمة لا يوجد ما يطابق، فتكفي قاعدة جدار ناري تسمي النظيرين ويتوقف التصميم عن الاعتماد على سلوك الراوتر.

متى تتوقف عن المحاولة

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

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

جرّب الترتيب المباشر أولًا، ثم سجّل ما رأيته. سلوك NAT والالتقاط الذي أظهره يستحقان أكثر من زوج المنافذ الذي انتهيت إليه، لأن الشبكة التالية ستكون مختلفة. دليل OpenVPN 2.6 يوثّق lport وخيارات remote التي يعتمد عليها هذا.

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