Een lokale service op internet blootstellen vanaf Ubuntu: Volledige gids over poortforwarding
Gepubliceerd op 28 May 2025
- Het probleem: NAT en privéadressen
- Stap 1: Identificeer uw publiek IP-adres
- Stap 2: Het lokale IP-adres van uw Ubuntu-machine kennen
- Stap 3: Poortforwarding configureren op uw box
- Stap 4 : Configuratie van de service op Ubuntu
- Stap 5: Configuratie van de Ubuntu-firewall
- Stap 6: Test en validatie
- Goede praktijken en veiligheid
- Alternatieven voor poortforwarding
- Probleemoplossing
- Conclusie
-
Veronderstelde voorkennis : basiskennis van Ubuntu, de terminal, basis netwerkconcepten
-
Technische concepten : NAT, poortdoorsturen, firewall, omgekeerde proxy
-
Systeemopdrachten : gebruik van de terminal, netwerkconfiguratie
-
Geavanceerde secties : monitoring, beveiliging, cloudalternatieven
Het probleem: NAT en privéadressen
Standaard gebruikt uw internetbox NAT (Network Address Translation) om één publiek IP-adres te delen tussen alle apparaten in uw thuisnetwerk. Uw lokale machines gebruiken privé-IP-adressen (192.168.x.x, 10.x.x.x, enz.) die niet routeerbaar zijn op het internet.
Wanneer je een service start op je Ubuntu‑machine (bijvoorbeeld een webserver op poort 8080), is deze alleen toegankelijk vanaf je lokale netwerk. Om het bereikbaar te maken vanuit Internet, moeten we een poortomleiding configureren.
Stap 1: Identificeer uw publiek IP-adres
Eerst, laten we het publieke IP-adres van uw internetverbinding ophalen:
# 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
Dit IP-adres is het adres dat internetgebruikers zullen gebruiken om toegang te krijgen tot uw dienst.
Stap 2: Het lokale IP-adres van uw Ubuntu-machine kennen
Uw Ubuntu-machine heeft een privé IP-adres op uw lokale netwerk. Om dit te weten te komen:
# 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}'
Noteer dit adres (bijvoorbeeld`192.168.1.100`We zullen het nodig hebben voor de configuratie.
Stap 3: Poortforwarding configureren op uw box
De configuratie varieert afhankelijk van het model van uw box, maar het principe blijft hetzelfde:
Toegang tot de beheerinterface
Open uw webbrowser en ga naar de webinterface van uw 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`
Instelling van de omleiding
Zoek de sectie gewijd aan poortdoorsturing (de namen variëren) :
-
Poortdoorsturing
-
NAT/PAT
-
Poortdoorsturen
-
Spelservers
Maak een nieuwe regel met deze paramètres :
| veld | waarde |
|---|---|
Naam/Beschrijving |
Service Web Ubuntu" (of een andere expliciete naam) |
Externe poort (of openbare poort) |
8080 |
Interne IP-adres |
Het IP van je Ubuntu-machine (bijv. 192.168.1.100) |
interne poort (of privé poort) |
8080 |
Protocol |
TCP |
staat |
geactiveerd |
Stap 4 : Configuratie van de service op Ubuntu
Zorg ervoor dat uw service luistert op alle interfaces, niet alleen op 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
Om te controleren of uw service correct luistert:
# Vérifier les ports en écoute
sudo netstat -tlnp | grep :8080
# ou avec ss (plus moderne)
sudo ss -tlnp | grep :8080
Je zou iets moeten zien zoals`0.0.0.0:8080`en niet`127.0.0.1:8080`.
Stap 5: Configuratie van de Ubuntu-firewall
Ubuntu maakt standaard gebruik van UFW (Uncomplicated Firewall). Controleer de status en open de poort indien nodig :
# 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
Stap 6: Test en validatie
Test vanaf het lokale netwerk
Eerst, test de toegang vanaf een andere machine in uw lokale netwerk:
# Remplacez par l'IP locale de votre machine Ubuntu
curl http://192.168.1.100:8080
Test van buitenaf
Nu test vanaf internet met uw publieke IP-adres:
# Remplacez par votre IP publique
curl http://VOTRE_IP_PUBLIQUE:8080
U kunt ook online tools gebruiken:
Goede praktijken en veiligheid
basisbeveiliging
# 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
Monitoring van verbindingen
# 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
Gebruik van een reverse proxy
Voor betere veiligheid en flexibiliteit, overweeg het gebruik van een reverse proxy zoals 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;
}
}
Alternatieven voor poortforwarding
cloudoplossingen
-
ngrok: tijdelijk veilige tunnel
-
Cloudflare Tunnelgratis en veilige oplossing
-
serveo.net: simpele SSH-tunnel
# Exemple avec ngrok
ngrok http 8080
# Exemple avec serveo
ssh -R 80:localhost:8080 serveo.net
VPS en reverse proxy
Voor professioneel gebruik, overweeg het gebruik van een VPS met een reverse proxy dat via VPN naar uw lokale infrastructuur wijst.
Probleemoplossing
Algemene problemen
| Probleem | Oplossing |
|---|---|
Service niet toegankelijk vanaf buiten |
Controleer de configuratie van de poortdoorsturing en dat de service luistert op 0.0.0.0 |
Verbinding geweigerd |
De service is niet gestart of luistert alleen op 127.0.0.1 |
Verbindingstimeout |
Firewallprobleem (box of Ubuntu) of verkeerd geconfigureerde port forwarding |
Openbare IP verandert regelmatig |
Configureer een dynamische DNS (DynDNS, No-IP, enz.) |
netwerkdebug
# 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
Conclusie
Het blootstellen van een lokale dienst op internet vereist een zorgvuldige configuratie van poortforwarding, beveiliging en monitoring. Hoewel deze aanpak perfect is voor ontwikkeling of persoonlijke projecten, overweeg robuustere alternatieven (VPS, CDN, clouddiensten) voor productiegebruik.
Het belangrijkste is om altijd veiligheid in gedachten te houden: gebruik sterke wachtwoorden, werk uw systeem regelmatig bij, en houd de toegang tot uw blootgestelde diensten in de gaten.
Aarzel niet om uw ervaringen en vragen in de reacties te delen!