شرح صفوف ومحتوى الفقرة
تخيّل أنك شغّلت خادم ويب داخل جهازك الافتراضي وهو في وضع NAT؛ وكما عرفنا فإن راوتر البرنامج يمنع أي اتصال قادم من الخارج، فكيف تفتح موقعك من متصفح حاسوبك المضيف دون أن تفرّط في حماية NAT؟ الحل الهندسي هو ميزة توجيه المنافذ (Port Forwarding)، والتي تشبه إبلاغ موظف الاستقبال في الفندق: «إذا وصل طرد موجّه إلى البوابة رقم 8080 في الفندق، سلّمه فوراً إلى المكتب رقم 80 داخل الغرفة الداخلية».
من خلال فتح إعدادات الشبكة Network ثم القسم المتقدم Advanced والضغط على زر Port Forwarding، يمكنك إضافة قاعدة تربط منفذاً محدداً على حاسوبك المضيف بمنفذ الخدمة المقابل داخل النظام الضيف مثل منفذ الويب 80 أو منفذ الإدارة البعيدة 22.
نص
# [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"
كيف تختبر نجاح توجيه المنفذ عملياً من حاسوبك المضيف؟
- الفحص عبر أداة سطر الأوامر
curl -v: افتح نافذة الأوامر على حاسوبك المضيف وأرسل طلب فحص نحو المنفذ المحلي8080؛ ستلاحظ خروج أسطر الطلب المسبوقة بعلامة>وعودة أسطر الاستجابة ورؤوس الرسالة المسبوقة بعلامة<من خادمNginxأوApacheالعامل داخل الآلة الافتراضية. - الفحص عبر أدوات المطور في المتصفح: افتح متصفحك على المضيف واضغط مفتاح
F12لفتح تبويب الشبكةNetwork، ثم اطلب عنوان الخدمة المحلية على المنفذ8080لتشاهد حالة الاستجابة الناجحة200 OKوتفاصيل الاتصال.
نص
$ 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