Izložite lokalni servis na Internet iz Ubuntu: sveobuhvatni vodič za preusmeravanje porta
Објављено 28 May 2025
- Проблема: NAT и приватне адресе
- Корак 1: Идентификујте вашу јавну IP адресу
- Корак 2: Познайте локалну IP адресу вашег Ubuntu рачунара
- Korak 3: Podešavanje preusmeravanja porta na vašem ruteru
- Корак 4: Конфигурација услуге на Ubuntu
- Корак 5 : Конфигурација Убунту фајрволу
- Korak 6 : Test i validacija
- Dobre prakse i bezbednost
- Alternative za preusmeravanje porta
- Otklanjanje poteškoća
- Zaključak
-
Pretpostavljeni preuslovi : osnovno znanje Ubuntu-a, terminala, osnovni koncepti mreže
-
Tehnički pojmovi : NAT, preusmeravanje porta, vatrozidni zid, reverzni proxy
-
Системске команде : коришћење терминала, конфигурација мреже
-
Napredne sekcije : monitoring, bezbednost, alternative u oblaku
Проблема: NAT и приватне адресе
Podrazumevano vaš internetski ruter koristi NAT (Network Address Translation) da dele jednu javnu IP adresu između svih uređaja vaše kućne mreže. Vaši lokalni uređaji koriste privatne IP adrese (192.168.x.x, 10.x.x.x, itd.) koje nisu rutabilne na Internetu.
Kada pokrenete uslugu na vašoj Ubuntu mašini (npr. web server na portu 8080), ona je dostupna samo iz vaše lokalne mreže. Da bi je učinili dostupnom iz Interneta, moramo da podesimo preusmeravanje porta.
Корак 1: Идентификујте вашу јавну IP адресу
Prvo, preuzmimo javnu IP adresu vaše internet veze:
# 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 рачунара
Vaša Ubuntu mašina ima privatnu IP adresu na vašoj lokalnoj mreži. Da biste je saznali:
# 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`), ćemo nam biti potrebno za konfiguraciju.
Korak 3: Podešavanje preusmeravanja porta na vašem ruteru
Konfiguracija varira u zavisnosti od modela vašeg uređaja, ali princip ostaje isti:
Приступ administracijskom interfejsu
Otvorite svoj pretraživač i idite na web interfejs svojeg rutera :
-
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`
Конфигурација преусмеравања
Pronađite sekciju posvećenu prosleđivanju porta (nazivi variju) :
-
Преусмеравање порта
-
NAT/PAT
-
Преузимање порта
-
Игровни сервери
Kreirajte novo pravilo sa ovim parametrima :
| polje | Vrednost |
|---|---|
Назив/Опис |
Ubuntu web usluga (ili drugi jasni naziv) |
Vanjski port (ili javni port) |
8080 |
Unutrašnja IP adresa |
IP vaše Ubuntu mašine (npr: 192.168.1.100) |
Unutrašnj port (ili privatni port) |
8080 |
Protokol |
TCP |
стање |
Активисан |
Корак 4: Конфигурација услуге на Ubuntu
Uverite se da vaša usluga nasluhuje na svim interfejsima, a ne samo na localhostu :
# ✅ 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
Trebalo bi da vidite nešto kao`0.0.0.0:8080`и не`127.0.0.1:8080`.
Корак 5 : Конфигурација Убунту фајрволу
Ubuntu podrazumevano koristi UFW (Uncomplicated Firewall). Proverite njegov status i dozvolite port ako je potrebno :
# 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
Korak 6 : Test i validacija
Тест са локалне мреже
Prvo, testirajte pristup s drugog računala u vašoj lokalnoj mreži :
# Remplacez par l'IP locale de votre machine Ubuntu
curl http://192.168.1.100:8080
Тест изван
Sada, testirajte sa interneta koristeći vašu javnu IP adresu:
# Remplacez par votre IP publique
curl http://VOTRE_IP_PUBLIQUE:8080
Možete takođe koristiti online alate kao:
Dobre prakse i bezbednost
Основна безбедност
# 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 veza
# 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
Коришћење реверзног прокси
Za bolju bezbednost i fleksibilitet, razmotrite korišćenje reverse proxy-ja kao što je 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;
}
}
Alternative za preusmeravanje porta
Решения у облаку
-
ngrokprivremeni sigurnosni tunel
-
Cloudflare Tunnel: besplatno i sigurno rešenje
-
serveo.net: jednostavan SSH tunel
# Exemple avec ngrok
ngrok http 8080
# Exemple avec serveo
ssh -R 80:localhost:8080 serveo.net
VPS i obrnuti proxy
Za profesionalnu upotrebu, razmislite o korišćenju VPS-a sa reverzním proxyom koji kaže na vašu lokalnu infrastrukturu putem VPN-a.
Otklanjanje poteškoća
češći problemi
| Problem | Rešenje |
|---|---|
Usluga nije dostupna izvan |
Proverite konfiguraciju prijenosa porta i da li servis sluša na 0.0.0.0 |
Veza odbacena |
Usluga nije pokrenuta ili sluša samo na 127.0.0.1 |
Истек времена везе |
Problem sa firewallom (box ili Ubuntu) ili pogrešno konfigurisano port forwarding |
Javna IP se redovno menja. |
Konfigurisite dinamički DNS (DynDNS, No-IP, itd.) |
Debug mreže
# 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
Zaključak
Izlaganje lokalnog servisa na Internet zahteva pažljivu konfiguraciju prijenosa porta, sigurnosti i monitoringu. Iako je ovaj pristup savršen za razvoj ili lične projekte, razmotrite jače alternative (VPS, CDN, usluge u oblaku) za proizvodnu upotrebu.
Važno je da uvek imate na umu bezbednost: koristite jače lozinke, redovno ažurirajte svoj sistem i pratite pristup vašim izloženim uslugama.
Ne sumnjajte da podelite vaša iskustva i pitanja u komentari!