Exposer un service local sur Internet depuis Ubuntu : Guide complet du port forwarding
Publié le 28 May 2025
- 1. Le problème : NAT et adresses privées
- 2. Étape 1 : Identifier votre adresse IP publique
- 3. Étape 2 : Connaître l’adresse IP locale de votre machine Ubuntu
- 4. Étape 3 : Configurer le port forwarding sur votre box
- 5. Étape 4 : Configuration du service sur Ubuntu
- 6. Étape 5 : Configuration du pare-feu Ubuntu
- 7. Étape 6 : Test et validation
- 8. Bonnes pratiques et sécurité
- 9. Alternatives au port forwarding
- 10. Troubleshooting
- 11. Conclusion
-
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.
1. Le problème : NAT et adresses privées
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.
2. Étape 1 : Identifier votre adresse IP publique
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.
3. Étape 2 : Connaître l’adresse IP locale de votre machine Ubuntu
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.
4. Étape 3 : Configurer le port forwarding sur votre box
La configuration varie selon le modèle de votre box, mais le principe reste le même :
4.1. Accès à l’interface d’administration
Ouvrez votre navigateur et rendez-vous sur l’interface web de votre box :
-
Freebox :
192.168.1.1
oumafreebox.freebox.fr
-
Livebox Orange :
192.168.1.1
-
SFR Box :
192.168.1.1
-
Bbox Bouygues :
192.168.1.254
4.2. Configuration de la redirection
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é |
5. Étape 4 : Configuration du service sur Ubuntu
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
.
6. Étape 5 : Configuration du pare-feu Ubuntu
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
7. Étape 6 : Test et validation
7.1. Test depuis le réseau local
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
7.2. Test depuis l’extérieur
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 :
8. Bonnes pratiques et sécurité
8.1. Sécurisation de 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
8.2. Monitoring des connexions
# 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
8.3. Utilisation d’un reverse proxy
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;
}
}
9. Alternatives au port forwarding
9.1. Solutions cloud
-
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
9.2. VPS et reverse proxy
Pour un usage professionnel, considérez l’utilisation d’un VPS avec un reverse proxy pointant vers votre infrastructure locale via VPN.
10. Troubleshooting
10.1. Problèmes courants
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.) |
10.2. Debug réseau
# 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
11. Conclusion
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 !