كتابة -o tun+ تبدو تعليمة دقيقة، لكنها في الحقيقة حرف بدل يطابق كل نفق يملكه النواة. عميل VPN ثانٍ، أو جسر حاوية، أو واجهة تركتها جلسة انهارت، كلها تحقق الشرط، فيسمح المضيف بعد ذلك بمرور حركة كُتبت السياسة لمنعها. يسرد الدليل أدناه اسم جهاز واحدًا، ويرتّب الاستثناءات كي يتشكل النفق فعلًا، ويترك لك طريقًا للعودة إذا جاءت القواعد على نحو سيئ. كل خطوة قصيرة بما يكفي للتراجع عنها وحدها.

الخطوة 1: سجّل القواعد التي لديك الآن

قبل تغيير سياسة افتراضية، احفظ الحالة الحالية كي يكون التراجع أمرًا لا ذكرى. iptables-save > /root/iptables.pre يكتب كل الجداول في ملف يمكنك استعادته، وفتح طرفية ثانية بجلسة جذر ليس هوسًا عندما تكون السياسة التي أنت على وشك تطبيقها ستسقط الاتصال الذي يحملها. وإذا كنت تعمل عن بُعد، فجدول أيضًا تفريغًا كقاطع أمان.

ثم اسرد الواجهات، لأن اسمًا افترضته هو اسم كان ينبغي أن تقرأه: ip -br link يُظهر ما هو موجود الآن، ولن يظهر النفق قبل أن يصبح جاهزًا. اكتب أسماء الأجهزة كما تقرأها.

الخطوة 2: امنح النفق اسمًا خاصًا به

OpenVPN يقبل dev tun_work في إعداد العميل، وحينها ينشئ Linux واجهة بهذا الاسم بالضبط بدلًا من تخصيص tun0. يبقى الاسم ثابتًا عبر إعادة الاتصال ما دام لا شيء آخر يطالب به، وهذا ما يجعل قاعدة تسمّي الجهاز ذات معنى.

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

الخطوة 3: اكتب السياسة مع استثناء نقطة النهاية أولًا

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

# allow the tunnel to be built, then everything the tunnel carries
iptables -P INPUT DROP
iptables -P OUTPUT DROP
iptables -A INPUT  -i lo -j ACCEPT
iptables -A OUTPUT -o lo -j ACCEPT
iptables -A OUTPUT -d 198.51.100.7 -p udp --dport 1194 -j ACCEPT
iptables -A OUTPUT -o tun_work -j ACCEPT
iptables -A INPUT  -i tun_work -j ACCEPT
iptables -A INPUT  -m conntrack --ctstate ESTABLISHED,RELATED -j ACCEPT

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

على الموجّه تنتقل الصيغة نفسها إلى سلسلة FORWARD للعملاء خلفه، وحركة الموجّه نفسه تحتاج قواعدها الخاصة. مجموعة قواعد تغطي الحزم المرّرَة فقط تترك SSH وDNS على المسار القديم، وهكذا يصبح الموجّه غير قابل للوصول في اللحظة التي يظهر فيها النفق.

الخطوة 4: تحقق من الترتيب، لا من الوجود فقط

تُقيَّم القواعد بالتسلسل، فقاعدة ACCEPT تأتي أبكر تحجب ببساطة قاعدة REJECT التي أضفتها بعدها. مطابقة established وrelated هي ما يسمح بعودة الردود على طلباتك الصادرة دون فتح مسار وارد عام، ووضعها بعد قبول النفق يعني أن نفقًا ساقطًا ما زال يمرر حركة العودة على واجهته.

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

الخطوة 5: اجعله يصمد أمام الإقلاع وعائلة العناوين

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

ثم افحص IPv6 بشكل منفصل، لأن سياسة رفض افتراضي جيدة لـ IPv4 لا تقول شيئًا عن العائلة الأخرى. ip -6 route سيخبرك ما إذا كان المضيف يملك مسارًا قد يحمل حركة حول نفق يتعامل مع IPv4 فقط، ويحتاج ip6tables أو nftables إلى قواعده المكافئة. اختبر بوجهة IPv6-only بدلًا من الثقة بتماثل مجموعة القواعد.

الخطوة 6: تحقق وكن مستعدًا للاستعادة

ارفع النفق، وتأكد من عمل الخدمة التي تقصدها، ثم جرّب شيئًا يجب أن ترفضه السياسة. استعد بـ iptables-restore < /root/iptables.pre إذا فاجأك الجواب، وعندها فقط ابدأ تحرير القواعد. الاستمرارية مع مسار استعادة مُختبر هي ما يجعل هذا تغييرًا يمكنك إجراؤه مرتين.

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