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

سمِّ دور المرور قبل أن تلمس أي ضابط

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

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

Traffic roleControl that decides itWhere it lives in the configSymptom when it is wrong
A client reaching a listener on the routerInput policy of the zone that carries the connection, or a rule for the portoption input in the zone stanza, or a named ruleThe handshake never completes and the tunnel log says nothing
A tunnel client reaching the router itselfInput policy of the tunnel zoneoption input in the VPN zoneA ping to the gateway fails
A tunnel client reaching another LAN hostForwarding from the tunnel zone to the LAN zoneconfig forwarding plus the zone assignmentThe gateway answers and the file share times out
The router's own traffic leaving the WANOutput policy, and translation if the far side needs itoption output and option masqThe tunnel never establishes, or replies vanish

المستمع على الراوتر يحتاج قاعدة إدخال ضيقة واحدة

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

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

config zone
    option name 'wan'
    option input 'REJECT'
    option forward 'REJECT'
    option output 'ACCEPT'
    option masq '1'

config rule
    option name 'allow-openvpn'
    option src 'wan'
    option proto 'udp'
    option dest_port '1194'
    option target 'ACCEPT'

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

fw4 check
service firewall reload

طلب العميل يعبر التمرير، لا الإدخال

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

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

إخفاء العنوان قرار توجيه، لا إذن

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

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

أثبت القرار بطلب مسموح وآخر مرفوض

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

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

nft list chain inet fw4 forward_wan
logread -f | grep -i -E 'DROP|REJECT'

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

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