جمهور هدف : متوسط
  • پیش‌نیازهای فرض‌شده : دانش پایه اوبونتو، ترمینال، مفاهیم اولیه شبکه

  • مفاهیم فنی : NAT, پورت فورواردینگ, دیوار آتش, پروکسی معکوس

  • دستورات سیستم : استفاده از ترمینال، تنظیم شبکه

  • bخش‌های پیشرفته : مانیتورینگ, امنیت, جایگزین‌های ابر

مشکل: NAT و آدرس‌های خصوصی

مشکل : آیا در حال توسعه یک برنامه وب روی máy Ubuntu خود هستید و می‌خواهید آن را از خارج از شبکه خانگی خود قابل دسترسی کنید؟ شما در جای مناسب هستید! در این مقاله، ما به شما نشان می‌دهیم که چگونه یک سرویس محلی (مثلاً روی پورت 8080) را به اینترنت با تنظیم پورت فورواردینگ (port forwarding) در مودم خود نشان دهیم.

به‌طور پیش‌فرض، جعبه اینترنت شما از NAT (Network Address Translation) برای به اشتراک گذاشتن یک آدرس IP عمومی واحد بین تمام دستگاه‌های شبکه خانگی شما استفاده می‌کند. ماشین‌های محلی شما از آدرس‌های IP خصوصی (192.168.x.x، 10.x.x.x، …​) استفاده می‌کنند که روی اینترنت قابل مسیریابی نیستند.

وقتی یک سرویس را در ماشین اوبونتو خود (مثلاً یک سرور وب روی پورت ۸۰۸۰) راه‌اندازی می‌کنید، آن تنها از شبکه محلی شما قابل دسترسی است. برای دسترسی از اینترنت، باید یک انتقال پورت (پورت forwarding) تنظیم کنیم.

مرحله 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 همان آدرسی است که کاربران اینترنت برای دسترسی به سرویس شما از آن استفاده خواهند کردند.

مرحله ۲: آدرس IP محلی ماشین اوبونتو خود را بشناسید

ماشین اوبونتو شما یک آدرس 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 : تنظیم پورت فورواردینگ روی جعبه شما

پیکربندی بسته به مدل جعبه شما متفاوت است، اما اصل یکسان می‌ماند:

دسترسی به رابط مدیریت

مرورگر خود را باز کنید و به رابط وب جعبه خود مراجعه کنید :

  • فری‌باکس : 192.168.1.1 ou mafreebox.freebox.fr

  • Livebox Orange : 192.168.1.1

  • صندوق SFR : 192.168.1.1

  • Bbox Bouygues : 192.168.1.254

تنظیم هدایت

بخش اختصاصی به port forwarding را جستجو کنید (نام‌ها متغیر است):

  • هدایت پورت

  • ترجمه آدرس شبکه/ترجمه پورت

  • پورت فورواردینگ

  • سرورهای بازی

یک قانون جدید با این پارامترها ایجاد کنید

میدان ارزش

نام/توضیحات

وب سرویس اوبونتو (یا نام صریح دیگر)

پورت خارجی (یا پورت عمومی)

8080

آدرس IP داخلی

آی‌پی ماشین اوبونتو شما (مثلاً: 192.168.1.100)

پرت داخلی (یا پرت خصوصی)

8080

پروتکل

TCP

وضعیت

فعال

مرحله ۴: پیکربندی سرویس روی اوبونتو

اطمینان حاصل کنید که سرویس شما بر روی همه اینترفیس‌ها گوش می‌دهد، نه فقط بر روی 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`.

مرحله ۵: تنظیمات فایروال اوبونتو

Ubuntu از UFW (Uncomplicated Firewall) به‌صورت پیش‌فرض استفاده می‌کند. وضعیت آن را بررسی کنید و در صورت نیاز، پورت را مجاز کنید :

# 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

مرحله ۶: تست و اعتبارسنجی

تست از شبکه محلی

اولاً، دسترسی را از یک دستگاه دیگر در شبکه محلی خود تست کنید :

# Remplacez par l'IP locale de votre machine Ubuntu
curl http://192.168.1.100:8080

تست از بیرون

اکنون، از اینترنت با استفاده از آی‌پی عمومی خود تست کنید :

# 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

استفاده از یک پروکسی معکوس

برای امنیت و انعطاف‌پذیری بهتر، استفاده از یک reverse proxy مانند 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: تونل امن موقت

  • تونل Cloudflare: راه‌حل رایگان و امن

  • serveo.net: تونل SSH ساده

# Exemple avec ngrok
ngrok http 8080

# Exemple avec serveo
ssh -R 80:localhost:8080 serveo.net

VPS و پروکسی معکوس

برای استفاده حرفه‌ای، در نظر بگیرید استفاده از یک VPS با یک پروکسی معکوس که به زیرساخت محلی شما از طریق VPN اشاره دارد.

رفع اشکال

مشاكل شائعة

مشکل حل

سرویس از خارج در دسترس نیست

پیکربندی port forwarding را بررسی کنید و اطمینان حاصل کنید که سرویس روی 0.0.0.0 گوش می‌دهد.

اتصال رد شد

سرویس شروع نشده یا فقط روی 127.0.0.1 گوش می‌دهد

زمان انقضای اتصال

مشکل فایروال (باکس یا اوبونتو) یا پورت فورواردینگ به‌طور نادرست تنظیم شده

آی‌پی عمومی به‌صورت منظم تغییر می‌کند

یک 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

نتیجه

نمایش یک سرویس محلی در اینترنت نیازمند تنظیم دقیق port forwarding، امنیت و مانیتورینگ است. اگرچه این روش برای توسعه یا پروژه‌های شخصی مناسب است، به گزینه‌های قوی‌تری مانند VPS، CDN و خدمات ابری برای استفاده در محیط تولید فکر کنید.

اهم این است که همیشه امنیت را در ذهن داشته باشید: از رمزهای عبور قوی استفاده کنید، سیستم خود را منظماً بروز کنید و دسترسی به خدمات در معرض دسترسی خود را نظارت کنید.

نترسید از به اشتراک گذاشتن تجربیات و سوالات خود در نظرات!

مقالات مرتبط