Στόχος : Μέσος
  • Υποτιθέμενες προϋποθέσεις : Βασικές γνώσεις στο Ubuntu, το τερματικό, βασικές δικτυακές έννοιες

  • Τεχνικές έννοιες : NAT, προώθηση θύρας, ταχείο προστασίας, αντίστροπροxy

  • Συστήματικές εντολές : χρήση του τερματικού, διαμόρφωση δικτύου

  • Προχωρημένες ενότητες : παρακολούθηση, ασφάλεια, εναλλακτικές cloud

Το πρόβλημα: NAT και ιδιωτικές διευθύνσεις

Πρόβλημα : Αναπτύσσετε μια εφαρμογή web στον υπολογιστή σας Ubuntu και θέλετε να την κάνετε προσβάσιμη από έξω από το δίκτυο σπιτιού σας; Είστε στο σωστό μέρος! Στο άρθρο αυτό, θα δούμε πώς να εκθέσουμε μια τοπική υπηρεσία (για παράδειγμα στη θύρα 8080) στο Internet ρυθμίζοντας την προώθηση θυρών στο router σας.

Καθ' ορισμού, το router internet σας χρησιμοποιεί το NAT (Network Address Translation) για να μοιράσει μια μόνο δημόσια διεύθυνση IP μεταξύ όλων των συσκευών του δίκτυου σας στο σπίτι. Οι τοπικές μηχανές σας χρησιμοποιούν ιδιωτικές διευθύνσεις IP (192.168.x.x, 10.x.x.x κλπ.) που δεν είναι διαδρόμησιμες στο Internet.

�Όταν ξεκινάτε μια υπηρεσία στην Ubuntu μηχανή σας (π.χ. ένα web server στην θύρα 8080), είναι προσπελάσιμο μόνο από το τοπικό δίκτυό σας. Για να το κάνουμε προσπελάσιμο από το Διαδίκτυο, πρέπει να ρυθμίσουμε μια προώθηση θύρας.

Βήμα 1: Αναγνωρίστε τη δημόσια IP διεύθυνσή σας

Πρώτον, ας ανακτήσουμε τη δημόσια διεύθυνση IP της σύνδεσής σας στο 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

Αυτή η διεύθυνση IP είναι αυτή που οι χρήστες του Διαδικτύου θα χρησιμοποιήσουν για να έχουν πρόσβαση στην υπηρεσία σας.

Βήμα 2: Γνωρίζετε τη διεύθυνση IP τοπικού δικτύου του Ubuntu υπολογιστή σας

Η μηχανή σας Ubuntu έχει μια ιδιωτική διεύθυνση IP στο τοπικό δίκτυό σας. Για να τη γνωρίζετε:

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

Σημειώστε αυτή τη διεύθυνση (για παράδειγμα`192.168.1.100`), θα χρειαστεί για τη ρύθμιση.

Βήμα 3: Ρυθμίστε τη μεταφορά θύρας στο router σας

Η ρύθμιση ποικίlei ανάλογα με το μοντέλο της κουτιάς σας, αλλά η αρχή παραμένει η ίδια :

Πρόσβαση στη διεπαφή διαχείρισης

Άνοιξτε τον περιηγητή σας και πηγαίνετε στην διεπαφή web του 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`

�Ρυθμιστική της ανακατεύθυνσης

Αναζητήστε την ενότητα που είναι αφιωμένη στην προώθηση θυρών (οι ονόματα διαφέρουν):

  • Προώθηση θυρών

  • NAT/PAT

  • Προώθηση Θύρας

  • Σέρβερ παιχνιδιών

Δημιουργήστε έναν νέο κανόνα με αυτές τις ρυθμίσεις :

πεδίο Αξία

Όνομα/Περιγραφή

Υπηρεσία Ιστού Ubuntu" (ή άλλος ρητός όρος)

Εξωτερικός θύρα (ή δημόσια θύρα)

8080

Εσωτερική διεύθυνση IP

Η διεύθυνση IP του υπολογιστή σας Ubuntu (π.χ.: 192.168.1.100)

Εσωτερική θύρα (ή ιδιωτική θύρα)

8080

Πρωτόκολλο

TCP

κατάσταση

Ενεργό

Βήμα 4 : Διαμόρφωση της υπηρεσίας στο Ubuntu

Βεβαιωθείτε ότι η υπηρεσία σας ακούει σε όλες τις διεπαφές, όχι μόνο στο 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

Για να ελέγξετε ότι η υπηρεσία σας ακούει σωστά :

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

�Θα πρέπει να δεις κάτι όπως`0.0.0.0:8080`και όχι`127.0.0.1:8080`.

Βήμα 5 : Ρύθμιση του τείχους πυróυ Ubuntu

Το Ubuntu χρησιμοποιεί το UFW (Uncomplicated Firewall) ως προεπιλογή. Ελέγξτε την κατάσταση και επιτρέψτε την πόρτα αν είναι απαραίτητο:

# 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

Βήμα 6 : Δοκιμή και επικύρωση

Δοκιμή από το τοπικό δίκτυο

Πρώτον, δοκιμάστε τη πρόσβαση από άλλη μηχανή του τοπικού δίκτυου σας:

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

Δοκιμή από έξω

Τώρα, δοκιμάστε από το Internet χρησιμοποιώντας τη δημόσια IP σας :

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

Μπορείτε να χρησιμοποιήσετε διαδικτυακά εργαλεία όπως :

Καλές πρακτικές και ασφάλεια

Βασική ασφάλεια

# 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

Χρήση ενός reverse proxy

Για καλύτερη ασφάλεια και ευελιξία, εξετάστε τη χρήση ενός αντίστροφου proxy όπως το 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;
    }
}

Στήν προώθηση θυρών

Λύσεις cloud

  • ngrokπροσωρινό ασφαλές τόνελ

  • Cloudflare Tunnel: δωρεάν και ασφαλής λύση

  • serveo.net: απλός SSH tunnel

# Exemple avec ngrok
ngrok http 8080

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

VPS και reverse proxy

Σκεφτείτε τη χρήση ενός VPS με έναν αντίστροφο πρόξυ που κατευθύνει προς την τοπική υποδομή σας μέσω VPN.

Ανίχνευση προβλημάτων

Συνηθισμένα προβλήματα

Πρόβλημα Λύση

Υπηρεσία μη προσβάσιμη από το εξωτερικό

Ελέγξτε τη ρύθμιση προώθησης θύρας και ότι η υπηρεσία ακούει στη 0.0.0.0

Η σύνδεση απορρίφθηκε

Η υπηρεσία δεν είναι εκκινημένη ή ακούει μόνο στη 127.0.0.1

Λήξη χρόνου σύνδεσης

Πρόβλημα τείχους προστασίας (box ή Ubuntu) ή κακώς ρυθμισμένο port forwarding

Η δημόσια IP αλλάζει τακτικά

Ρυθμίστε ένα δυναμικό DNS (DynDNS, No-IP, κλπ.)

Διαγνωστικό δίκτυου

# 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

Συμπέρασμα

Η έκθεση μιας τοπικής υπηρεσίας στο Διαδίκτυο απαιτεί προσεκτική ρύθμιση της προώθησης θυρών, της ασφάλειας και της παρακολούθησης. Ανچه αυτή η προσέγγιση είναι τέλεια για ανάπτυξη ή προσωπικά έργα, σκεφτείτε τις πιο ισχυρές εναλλακτικές (VPS, CDN, υπηρεσίες cloud) για χρήση σε παραγωγή.

Το σημαντικό είναι να θυμάστε πάντα την ασφάλεια: χρησιμοποιείτε ισχυρούς κωδικούς, ενημερώνετε τακτικά το σύστημά σας, και παρακολουθείτε την πρόσβαση στα εκτεθειμένα σας υπηρεσίες.

Μην διστάσετε να μοιραστείτε τις εμπειρίες σας και τις ερωτήσεις σας στα σχόλια !

Σχετικά άρθρα