انتقل إلى محتوى الدرس

Port Forwarding in Virtual Machines توجيه المنافذ لمواقع الويب

افهم أوضاع اتصال الأجهزة الافتراضية بالشبكة في VirtualBox مثل وضع الترجمة والجسر والمضيف فقط والشبكة الداخلية، وتعلم إعداد توجيه المنافذ وبناء مختبر أمني معزول بالكامل.
5 صفوف تعليمية
تكنولوجيا الويب
2 مشاهدة

شرح صفوف ومحتوى الفقرة

الصف 1 شرح توضيحي

تخيّل أنك شغّلت خادم ويب داخل جهازك الافتراضي وهو في وضع NAT؛ وكما عرفنا فإن راوتر البرنامج يمنع أي اتصال قادم من الخارج، فكيف تفتح موقعك من متصفح حاسوبك المضيف دون أن تفرّط في حماية NAT؟ الحل الهندسي هو ميزة توجيه المنافذ (Port Forwarding)، والتي تشبه إبلاغ موظف الاستقبال في الفندق: «إذا وصل طرد موجّه إلى البوابة رقم 8080 في الفندق، سلّمه فوراً إلى المكتب رقم 80 داخل الغرفة الداخلية».

من خلال فتح إعدادات الشبكة Network ثم القسم المتقدم Advanced والضغط على زر Port Forwarding، يمكنك إضافة قاعدة تربط منفذاً محدداً على حاسوبك المضيف بمنفذ الخدمة المقابل داخل النظام الضيف مثل منفذ الويب 80 أو منفذ الإدارة البعيدة 22.

الصف 2 كود برمجي
نص
# [1] Port Forwarding Rules Table (Settings -> Network -> NAT):
# Name   | Proto | Host IP   | Host Port | Guest IP  | Guest Port
# web-80 | TCP   | 127.0.0.1 | 8080      | 10.0.2.15 | 80
# ssh-22 | TCP   | 127.0.0.1 | 2222      | 10.0.2.15 | 22

# [2] Equivalent CLI Rule via VBoxManage:
VBoxManage modifyvm "Ubuntu-Web" \
  --natpf1 "web-80,tcp,127.0.0.1,8080,10.0.2.15,80"
الصف 3 شرح توضيحي

كيف تختبر نجاح توجيه المنفذ عملياً من حاسوبك المضيف؟

  • الفحص عبر أداة سطر الأوامر curl -v: افتح نافذة الأوامر على حاسوبك المضيف وأرسل طلب فحص نحو المنفذ المحلي 8080؛ ستلاحظ خروج أسطر الطلب المسبوقة بعلامة > وعودة أسطر الاستجابة ورؤوس الرسالة المسبوقة بعلامة < من خادم Nginx أو Apache العامل داخل الآلة الافتراضية.
  • الفحص عبر أدوات المطور في المتصفح: افتح متصفحك على المضيف واضغط مفتاح F12 لفتح تبويب الشبكة Network، ثم اطلب عنوان الخدمة المحلية على المنفذ 8080 لتشاهد حالة الاستجابة الناجحة 200 OK وتفاصيل الاتصال.
الصف 4 كود برمجي
نص
$ curl -v http://127.0.0.1:8080/
* Connected to 127.0.0.1 (127.0.0.1) port 8080
> GET / HTTP/1.1
> Host: 127.0.0.1:8080
> User-Agent: curl/8.5.0
>
< HTTP/1.1 200 OK
< Server: nginx/1.24.0 (Ubuntu Guest VM)
< Content-Type: text/html; charset=UTF-8
< Content-Length: 42
الصف 5 ملاحظة هامة