عرض خدمة محلية على الإنترنت من Ubuntu: دليل كامل لإعادة توجيه المنافذ
Publié le 28 May 2025
- المشكلة: NAT والعناوين الخاصة
- الخطوة 1: تحديد عنوان IP العام الخاص بك
- الخطوة 2: معرفة عنوان IP المحلي لجهازك أوبونتو
- الخطوة 3: تكوين إعادة توجيه المنفذ على جهازك
- الخطوة 4: إعداد الخدمة على أوبنتو
- الخطوة 5: تكوين جدار الحماية Ubuntu
- الخطوة 6: الاختبار والتحقق
- الممارسات الجيدة والأمان
- بدائل لتحويل المنفذ
- استكشاف الأخطاء وإصلاحها
- الخاتمة
الجمهور المستهدف : متوسط
-
المتطلبات المفترضة : معرفة أساسية بـ Ubuntu، والمحطة الطرفية، ومفاهيم الشبكات الأساسية
-
مفاهيم تقنية : NAT, إعادة توجيه المنفذ, جدار ناري, وكيل عكسي
-
أوامر النظام : استخدام الطرفي، تكوين الشبكة
-
الأقسام المتقدمة : المراقبة، الأمان، بدائل السحابة
المشكلة: NAT والعناوين الخاصة
افتراضيًا، يستخدم صندوق الإنترنت الخاص بك NAT (Network Address Translation) لمشاركة عنوان IP عام واحد بين جميع أجهزتك في شبكتك المنزلية. تستخدم أجهزتك المحلية عناوين IP خاصة (مثل 192.168.x.x، 10.x.x.x، إلخ) التي لا يمكن توجيهها على الإنترنت.
عند تشغيل خدمة على جهازك Ubuntu (مثلاً خادم ويب على المنفذ 8080)، لا يمكن الوصول إليها إلا من شبكتك المحلية. لجعلها قابلة للوصول من الإنترنت، يجب علينا إعداد توجيه المنفذ.
الخطوة 1: تحديد عنوان IP العام الخاص بك
أولاً، لنسترجع عنوان IP العام لاتصال الإنترنت الخاص بك :
# Plusieurs méthodes au choix
curl ifconfig.me
curl ipecho.net/plain
wget -qO- http://ipecho.net/plain
# Ou encore
curl -s checkip.amazonaws.com
هذا عنوان IP هو الذي سيستخدمه مستخدمو الإنترنت للوصول إلى خدمتك.
الخطوة 2: معرفة عنوان IP المحلي لجهازك أوبونتو
جهاز Ubuntu الخاص بك له عنوان IP خاص على شبكتك المحلية. لمعرفته:
# Afficher toutes les interfaces réseau
ip addr show
# Ou plus spécifiquement pour l'interface principale
ip route get 1.1.1.1 | awk '{print $7; exit}'
# Alternative avec hostname
hostname -I | awk '{print $1}'
لاحظ هذا العنوان (على سبيل المثال`192.168.1.100`), سنحتاج إليه للإعداد.
الخطوة 3: تكوين إعادة توجيه المنفذ على جهازك
تختلف الإعدادات حسب طراز جهازك، لكن المبدأ يبقى هو نفسه:
الوصول إلى واجهة الإدارة
افتح متصفحك وتوجه إلى واجهة الويب الخاصة بصندوقك :
-
Freebox:`192.168.1.1` ou
mafreebox.freebox.fr -
Livebox Orange :
192.168.1.1 -
إس إف آر بوكس:`192.168.1.1`
-
Bbox Bouygues:`192.168.1.254`
إعداد إعادة التوجيه
ابحث عن القسم المخصص لتوجيه المنافذ (قد تختلف الأسماء) :
-
إعادة توجيه المنافذ
-
NAT/PAT
-
إعادة توجيه المنافذ
-
خوادم الألعاب
أنشئ قاعدة جديدة بهذه الإعدادات :
| حقل | قيمة |
|---|---|
الاسم/الوصف |
خدمة ويب أوبنتو" (أو اسم صريح آخر) |
المنفذ الخارجي (أو المنفذ العام) |
8080 |
عنوان IP داخلي |
عنوان IP لجهاز Ubuntu الخاص بك (مثال: 192.168.1.100) |
منفذ داخلي (أو منفذ خاص) |
8080 |
بروتوكول |
TCP |
الحالة |
مفعل |
الخطوة 4: إعداد الخدمة على أوبنتو
تأكد من أن خدمتك تستمع على جميع الواجهات، وليس فقط على localhost :
# ✅ Correct : écoute sur toutes les interfaces
python3 -m http.server 8080 --bind 0.0.0.0
# ❌ Incorrect : écoute seulement en local
python3 -m http.server 8080 --bind 127.0.0.1
لتتحقق من أن خدمتك تستمع بشكل صحيح :
# Vérifier les ports en écoute
sudo netstat -tlnp | grep :8080
# ou avec ss (plus moderne)
sudo ss -tlnp | grep :8080
يجب أن ترى شيئًا مثل`0.0.0.0:8080`وليس`127.0.0.1:8080`.
الخطوة 5: تكوين جدار الحماية Ubuntu
أوبنتو يستخدم UFW (جدار الحماية غير المعقّد) افتراضيًا. تحقق من حالته وافتح المنفذ إذا لزم الأمر :
# Vérifier le statut du pare-feu
sudo ufw status
# Si le pare-feu est actif, autoriser le port 8080
sudo ufw allow 8080/tcp
# Ou plus spécifiquement pour un service web
sudo ufw allow 'Apache' # si vous utilisez Apache
sudo ufw allow 'Nginx Full' # si vous utilisez Nginx
الخطوة 6: الاختبار والتحقق
اختبار من الشبكة المحلية
أولاً، اختبر الوصول من جهاز آخر في شبكتك المحلية :
# Remplacez par l'IP locale de votre machine Ubuntu
curl http://192.168.1.100:8080
اختبار من الخارج
الآن، اختبر من الإنترنت باستخدام عنوان IP العام:
# Remplacez par votre IP publique
curl http://VOTRE_IP_PUBLIQUE:8080
يمكنك أيضًا استخدام أدوات عبر الإنترنت مثل:
الممارسات الجيدة والأمان
التأمين الأساسي
# Configurer fail2ban pour protéger contre les attaques par force brute
sudo apt update && sudo apt install fail2ban
# Limiter l'accès avec UFW (exemple : autoriser seulement certaines IP)
sudo ufw allow from 203.0.113.0/24 to any port 8080
مراقبة الاتصالات
# Surveiller les connexions en temps réel
sudo netstat -an | grep :8080
# Logs des connexions (selon votre application)
sudo tail -f /var/log/nginx/access.log # pour Nginx
sudo journalctl -f -u your-service # pour un service systemd
استخدام الوكيل العكسي
لأمان ومرونة أفضل، ضع في الاعتبار استخدام وكيل عكسي مثل Nginx:
server {
listen 80;
server_name votre-domaine.com;
location / {
proxy_pass http://localhost:8080;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
}
}
بدائل لتحويل المنفذ
حلول سحابية
-
ngrok: نفق آمن مؤقت
-
نفق كلاودفلير: حل مجاني وآمن
-
serveo.netنفق SSH بسيط
# Exemple avec ngrok
ngrok http 8080
# Exemple avec serveo
ssh -R 80:localhost:8080 serveo.net
VPS ووكيل عكسي
للاستخدام المهني، فكر في استخدام VPS مع بروكسي عكسي يوجه إلى البنية التحتية المحلية عبر VPN.
استكشاف الأخطاء وإصلاحها
مشاكل شائعة
| مشكلة | حل |
|---|---|
الخدمة غير متوفرة من الخارج |
تحقق من إعدادات تحويل المنفذ وتأكد من أن الخدمة تستمع على 0.0.0.0 |
الاتصال مرفوض |
الخدمة ليست قيد التشغيل أو تستمع على 127.0.0.1 فقط |
انتهاء مهلة الاتصال |
مشكلة في جدار الحماية (صندوق أو أوبنتو) أو إعادة توجيه المنفذ غير مُكوّنة بشكل صحيح |
IP العامة تتغير بانتظام |
قم بتكوين DNS ديناميكي (DynDNS، No-IP، إلخ) |
تصحيح الشبكة
# Tester la connectivité locale
telnet localhost 8080
# Tester depuis une autre machine du réseau
telnet 192.168.1.100 8080
# Vérifier les routes réseau
ip route show
# Analyser le trafic réseau
sudo tcpdump -i any port 8080
الخاتمة
عرض خدمة محلية على الإنترنت يتطلب تكوينًا دقيقًا لتوجيه المنافذ والأمان والمراقبة. بينما تكون هذه الطريقة مثالية للتطوير أو المشاريع الشخصية، فكر في البدائل الأكثر قوة (VPS، CDN، خدمات السحابة) للاستخدام في الإنتاج.
الأهم هو أن تبقي الأمان دائمًا في ذهنك: استخدم كلمات مرور قوية، قم بتحديث نظامك بانتظام، وراقب الوصول إلى خدماتك المكشوفة.
لا تتردد في مشاركة تجاربك وأسئلتك في التعليقات !