ديف أوبس

إعادة توجيه المنافذ بلينكس

كيفية إعادة توجيه المنافذ Forward Ports عبر بوابة لينكس Linux Gateway باستخدام IPTables

مقدمة

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

واحدة من أهم الوظائف التي يمكن تحقيقها باستخدام IPTables هي إعادة توجيه المنافذ (Port Forwarding)، وهي عملية تقوم بتحويل حركة المرور التي تصل إلى منفذ معين على عنوان IP معين إلى منفذ مختلف على عنوان آخر. يُستخدم هذا في سيناريوهات مثل توجيه الطلبات الواردة من الإنترنت إلى خوادم داخلية خلف NAT، أو توزيع حركة المرور على خدمات مختلفة داخل شبكة خاصة.

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


المفاهيم الأساسية لإعادة توجيه المنافذ

NAT وDNAT وSNAT

لفهم عملية إعادة التوجيه، من الضروري التطرق أولاً إلى مفهوم الترجمة الشبكية للعناوين (NAT)، والتي تنقسم إلى نوعين أساسيين:

  • SNAT (Source NAT): تغيير عنوان المصدر للحزمة.

  • DNAT (Destination NAT): تغيير عنوان الوجهة للحزمة.

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

الجداول والسلاسل في IPTables

IPTables تعتمد على جداول (Tables) تحتوي على سلاسل (Chains) وهي كالتالي:

الجدول الاستخدام
filter الجدار الناري الرئيسي
nat لترجمة العناوين (مثل إعادة التوجيه)
mangle لتعديل الحزم
raw لتحديد الاستثناءات

السلاسل الرئيسية المستخدمة في إعادة التوجيه:

  • PREROUTING: تعديل الحزم قبل توجيهها.

  • POSTROUTING: تعديل الحزم بعد تحديد وجهتها.

  • FORWARD: الحزم التي تمر من خلال الجهاز ولكن ليست موجهة له.


المتطلبات الأساسية

قبل الشروع في تكوين القواعد، يجب التأكد من النقاط التالية:

  1. تفعيل التوجيه بين الشبكات (IP Forwarding):

bash
echo 1 > /proc/sys/net/ipv4/ip_forward

أو لجعل التغيير دائمًا:

bash
echo "net.ipv4.ip_forward = 1" >> /etc/sysctl.conf sysctl -p
  1. أن يكون جهاز لينكس بوابة (Gateway) بين شبكتين.

  2. توفر صلاحيات الجذر (root) لإجراء التعديلات.

  3. تثبيت IPTables (غالبًا مثبت افتراضيًا).


مثال تطبيقي لإعادة توجيه منفذ

السيناريو:

  • عنوان الـ Gateway الخارجي: 203.0.113.1

  • عنوان الخادم الداخلي: 192.168.1.100

  • المنفذ الخارجي المطلوب فتحه: 80 (HTTP)

  • المنفذ الداخلي: 8080

القواعد المطلوبة:

1. إعادة التوجيه (DNAT):

bash
iptables -t nat -A PREROUTING -p tcp -d 203.0.113.1 --dport 80 -j DNAT --to-destination 192.168.1.100:8080

2. السماح بتمرير الحزم (FORWARD):

bash
iptables -A FORWARD -p tcp -d 192.168.1.100 --dport 8080 -m state --state NEW,ESTABLISHED,RELATED -j ACCEPT

3. تعديل المصدر (SNAT أو MASQUERADE) في POSTROUTING:

إذا كان الجهاز البوابة يستخدم عنوان IP متغير (كما في اتصال PPPoE):

bash
iptables -t nat -A POSTROUTING -o eth0 -j MASQUERADE

أما إذا كان IP ثابت:

bash
iptables -t nat -A POSTROUTING -o eth0 -j SNAT --to-source 203.0.113.1

إعادة توجيه منافذ متعددة

لإعادة توجيه عدة منافذ إلى نفس الخادم الداخلي:

bash
iptables -t nat -A PREROUTING -p tcp --dport 443 -j DNAT --to-destination 192.168.1.100:8443 iptables -A FORWARD -p tcp -d 192.168.1.100 --dport 8443 -j ACCEPT

التعامل مع البروتوكولات المختلفة

قد تحتاج بعض الخدمات إلى التعامل مع بروتوكولات مثل UDP، كما هو الحال مع الألعاب أو خوادم VoIP:

bash
iptables -t nat -A PREROUTING -p udp --dport 5060 -j DNAT --to-destination 192.168.1.100:5060 iptables -A FORWARD -p udp -d 192.168.1.100 --dport 5060 -j ACCEPT

حفظ القواعد وضمان استمرارها بعد إعادة التشغيل

تختلف الطريقة حسب التوزيعة:

في Debian/Ubuntu:

bash
apt install iptables-persistent netfilter-persistent save

في CentOS/RHEL:

bash
service iptables save

أو باستخدام iptables-save:

bash
iptables-save > /etc/iptables.rules

ثم إعداد ملف systemd أو rc.local لتحميلها عند الإقلاع.


أمثلة متقدمة

إعادة توجيه حزمة واردة إلى عنوان داخلي باستخدام نطاق IP كامل:

bash
iptables -t nat -A PREROUTING -d 203.0.113.0/24 -p tcp --dport 22 -j DNAT --to-destination 192.168.0.0/24

منع إعادة التوجيه من IP محدد:

bash
iptables -A FORWARD -s 203.0.113.55 -j DROP

التحقق من القواعد الحالية

لعرض القواعد المفعّلة:

bash
iptables -t nat -L -n -v iptables -L -n -v

جدول يوضح الاختلاف بين سلاسل IPTables المستخدمة في إعادة التوجيه

السلسلة نوع الجدول الوظيفة
PREROUTING nat تعديل عنوان الوجهة قبل التوجيه
POSTROUTING nat تعديل عنوان المصدر بعد التوجيه
FORWARD filter يسمح أو يمنع مرور الحزم بين واجهات الشبكة
INPUT filter يتحكم في الحزم الموجهة للجهاز نفسه
OUTPUT filter يتحكم في الحزم الصادرة من الجهاز

أفضل الممارسات لإدارة إعادة توجيه المنافذ

  • توثيق جميع القواعد المستخدمة بوضوح.

  • تجنب إعادة توجيه المنافذ الحساسة بدون قيود (مثل 22 أو 3306) إلا مع حماية إضافية.

  • استخدام جدار ناري إضافي أو أدوات IDS/IPS معقدة إن كانت الشبكة كبيرة.

  • مراقبة سجلات IPTables باستخدام أدوات مثل ulogd أو iptables-logger.

  • استخدام IPv6 بإعدادات مخصصة عند الحاجة.

  • عند العمل على خوادم الإنتاج، يجب اختبار كل قاعدة أولًا على بيئة افتراضية قبل تطبيقها بشكل مباشر.


الخلاصة

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

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


المراجع: