Doelgroep: Gemiddeld
  • 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

Probleemstelling: U ontwikkelt een webapplicatie op uw Ubuntu-machine en wilt deze toegankelijk maken buiten uw thuisnetwerk? U bent op de juiste plaats! In dit artikel laten we zien hoe u een lokale dienst (bijvoorbeeld op poort 8080) naar het internet kunt blootstellen door poortdoorsturing in te stellen op uw internetbox.

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!

Gerelateerde artikelen