.\ _Tempo de leitura: 15 minutos

Público-alvo : Intermediário
  • Pré-requisitos assumidos : conhecimento básico de Ubuntu, terminal, conceitos básicos de rede

  • Conceitos técnicos : NAT, encaminhamento de portas, firewall, proxy reverso

  • Comandos do sistema: utilização do terminal, configuração de rede

  • Seções avançadas : monitoramento, segurança, alternativas cloud

O problema: NAT e endereços privados

Problemática : Você está desenvolvendo um aplicativo web em sua máquina Ubuntu e deseja torná-lo acessível de fora da sua rede doméstica? Você está no lugar certo! Neste artigo, vamos ver como expor um serviço local (por exemplo, na porta 8080) para a Internet configurando o encaminhamento de porta na sua box de internet.

Por padrão, sua caixa de internet utiliza o NAT (Network Address Translation) para compartilhar um único endereço IP público entre todos os dispositivos da sua rede doméstica. Seus dispositivos locais utilizam endereços IP privados (192.168.x.x, 10.x.x.x, etc.) que não são roteáveis na Internet.

Quando você inicia um serviço em sua máquina Ubuntu (por exemplo, um servidor web na porta 8080), ele só é acessível a partir da sua rede local. Para torná-lo acessível a partir da Internet, precisamos configurar um redirecionamento de porta.

Etapa 1: Identificar o seu endereço IP público

Antes de tudo, vamos obter o endereço IP público da sua conexão à 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

Este endereço IP é aquele que os internautas usarão para acessar o seu serviço.

Passo 2: Conheça o endereço IP local da sua máquina Ubuntu

Sua máquina Ubuntu tem um endereço IP privado na sua rede local. Para saber:

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

Anota este endereço (por exemplo`192.168.1.100`), vamos precisar disso para a configuração.

Passo 3: Configurar o encaminhamento de portas na sua box

A configuração varia conforme o modelo da sua caixa, mas o princípio permanece o mesmo:

Acesso à interface de administração

Abra seu navegador e vá para a interface web da sua caixa:

  • Freebox:`192.168.1.1` ou mafreebox.freebox.fr

  • Livebox Orange:`192.168.1.1`

  • Caixa SFR : 192.168.1.1

  • Bbox Bouygues:`192.168.1.254`

Configuração da redireção

Procure a seção dedicada ao encaminhamento de portas (os nomes variam) :

  • Redirecionamento de portas

  • NAT/PAT

  • Encaminhamento de portas

  • Servidores de jogos

Crie uma nova regra com estes parâmetros :

Campo Valor

Nome/Descrição

Serviço Web Ubuntu" (ou outro nome explícito)

Porta externa (ou porta pública)

8080

Endereço IP interno

O endereço IP da sua máquina Ubuntu (ex: 192.168.1.100)

Porta interna (ou porta privada)

8080

Protocolo

TCP

Estado

ativado

Etapa 4: Configuração do serviço no Ubuntu

Certifique-se de que seu serviço esteja escutando em todas as interfaces, não apenas no 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

Para verificar se seu serviço está ouvindo corretamente :

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

Você deveria ver algo como`0.0.0.0:8080`e não`127.0.0.1:8080`.

Passo 5: Configuração do firewall Ubuntu

Ubuntu utiliza o UFW (Uncomplicated Firewall) por padrão. Verifique seu status e permita a porta, se necessário :

# 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

Etapa 6: Teste e validação

Teste a partir da rede local

Primeiro, teste o acesso a partir de outra máquina da sua rede local :

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

Teste de fora

Agora, teste desde a Internet usando seu IP público :

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

Você também pode usar ferramentas on-line como:

Boas práticas e segurança

Segurança básica

# 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

Monitoramento de conexões

# 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

Utilização de um proxy reverso

Para melhor segurança e flexibilidade, considere o uso de um proxy reverso como 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;
    }
}

Alternativas ao encaminhamento de portas

Soluções em nuvem

  • ngroktúnel seguro temporário

  • Túnel Cloudflare: solução gratuita e segura

  • serveo.net: túnel SSH simples

# Exemple avec ngrok
ngrok http 8080

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

VPS e proxy reverso

Para uso profissional, considere usar um VPS com um proxy reverso apontando para sua infraestrutura local via VPN.

Solução de problemas

Problemas comuns

Problema Solução

Serviço inacessível de fora

Verifique a configuração do encaminhamento de portas e que o serviço esteja escutando em 0.0.0.0

Conexão recusada

O serviço não está iniciado ou está escutando apenas em 127.0.0.1

Tempo limite de conexão

Problema de firewall (box ou Ubuntu) ou encaminhamento de portas mal configurado

IP público muda regularmente

Configure um DNS dinâmico (DynDNS, No-IP, etc.)

Depurar rede

# 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

Conclusão

Expor um serviço local na Internet requer uma configuração cuidadosa do encaminhamento de portas, da segurança e do monitoramento. Embora essa abordagem seja perfeita para desenvolvimento ou projetos pessoais, considere as alternativas mais robustas (VPS, CDN, serviços de nuvem) para uso em produção.

O importante é sempre manter a segurança em mente: use senhas fortes, atualize regularmente seu sistema e monitore o acesso aos seus serviços expostos.

Não hesite em compartilhar suas experiências e perguntas nos comentários!

Articles connexes