Pubblico di riferimento : Intermedio
  • Prerequisiti assunti: conoscenze di base di Ubuntu, del terminale, concetti di rete di base

  • Concetti tecnici : NAT, inoltro di porta, firewall, proxy inverso

  • Comandi di sistema: utilizzo del terminale, configurazione di rete

  • Sezioni avanzate : monitoraggio, sicurezza, alternative cloud

Il problema: NAT e indirizzi privati

Problematica : Stai sviluppando un’applicazione web sulla tua macchina Ubuntu e vuoi renderla accessibile dall’esterno della tua rete domestica? Sei nel posto giusto! In questo articolo vedremo come esporre un servizio locale (ad esempio sulla porta 8080) verso Internet configurando il port forwarding sulla tua box internet.

Per impostazione predefinita, la tua box internet utilizza il NAT (Network Address Translation) per condividere un singolo indirizzo IP pubblico tra tutti i dispositivi della tua rete domestica. I tuoi dispositivi locali utilizzano indirizzi IP privati (192.168.x.x, 10.x.x.x, ecc.) che non sono instradabili su Internet.

Quando avvii un servizio sulla tua macchina Ubuntu (ad esempio un server web sulla porta 8080), quello è accessibile solo dalla tua rete locale. Per renderlo accessibile da Internet, dobbiamo configurare un reindirizzamento di porta.

Passo 1: Identifica il tuo indirizzo IP pubblico

Prima di tutto, recuperiamo l’indirizzo IP pubblico della tua connessione Internet :

# 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

Questo indirizzo IP è quello che gli utenti utilizzeranno per accedere al tuo servizio.

Passo 2: Conoscere l’indirizzo IP locale della tua macchina Ubuntu

La tua macchina Ubuntu ha un indirizzo IP privato sulla tua rete locale. Per conoscerlo :

# 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}'

Nota questo indirizzo (ad esempio`192.168.1.100`), ne avremo bisogno per la configurazione.

Passaggio 3: configurare il port forwarding sulla tua box

La configurazione varia in base al modello della tua box, ma il principio rimane lo stesso:

Accesso all’interfaccia di amministrazione

Aprire il browser e accedere all’interfaccia web della box :

  • Freebox : 192.168.1.1 ou mafreebox.freebox.fr

  • Livebox Orange : 192.168.1.1

  • SFR Box:`192.168.1.1`

  • Bbox Bouygues:`192.168.1.254`

Configurazione del reindirizzamento

Cerca la sezione dedicata al port forwarding (i nomi variano):

  • Inoltro porte

  • NAT/PAT

  • inoltro di porta

  • Server di giochi

Crea una nuova regola con questi parametri:

campo Valore

Nome/Descrizione

Servizio Web Ubuntu" (o altro nome esplicito)

Porta esterna (o porta pubblica)

8080

Indirizzo IP interno

L’IP della tua macchina Ubuntu (es: 192.168.1.100)

Porta interna (o porta privata)

8080

Protocollo

TCP

Stato

Attivato

Passo 4 : Configurazione del servizio su Ubuntu

Assicurati che il tuo servizio ascolti su tutte le interfacce, non solo sul 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

Per verificare che il tuo servizio ascolti correttamente:

# Vérifier les ports en écoute
sudo netstat -tlnp | grep :8080
# ou avec ss (plus moderne)
sudo ss -tlnp | grep :8080

Dovresti vedere qualcosa come`0.0.0.0:8080`e non`127.0.0.1:8080`.

Passo 5: configurazione del firewall Ubuntu

Ubuntu utilizza UFW (Firewall Semplificato) per impostazione predefinita. Verifica il suo stato e consenti la porta se necessario :

# 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

Passo 6 : Test e validazione

Test dalla rete locale

Prima, testa l’accesso da un’altra macchina della tua rete locale :

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

Test dall’esterno

Ora, prova da Internet utilizzando il tuo indirizzo IP pubblico :

# Remplacez par votre IP publique
curl http://VOTRE_IP_PUBLIQUE:8080

Puoi anche utilizzare strumenti online come :

Buone pratiche e sicurezza

Sicurezza di base

# 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

Monitoraggio delle connessioni

# 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

Uso di un reverse proxy

Per una maggiore sicurezza e flessibilità, considera l’utilizzo di un reverse proxy come 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;
    }
}

Alternative al port forwarding

Soluzioni cloud

  • ngroktunnel sicuro temporaneo

  • Cloudflare Tunnelsoluzione gratuita e sicura

  • serveo.net: tunnel SSH semplice

# Exemple avec ngrok
ngrok http 8080

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

VPS e proxy inverso

Per un uso professionale, considera l’utilizzo di un VPS con un reverse proxy che punta verso la tua infrastruttura locale tramite VPN.

risoluzione dei problemi

Problemi comuni

Problema soluzione

Servizio inaccessibile dall’esterno

Controlla la configurazione del forwarding delle porte e che il servizio ascolti su 0.0.0.0

Connessione rifiutata

Il servizio non è avviato o ascolta solo su 127.0.0.1

Timeout di connessione

Problema di firewall (box o Ubuntu) o port forwarding mal configurato

L’IP pubblico cambia regolarmente

Configura un DNS dinamico (DynDNS, No-IP, etc.)

Debug rete

# 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

Conclusione

Esponere un servizio locale su Internet richiede una configurazione accurata del port forwarding, della sicurezza e del monitoraggio. Sebbene questo approccio sia perfetto per lo sviluppo o i progetti personali, considera alternative più robuste (VPS, CDN, servizi cloud) per l’uso in produzione.

L’importante è tenere sempre presente la sicurezza: usa password forti, aggiorna regolarmente il tuo sistema e monitora gli accessi ai tuoi servizi esposti.

Non esitate a condividere le vostre esperienze e domande nei commenti!

Articoli correlati