# 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
28 May 2025
Prérequis assumés : connaissance de base d’Ubuntu, du terminal, concepts réseau de base
Concepts techniques : NAT, port forwarding, pare-feu, reverse proxy
Commandes système : utilisation du terminal, configuration réseau
Sections avancées : monitoring, sécurité, alternatives cloud
Vous développez une application web sur votre machine Ubuntu et souhaitez la rendre accessible depuis l’extérieur de votre réseau domestique ? Vous êtes au bon endroit ! Dans cet article, nous allons voir comment exposer un service local (par exemple sur le port 8080) vers Internet en configurant le port forwarding sur votre box internet.
Par défaut, votre box internet utilise le NAT (Network Address Translation) pour partager une seule adresse IP publique entre tous les appareils de votre réseau domestique. Vos machines locales utilisent des adresses IP privées (192.168.x.x, 10.x.x.x, etc.) qui ne sont pas routables sur Internet.
Lorsque vous lancez un service sur votre machine Ubuntu (par exemple un serveur web sur le port 8080), celui-ci n’est accessible que depuis votre réseau local. Pour le rendre accessible depuis Internet, nous devons configurer une redirection de port.
Avant tout, récupérons l’adresse IP publique de votre connexion 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
Cette adresse IP est celle que les internautes utiliseront pour accéder à votre service.
Votre machine Ubuntu a une adresse IP privée sur votre réseau local. Pour la connaître :
# 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}'
Notez cette adresse (par exemple 192.168.1.100
), nous en aurons besoin pour la configuration.
La configuration varie selon le modèle de votre box, mais le principe reste le même :
Ouvrez votre navigateur et rendez-vous sur l’interface web de votre 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
Cherchez la section dédiée au port forwarding (les noms varient) :
"Redirection de ports"
"NAT/PAT"
"Port Forwarding"
"Serveurs de jeux"
Créez une nouvelle règle avec ces paramètres :
Champ | Valeur |
---|---|
Nom/Description |
"Service Web Ubuntu" (ou autre nom explicite) |
Port externe (ou port public) |
8080 |
Adresse IP interne |
L’IP de votre machine Ubuntu (ex: 192.168.1.100) |
Port interne (ou port privé) |
8080 |
Protocole |
TCP |
État |
Activé |
Assurez-vous que votre service écoute sur toutes les interfaces, pas seulement sur 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
Pour vérifier que votre service écoute correctement :
# Vérifier les ports en écoute
sudo netstat -tlnp | grep :8080
# ou avec ss (plus moderne)
sudo ss -tlnp | grep :8080
Vous devriez voir quelque chose comme 0.0.0.0:8080
et non 127.0.0.1:8080
.
Ubuntu utilise UFW (Uncomplicated Firewall) par défaut. Vérifiez son statut et autorisez le port si nécessaire :
# 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
D’abord, testez l’accès depuis une autre machine de votre réseau local :
# Remplacez par l'IP locale de votre machine Ubuntu
curl http://192.168.1.100:8080
Maintenant, testez depuis Internet en utilisant votre IP publique :
# Remplacez par votre IP publique
curl http://VOTRE_IP_PUBLIQUE:8080
Vous pouvez également utiliser des outils en ligne comme :
# 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
Pour une meilleure sécurité et flexibilité, considérez l’utilisation d’un reverse proxy comme 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 : tunnel sécurisé temporaire
Cloudflare Tunnel : solution gratuite et sécurisée
serveo.net : tunnel SSH simple
# Exemple avec ngrok
ngrok http 8080
# Exemple avec serveo
ssh -R 80:localhost:8080 serveo.net
Pour un usage professionnel, considérez l’utilisation d’un VPS avec un reverse proxy pointant vers votre infrastructure locale via VPN.
Problème | Solution |
---|---|
Service inaccessible depuis l’extérieur |
Vérifiez la configuration du port forwarding et que le service écoute sur 0.0.0.0 |
"Connection refused" |
Le service n’est pas démarré ou écoute sur 127.0.0.1 uniquement |
"Connection timeout" |
Problème de pare-feu (box ou Ubuntu) ou port forwarding mal configuré |
IP publique change régulièrement |
Configurez un DNS dynamique (DynDNS, No-IP, etc.) |
# 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
Exposer un service local sur Internet nécessite une configuration soigneuse du port forwarding, de la sécurité et du monitoring. Bien que cette approche soit parfaite pour du développement ou des projets personnels, pensez aux alternatives plus robustes (VPS, CDN, services cloud) pour un usage en production.
L’important est de toujours garder la sécurité à l’esprit : utilisez des mots de passe forts, mettez à jour régulièrement votre système, et surveillez les accès à vos services exposés.
N’hésitez pas à partager vos expériences et questions dans les commentaires !