O maior portal de MU Online do Brasil — desde 2003
Tutorial Avançado Tutoriais

Como Configurar Proxy Reverso para Proteger IP do Servidor MU

Aprenda a configurar um proxy reverso TCP com HAProxy para ocultar o IP real do seu servidor MU Online e resistir a ataques DDoS com dois VPS.

EQ Equipe ViciadosMU · Atualizado em 3 jul 2026 · ⏱ 12 min de leitura

Expor o IP real do seu servidor MU Online é um convite a ataques DDoS. Um único atacante com acesso a ferramentas comuns pode derrubar um VPS sem proteção em minutos. A solução é interpor um proxy reverso TCP em um segundo servidor, de modo que jogadores e atacantes jamais vejam o IP onde o MuServer realmente roda.

Este guia cobre a configuração completa com HAProxy e Nginx (módulo stream) em um VPS de borda separado, além dos ajustes no MuServer e firewall do servidor principal.

Arquitetura da Solução

Jogadores → VPS Proxy/Borda (IP público divulgado) → VPS MuServer (IP real oculto)
             44405, 55901-55910 (TCP)                  44405, 55901-55910

O VPS proxy é o único servidor com portas abertas para a internet. O VPS do MuServer bloqueia todas as conexões externas nessas portas, aceitando apenas tráfego vindo do IP do proxy.

Portas padrão do MU Online que precisam de proxy:

ServiçoPorta TCP
ConnectServer44405
GameServer (por canal)55901, 55902, 55903...
DataServer57900 (raramente exposto)
Nota: Você precisará de dois servidores: o VPS principal onde roda o MuServer e um VPS de borda (pode ser um VPS barato) que funcionará como proxy. O VPS de borda é o único cujo IP será divulgado aos jogadores.

Parte 1 — Proxy TCP com Nginx (stream)

Passo 1: Instalar Nginx com suporte a stream

No VPS proxy (Ubuntu/Debian):

apt update && apt install nginx-full -y
nginx -V 2>&1 | grep -- --with-stream
# Deve aparecer: --with-stream ou --with-stream=dynamic

Passo 2: Configurar o bloco stream no nginx.conf

Edite /etc/nginx/nginx.conf e adicione o bloco stream fora do bloco http, logo antes do fechamento do arquivo:

stream {

    # ConnectServer
    upstream mu_connect {
        server 203.0.113.50:44405;  # IP real do VPS MuServer
    }
    server {
        listen 44405;
        proxy_pass mu_connect;
        proxy_timeout 10m;
        proxy_connect_timeout 5s;
    }

    # GameServer canal 0
    upstream mu_gs1 {
        server 203.0.113.50:55901;
    }
    server {
        listen 55901;
        proxy_pass mu_gs1;
        proxy_timeout 30m;
        proxy_connect_timeout 5s;
    }

    # GameServer canal 1
    upstream mu_gs2 {
        server 203.0.113.50:55902;
    }
    server {
        listen 55902;
        proxy_pass mu_gs2;
        proxy_timeout 30m;
        proxy_connect_timeout 5s;
    }
}
Atenção: Substitua 203.0.113.50 pelo IP real do seu VPS MuServer. Este IP deve ser mantido em absoluto segredo. Nunca o mencione em painéis, fóruns ou logs públicos.

Passo 3: Validar e recarregar

nginx -t
# nginx: configuration file /etc/nginx/nginx.conf test is successful
systemctl reload nginx
systemctl status nginx

Parte 2 — Alternativa com HAProxy

HAProxy oferece health checks automáticos e página de estatísticas, sendo preferível quando há múltiplos GameServers ou balanceamento de carga.

Passo 4: Instalar e configurar HAProxy

apt update && apt install haproxy -y
haproxy -v
# HAProxy version 2.4.x ou superior

Edite /etc/haproxy/haproxy.cfg:

global
    log /dev/log local0
    maxconn 50000
    daemon

defaults
    log     global
    mode    tcp
    option  tcplog
    option  dontlognull
    timeout connect 5s
    timeout client  30m
    timeout server  30m

# ConnectServer
frontend mu_connect_front
    bind *:44405
    default_backend mu_connect_back

backend mu_connect_back
    server vps_real 203.0.113.50:44405 check inter 5s rise 2 fall 3

# GameServer canal 0
frontend mu_gs1_front
    bind *:55901
    default_backend mu_gs1_back

backend mu_gs1_back
    server vps_real 203.0.113.50:55901 check inter 5s rise 2 fall 3

# GameServer canal 1
frontend mu_gs2_front
    bind *:55902
    default_backend mu_gs2_back

backend mu_gs2_back
    server vps_real 203.0.113.50:55902 check inter 5s rise 2 fall 3

# Painel de estatísticas (acesso restrito)
listen stats
    bind *:8404
    mode http
    stats enable
    stats uri /haproxy-stats
    stats auth admin:TrocaPorSenhaForte
    stats refresh 10s
haproxy -c -f /etc/haproxy/haproxy.cfg
systemctl restart haproxy && systemctl enable haproxy

Acesse http://IP_DO_PROXY:8404/haproxy-stats para monitorar conexões ativas e status dos backends em tempo real.

Parte 3 — Ajustes no MuServer

Passo 5: Atualizar CSConfig.ini no ConnectServer

Edite ConnectServer/CSConfig.ini no VPS MuServer:

[CONNECT_SERVER]
Port = 44405
PublicIP = 177.77.77.10        ; IP do VPS proxy — divulgado aos clientes
InternalIP = 0.0.0.0           ; escuta em todas as interfaces locais
MaxConnections = 10000
ServerListFile = ServerList.dat

Passo 6: Atualizar ServerList.dat

O arquivo ConnectServer/ServerList.dat deve referenciar o IP do proxy em cada entrada de GameServer:

[SERVER_INFO]
ServerCode = 0
ServerName = Servidor Principal
ServerAddress = 177.77.77.10   ; IP do proxy, não do VPS real
ServerPort = 55901

Passo 7: Atualizar tabela SQL (Season 6+)

Em servidores Season 6 e posteriores, o ConnectServer lê a lista de servidores do banco de dados:

USE MuOnline;
GO

-- Verificar configuração atual
SELECT ServerCode, ServerName, ServerIp, ServerPort
FROM GameServerInfo
ORDER BY ServerCode;

-- Atualizar todos os GameServers para o IP do proxy
UPDATE GameServerInfo
SET ServerIp = '177.77.77.10'
WHERE ServerCode IN (0, 1, 2);
-- Ajuste os códigos conforme seus canais

GO
Dica: Em versões Season 2-S4, procure o arquivo ConnectServer/ServerList.dat ou ServerInfo.dat. O campo de IP fica geralmente na segunda coluna separada por vírgula ou tabulação. Substitua todas as ocorrências do IP real pelo IP do proxy.

Parte 4 — Firewall no VPS MuServer

Passo 8: Restringir acesso direto às portas MU

No VPS MuServer (Windows Server), abra o PowerShell como Administrador:

$ProxyIP = "177.77.77.10"   # IP do VPS proxy

# Permitir ConnectServer somente do proxy
New-NetFirewallRule -DisplayName "MU ConnectServer via Proxy" `
    -Direction Inbound -Protocol TCP -LocalPort 44405 `
    -RemoteAddress $ProxyIP -Action Allow

# Permitir GameServers somente do proxy
New-NetFirewallRule -DisplayName "MU GameServers via Proxy" `
    -Direction Inbound -Protocol TCP -LocalPort 55901-55910 `
    -RemoteAddress $ProxyIP -Action Allow

# Bloquear acesso externo direto (regra de menor prioridade)
New-NetFirewallRule -DisplayName "MU Block Direct External" `
    -Direction Inbound -Protocol TCP `
    -LocalPort 44405,55901,55902,55903,55904,55905 `
    -Action Block
Atenção: No Windows Firewall, regras de permissão (Allow) prevalecem sobre regras de bloqueio (Block) quando ambas se aplicam ao mesmo pacote. Confirme o comportamento no painel wf.msc antes de encerrar sua sessão de administração. Teste conectando ao servidor antes de fechar o RDP.

Verificação Final

Do VPS proxy, teste a conectividade ao VPS MuServer:

nc -zv 203.0.113.50 44405   # deve retornar "succeeded"
nc -zv 203.0.113.50 55901

Da sua máquina local, teste as portas no proxy:

# Linux/Mac
nc -zv 177.77.77.10 44405

# Windows PowerShell
Test-NetConnection -ComputerName 177.77.77.10 -Port 44405
Test-NetConnection -ComputerName 177.77.77.10 -Port 55901

Confirme que o IP real não aparece para clientes usando Wireshark no cliente do jogo: capture os pacotes na porta 44405 e verifique que o campo ServerAddress nos pacotes 0xF4 retornados pelo ConnectServer exibe o IP do proxy, não 203.0.113.50.

Solução de Problemas

Jogadores não conseguem conectar após a mudança:

  1. Verifique se Nginx/HAProxy está rodando: systemctl status nginx ou systemctl status haproxy
  2. Teste a porta localmente no proxy: nc -zv 127.0.0.1 44405
  3. Confirme que o ConnectServer está rodando no VPS MuServer
  4. Verifique os logs: tail -f /var/log/nginx/error.log ou journalctl -u haproxy -f

O cliente MU mostra "Unable to connect to server":

O executável do cliente ou o connect.ini aponta para o IP antigo. Em clientes Season 6, localize o arquivo connect.ini na pasta do cliente e atualize o campo de IP do ConnectServer para o IP do proxy.

Latência aumentou acima do esperado:

Use um VPS proxy geograficamente próximo ao VPS MuServer, idealmente no mesmo datacenter. A diferença de latência deve ser inferior a 5ms em redes de qualidade. Se ambos estiverem no mesmo datacenter, use o IP de rede interna (10.x.x.x) em vez do IP público para comunicação proxy → MuServer.

Dica: Para recarregar a configuração do HAProxy sem derrubar jogadores conectados, use systemctl reload haproxy. Isso aplica as novas configurações graciosamente, sem fechar conexões TCP existentes.

Perguntas frequentes

Por que usar proxy reverso em vez de apenas firewall?

O firewall filtra tráfego mas ainda expõe o IP real do VPS. Com o proxy reverso, jogadores e atacantes enxergam apenas o IP do nó proxy — o IP do servidor de jogo permanece completamente oculto, mesmo em caso de vazamento via logs de DNS ou análise de pacotes com Wireshark.

O proxy reverso adiciona latência para os jogadores?

Sim, mas de forma mínima. Um proxy na mesma região que seu servidor adiciona tipicamente 2-8ms extras. Para MU Online isso é aceitável; o gargalo real de latência é a distância geográfica entre jogador e servidor, não o salto extra pelo proxy.

Preciso de dois servidores VPS para isso funcionar?

Sim, a arquitetura recomendada usa um VPS barato como nó proxy (1vCPU/1GB RAM é suficiente) e seu VPS principal para o servidor MU. O VPS proxy absorve ou filtra o DDoS enquanto o servidor real permanece inacessível diretamente.

Como atualizar o ConnectServer.ini após mudar para proxy?

Atualize o campo PublicIP ou ServerAddress no CSConfig.ini para o IP do VPS proxy. Em Season 6+, atualize também a tabela GameServerInfo no banco MuOnline via SQL: UPDATE GameServerInfo SET ServerIp = 'IP_DO_PROXY' WHERE ServerCode IN (0,1,2).

É possível fazer proxy TCP para MU Online com Nginx?

Sim, o Nginx com o módulo stream faz proxy TCP nativo. Compile ou instale nginx-full (que inclui --with-stream) e adicione um bloco stream fora do bloco http no nginx.conf com as portas 44405 e 55901-55910.

EQ

Equipe ViciadosMU

Equipe editorial do ViciadosMU — portal de MU Online no ar desde 2003.

Continue lendo

Artigos relacionados