مفتاح إيقاف UFW يعطّل VPN؟ اسمح للنظير
قاعدة منع الصادر تُسقط مصافحة النفق. استثناء واحد للنظير، يُضاف قبل ufw enable، هو ما يحوّل السياسة إلى مفتاح إيقاف.
اتبعت قائمة التحقق: منع الصادر، والسماح للنفق، وتفعيل ufw. ثم ينتظر العميل عند المصافحة ولا يتصل أبدًا، أو يتصل فلا تُحمَّل أي صفحة. كلا الفشلين يأتيان من الثغرة نفسها. القاعدة التي تسمح بوجود النفق غائبة، لأن النفق ليس واجهة تخرج منها حزمك.
لماذا لا يطابق سماح على tun0 شيئًا في البداية
يُنشئ العميل tun0 بعد وجود جلسة. مخططات البيانات التي تبني تلك الجلسة هي حزم UDP عادية موجّهة إلى المزوّد على المنفذ 1194، وتخرج عبر wlan0 أو eth0 بعنوان المصدر الفيزيائي. allow out on tun0 لا يطابق إلا الحركة التي تكون واجهتها الصادرة tun0، لذا أثناء المصافحة لا يطابق شيئًا على الإطلاق.
ضع default deny outgoing فوق ذلك فتُسقط الحزم الخارجية قبل أن تظهر الواجهة أصلًا. يعيد العميل المحاولة، وينتهي الوقت، ويبلّغ عن فشل TLS أو مصافحة، مما يدفع الناس إلى التنقيب في الشهادات و MTU بينما يعالج الجدار الناري الاتصال بصمت. القاعدة التي كان يُفترض أن تحتوي حركتك تمنع احتواء تلك الحركة.
الإصلاح الانعكاسي يجعل التسريب دائمًا. sudo ufw allow out on wlan0 ، أو إعادة الافتراضي إلى السماح، يرفع النفق ويترك الجهاز بلا مفتاح إيقاف: في المرة التالية التي يسقط فيها النفق، يستأنف كل شيء عبر المحول الفيزيائي. لقد أهدرت ظهيرة كاملة على ذلك الزوج من التعديلات بالضبط قبل أن أكتشف أي حزمة كنت أُرشّحها فعليًا.
ما تحتاجه مجموعتا الحزم
تعبر حركتك الجدار الناري مرتين، في شكلين. الحزمة الداخلية تنطلق من عنوان النفق عبر tun0. والحزمة الخارجية تنطلق من العنوان الفيزيائي إلى النظير، وهي الشيء الوحيد المرئي على السلك. قاعدة واحدة لكل شكل:
sudo ufw allow out on tun0
sudo ufw allow out to 203.0.113.10 port 1194 proto udp
sudo ufw allow out to 203.0.113.10 port 443 proto tcp comment 'tcp fallback'
استبدل العنوان والمنفذ بالعنوان والمنفذ من ملفك الشخصي. عادةً ما يستجيب نظراء WireGuard على 51820/udp؛ وملفات OpenVPN التي تسير عبر TCP 443 تحتاج ذلك المنفذ بدلًا منه. تختلف التفاصيل، ولا يختلف الشكل: القاعدتان ضيقتان، ومعهما تحددان الوجهات الوحيدة التي يمكن للجهاز الوصول إليها والنفق معطّل.
الترتيب هو الأسطورة الثانية. مع iptables الخام تقرأ السلسلة من أعلى إلى أسفل وتستنتج أي قاعدة تفوز. ufw ليس غلافًا رقيقًا حول القائمة التي كتبتها؛ بل يترجم قواعدك إلى سلاسله الخاصة ويختار نقاط الإدراج. ufw status يطبعها بترتيب ufw، لا بترتيبك. عندما تبدو قاعدة ما مُتجاهَلة، قارن ufw show added بالمجموعة المترجمة من iptables -S | grep ufw قبل إعادة كتابة أي شيء.
يجب أن يبقى الاستثناء بعرض عنوان واحد
قاعدة النظير صحيحة فقط ما دامت تسمّي العنوان الذي يتصل به العميل. يبدّل المزوّدون نقاط النهاية، والملف الذي يحل اسم مضيف سيتبع تغيير DNS إلى عنوان جديد بينما تظل القاعدة تشير إلى القديم. عندما يتوقف نفق عمل لأشهر عن الظهور، قارن العنوان في القاعدة بالعنوان الذي يبحث عنه العميل قبل أن توسّع أي شيء.
التوسيع إلى شبكة فرعية كاملة، أو إلى كل وجهة على المنفذ 1194، يعيد السياسة إلى جدار ناري به ثقب. الاستثناء هو مفتاح الإيقاف؛ فبمجرد أن يصبح واسعًا، لا يبقى شيء لإيقافه. أبقِه على عنوان واحد واترك تعليقًا يسمّي الملف والمزوّد الذي ينتمي إليه، لأن العنوان بعد ستة أشهر سيبدو عشوائيًا.
استبانة الأسماء تستحق سطرًا خاصًا. يحدث البحث قبل وجود النفق، عبر الواجهة الفيزيائية، لذا يمكن لسياسة صارمة بمنع الصادر أن تترك العميل عاجزًا عن إيجاد خادمه. اسمح بالمنفذ 53 إلى عنوان المفسّر لديك، أو حلّ مرة واحدة وثبّت العنوان في الملف. السماح بـ DNS على كل واجهة قرار، لا افتراضي.
ابنِ السياسة قبل أن تحتاج النفق
ufw enable يطبق السياسة بأكملها دفعة واحدة ويعيد تحميل سلاسله، وتغيير سياسة افتراضية على جدار ناري يعمل يعيد تحميلها أيضًا. دليل ufw يحذّر من أن ذلك قد يُسقط اتصالات قائمة مثل SSH. لذلك تأتي الأوامر بهذا الترتيب، مع قاعدة SSH قبل التفعيل وجلسة طرفية مفتوحة:
sudo ufw default deny incoming
sudo ufw default deny outgoing
sudo ufw allow out on tun0
sudo ufw allow out to 203.0.113.10 port 1194 proto udp
sudo ufw allow 22/tcp
sudo ufw enable
sudo ufw status verbose
ufw reset تُرِك عمدًا خارج تلك الكتلة. فهو يحذف كل قاعدة ويعطّل الجدار الناري، وعلى مضيف بعيد يكون التفعيل التالي هو ما يُسقط جلستك. إن أعدت الضبط فعلًا، فأضف قاعدة SSH وتأكد من طريق ثانٍ للعودة عبر طرفية قبل المتابعة.
الترتيب ليس شكليًا. القواعد المضافة أثناء عمل ufw لا تُفرّغ شيئًا، لكن لحظة قلب سياسة افتراضية تُعاد السلاسل، وتمضي معها جلسة كانت السياسة القديمة تسمح بها. نفّذ الافتراضيات والسماحات والتفعيل في تمريرة واحدة، بينما لا يزال لديك طريق للدخول لا يعتمد على الجهاز.
اختبر الحالة المحظورة، واحتفظ بالتراجع
مفتاح إيقاف غير مُختبر تخمين. افصل العميل عمدًا وحاول تحميل صفحة: يجب أن يفشل. أعد الاتصال ويجب أن يتعافى دون لمس أي قاعدة. sudo ufw status verbose يؤكد الافتراضيات وحالة التسجيل، و ufw status numbered يُظهر قاعدة الاختبار التي يجب حذفها عندما تتجاوز غرضها.
أبقِ السكربت العكسي بجانب السكربت الأمامي. جهاز بمنع الصادر ونفق ميت لا يستطيع تنزيل إصلاحه بنفسه، لذا يجب أن يكون التراجع على القرص وقابلًا للقراءة من طرفية:
sudo ufw reset
sudo ufw default deny incoming
sudo ufw default allow outgoing
sudo ufw enable
شغّله عندما يكون النفق معطّلًا بالفعل ويجب رفع القواعد، لا كخطوة روتينية. قبل أن تغلق الطرفية، يجب أن تصح أربعة أمور: قاعدة النظير تسمّي عنوانًا واحدًا بالضبط، و DNS له استثناء مسمّى، والتفعيل جاء بعد السماحات، وسحب النفق يقتل الحركة العادية دون أن يقتل العميل نهائيًا.