وقت القراءة : 15 دقيقة.

الجمهور المستهدف : متوسط

  • المتطلبات المفترضة : معرفة أساسية بـ Ubuntu، والمحطة الطرفية، ومفاهيم الشبكات الأساسية

  • مفاهيم تقنية : NAT, إعادة توجيه المنفذ, جدار ناري, وكيل عكسي

  • أوامر النظام : استخدام الطرفي، تكوين الشبكة

  • الأقسام المتقدمة : المراقبة، الأمان، بدائل السحابة

المشكلة: NAT والعناوين الخاصة

المسألة : أنت تطور تطبيق ويب على جهازك Ubuntu وتريد جعله قابلاً للوصول من خارج شبكتك المنزلية؟ أنت في المكان المناسب! في هذا المقال، سنرى كيف نكشف عن خدمة محلية (على سبيل المثال على المنفذ 8080) على الإنترنت عن طريق إعداد تحويل المنفذ على راوتر الإنترنت الخاص بك.

افتراضيًا، يستخدم صندوق الإنترنت الخاص بك 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، خدمات السحابة) للاستخدام في الإنتاج.

الأهم هو أن تبقي الأمان دائمًا في ذهنك: استخدم كلمات مرور قوية، قم بتحديث نظامك بانتظام، وراقب الوصول إلى خدماتك المكشوفة.

لا تتردد في مشاركة تجاربك وأسئلتك في التعليقات !

Articles connexes