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

أمر صدفة ليس ملف استعادة

السطر الذي يبدأ بـ iptables -t nat هو تعليمة إلى برنامج iptables، أما الملف الذي يقرأه UFW فهو وصف لمجموعة قواعد كاملة. الفرق ليس شكليًا: يجب أن يعرف تنسيق الاستعادة في أي جدول هو، وأي السلاسل موجودة، وأين ينتهي الجدول. الأمر الذي يُلصق في ذلك المستند إما خطأ نحوي أو، الأسوأ، قاعدة مرتبطة بالجدول الخطأ. يُحمِّل الإطار هذه الملفات عبر أدوات الاستعادة تحديدًا لأنها تصريحية وليست تسلسلية.

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

ضع المقطع داخل قسم الجدول الموجود

لمقطع NAT شكل، والشكل يهم أكثر من نص القاعدة داخله. يُفتح القسم بترويسة الجدول، وتؤسس تعريفات السلاسل العدادات، ثم تأتي القواعد، ويُغلق القسم بـ COMMIT.

*nat
:POSTROUTING ACCEPT [0:0]
-A POSTROUTING -s 10.55.0.0/24 -o ens3 -j MASQUERADE
COMMIT

المجمّع والواجهة أعلاه عنصران نائبان عن قيمك؛ البنية هي الجزء الجدير بالنسخ. إذا كان الملف يحتوي بالفعل على قسم *nat، فأضف القاعدة داخل ذلك القسم بدلًا من فتح قسم ثانٍ، لأن التنسيق يتوقع COMMIT واحدًا لكل جدول، وقسمان للجدول نفسه إصلاح ينتظر الحدوث. أبقِ تعريفات سلاسل التوزيعة كما هي، بما في ذلك أي تعريف أضافه المورّد لتكامله الخاص. يوثّق دليل إطار UFW ملفات before و user و after إلى جانب شرط وجود COMMIT مطابق.

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

اختبر المرشح دون الالتزام به

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

sudo cp /etc/ufw/before.rules /root/before.rules.bak
sudo iptables-restore --test < /root/before.rules.bak
echo "exit: 0"

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

اختر الأداة المطابقة للخلفية المثبتة وعائلة العناوين. المضيف الذي يشغّل خلفية nft عبر طبقة التوافق يحتاج الأمر المقابل، وقواعد IPv6 تعيش في ملف آخر تمامًا.

افصل إعادة التوجيه وNAT وسياسة الوصول

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

sysctl net.ipv4.ip_forward
sudo iptables -t nat -S POSTROUTING
sudo iptables -S FORWARD

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

تحقق من إعادة التحميل والرفض وفقدان VPN

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

sudo ufw reload
sudo ufw status verbose
sudo iptables -t nat -L POSTROUTING -n -v

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

لا يقول NAT من IPv4 شيئًا عن IPv6، لذا اذكر التغطية المقصودة للعائلتين في الملاحظة نفسها مع القاعدة. السياسة المتسقة المُدارة هي الهدف، ومقطع صادف أنه حُلِّل ليس دليلًا عليها.

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