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

Como Configurar Proxy de Conexão entre ConnectServer e GameServer

Guia avançado para configurar proxy de rede entre ConnectServer e GameServer no MU Online S6, com roteamento, firewall e resolução de erros comuns.

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

Entendendo a Arquitetura ConnectServer → GameServer no S6

O MU Online Season 6 utiliza uma arquitetura de dois estágios para gerenciar conexões de jogadores. O ConnectServer (CS) é o ponto de entrada: ele escuta na porta 44405 e responde ao cliente com a lista de GameServers disponíveis. Quando o jogador seleciona um servidor na tela de login, o cliente fecha a conexão com o CS e abre uma nova conexão diretamente com o GameServer (GS) na porta que foi informada, geralmente 55901 para o primeiro servidor.

Essa separação existe por design: permite que múltiplos GameServers coexistam sob um único ponto de entrada, e facilita a manutenção pois um GS pode ser reiniciado sem derrubar os outros. O problema é que essa separação também cria um ponto onde configurações incorretas de rede causam falhas silenciosas — o cliente conecta no CS, recebe a lista, tenta conectar no GS, e simplesmente não consegue, exibindo apenas "Conectando..." indefinidamente.

A camada de proxy entra nesse fluxo entre o CS e o GS, ou entre o cliente e o CS, dependendo do objetivo: proteção de IP, balanceamento de carga, ou filtragem de pacotes.

Cliente MU
    │
    ▼ porta 44405
ConnectServer
    │ responde com IP:porta do GS
    ▼
    [Proxy Intermediário] ← ponto de configuração deste guia
    │
    ▼ porta 55901
GameServer
    │
    ├── DataServer (porta 55980)
    └── EventChipServer / SubServers
Nota: No S6 padrão, o ConnectServer lê o arquivo ServerList.dat (ou equivalente XML dependendo do build) para saber quais GameServers anunciar. O endereço que ele passa ao cliente deve ser o IP público ou acessível para o jogador, não o IP interno da LAN — esse é o erro mais comum em ambientes VPS.

Configurando o ConnectServer para Redirecionar pelo Proxy

Antes de configurar qualquer proxy, o ConnectServer precisa estar apontando para o endereço correto. Abra o arquivo de configuração do CS (normalmente ConnectServer.ini ou ServerInfo.xml dependendo do seu build de S6) e localize a seção de lista de servidores:

; Exemplo de configuração MainServerInfo (formato .ini comum no S6)
[ServerInfo01]
ServerCode    = 0
ServerName    = Lorencia
ServerAddress = 192.168.1.100   ; ← IP do GameServer VISÍVEL pelo cliente
ServerPort    = 55901
ServerType    = 0
MaxUser       = 200
CurrentUser   = 0

Se você está usando um proxy reverso (ex.: HAProxy ou o próprio serviço de proxy do seu build), o ServerAddress deve apontar para o IP do proxy, não diretamente para o GS. O proxy então encaminha para 127.0.0.1:55901 internamente.

Fluxo com proxy:
Cliente → CS (44405) → recebe proxy_ip:55901
Cliente → Proxy (55901) → GameServer (127.0.0.1:55901 interno)

Fluxo sem proxy (direto):
Cliente → CS (44405) → recebe gs_ip:55901
Cliente → GameServer (55901) diretamente
Atenção: Nunca coloque 127.0.0.1 ou o IP interno da VPN no campo ServerAddress se os jogadores se conectam de fora da rede local. O cliente usa esse endereço literalmente para abrir o socket TCP — se não for acessível de onde o jogador está, a conexão falha silenciosamente.

Regras de Firewall Indispensáveis

O firewall é responsável pela maioria das falhas de conexão que parecem ser problema de configuração do servidor. No Windows Server (ambiente mais comum para MU S6), as regras precisam liberar explicitamente as seguintes portas de entrada:

Portas obrigatórias para MU Online S6:
→ TCP 44405   ConnectServer (entrada de clientes)
→ TCP 55901   GameServer principal (GS Code 0)
→ TCP 55902   GameServer secundário (GS Code 1, se houver)
→ TCP 55980   DataServer (comunicação interna GS ↔ DS)
→ TCP 55960   EventChipServer (opcional, eventos especiais)
→ UDP 44405   Alguns builds usam UDP também no CS

Portas do banco de dados (nunca expor ao público):
→ TCP 1433    SQL Server (apenas localhost ou LAN interna)

Para adicionar a regra no Windows Firewall via PowerShell (sem precisar de interface gráfica):

# Liberar ConnectServer
New-NetFirewallRule -DisplayName "MU ConnectServer" `
  -Direction Inbound -Protocol TCP -LocalPort 44405 -Action Allow

# Liberar GameServer
New-NetFirewallRule -DisplayName "MU GameServer" `
  -Direction Inbound -Protocol TCP -LocalPort 55901 -Action Allow

# Liberar DataServer apenas para IP interno
New-NetFirewallRule -DisplayName "MU DataServer Interno" `
  -Direction Inbound -Protocol TCP -LocalPort 55980 `
  -RemoteAddress 127.0.0.1 -Action Allow
Dica: O DataServer nunca deve ter a porta 55980 exposta para a internet. Ele só precisa se comunicar com o GameServer na mesma máquina ou na LAN interna. Bloquear essa porta externamente elimina um vetor de ataque real contra servidores S6 mal configurados.

Configurando o Proxy Reverso TCP

Para ambientes onde você quer ocultar o IP do GameServer ou adicionar uma camada de filtragem, um proxy TCP simples resolve o problema. O HAProxy é a ferramenta mais usada para isso em ambientes Linux, mas no Windows o Nginx com módulo stream ou até mesmo o socat cumprem o papel.

Exemplo de configuração HAProxy para proxy transparente do GameServer:

# /etc/haproxy/haproxy.cfg — seção stream para MU Online S6

frontend mu_connectserver
    bind *:44405
    mode tcp
    default_backend cs_backend

backend cs_backend
    mode tcp
    server cs_local 127.0.0.1:44405_interno check

frontend mu_gameserver
    bind *:55901
    mode tcp
    default_backend gs_backend

backend gs_backend
    mode tcp
    server gs_local 127.0.0.1:55901_interno check inter 5s rise 2 fall 3

Nessa configuração, o HAProxy escuta nas portas públicas e repassa o tráfego para os processos rodando em portas internas (renomeadas para evitar conflito). O GameServer e o ConnectServer são configurados para escutar apenas em 127.0.0.1 com portas diferentes (ex.: 55901_interno = 55911), e o proxy cuida do bind público.

Diagnóstico de Problemas Comuns de Conexão

Quando a conexão falha, o diagnóstico segue uma ordem específica:

Passo 1: Verificar se o processo está rodando
→ netstat -an | findstr "44405"   (deve mostrar LISTENING)
→ netstat -an | findstr "55901"   (deve mostrar LISTENING)

Passo 2: Verificar conectividade externa
→ telnet SEU_IP_PUBLICO 44405     (deve conectar sem erro)
→ telnet SEU_IP_PUBLICO 55901     (deve conectar sem erro)

Passo 3: Verificar logs do ConnectServer
→ Arquivo ConnectServer.log — procurar por "GameServer connected"
→ Se o GS não aparece conectado ao CS, o problema é entre eles

Passo 4: Verificar o ServerList que o CS está enviando
→ Wireshark no cliente: filtrar por "tcp.port == 44405"
→ O pacote de resposta do CS deve conter IP público válido

Passo 5: Verificar DataServer
→ Se o GS conecta no CS mas jogadores travam no login,
  o DS pode estar falhando — verificar porta 55980 e logs do DS
Dica: Um teste rápido e eficaz: instale o cliente MU na própria máquina do servidor e tente conectar em 127.0.0.1. Se funcionar localmente mas não remotamente, o problema é 100% firewall ou IP configurado incorretamente no ServerList. Se não funcionar nem localmente, o problema é nos processos ou no banco de dados.

Considerações sobre Múltiplos GameServers

O S6 suporta múltiplos GameServers com seus respectivos mapas. Cada servidor de jogo tem um ServerCode único e pode hospedar mapas diferentes. A distribuição padrão em um servidor S6 bem configurado fica assim:

GameServer 0 (Lorencia, Noria, Devias, Dungeon 3 andares)
    → porta 55901

GameServer 1 (Atlans 3 andares, Tarkan, Icarus, Lost Tower 7 andares)
    → porta 55902

GameServer 2 (Aida, Karutan, Kanturu 3 andares, Raklion, Vulcanus)
    → porta 55903

GameServer 3 (Kalima 1-7, Land of Trials, Crywolf Fortress, Acheron)
    → porta 55904

Cada GameServer precisa de sua própria entrada no ServerList.dat e sua própria regra de firewall. O ConnectServer gerencia todos eles e apresenta ao jogador a lista com ocupação em tempo real — por isso o CS precisa de conexão estável com cada GS para reportar o CurrentUser correto.

Quando o Crywolf Fortress é hospedado em um GS dedicado, lembre que a falha no evento Crywolf (quando Balgass não é derrotado) é justamente o gatilho para a queda das Loch's Feathers — ingrediente necessário para as Wings de Nível 3 junto com o Jewel of Creation. Isso afeta diretamente a economia do servidor, então a estabilidade do GS que hospeda Crywolf é crítica.

Monitoramento Contínuo da Conexão entre Processos

Após configurar tudo, implemente monitoramento básico para detectar desconexões entre o CS e os GameServers antes que os jogadores percebam:

# Script PowerShell simples para checar se processos estão escutando
# Salvar como check-mu-ports.ps1 e agendar no Task Scheduler

$portas = @(44405, 55901, 55902, 55980)
$timestamp = Get-Date -Format "yyyy-MM-dd HH:mm:ss"

foreach ($porta in $portas) {
    $conn = netstat -an | Select-String ":$porta\s+.*LISTENING"
    if (-not $conn) {
        # Porta não está escutando — registrar no log
        Add-Content -Path "C:\MUServer\logs\monitor.log" `
            -Value "$timestamp - ALERTA: porta $porta nao esta LISTENING"
    }
}

Agendar esse script a cada 2 minutos no Task Scheduler do Windows garante um histórico de quando cada processo caiu, o que é essencial para diagnosticar quedas intermitentes que são difíceis de reproduzir manualmente.

Perguntas frequentes

O que é o ConnectServer no MU Online S6?

O ConnectServer é o processo responsável por receber as conexões iniciais dos clientes e redirecioná-los para o GameServer correto com base na lista de servidores disponíveis. Ele opera na porta 44405 por padrão e mantém a lista de GameServers ativos. Sem ele, o cliente não consegue nem exibir a tela de seleção de servidor.

Por que o cliente recebe 'Unable to connect to server' mesmo com o GameServer rodando?

Esse erro quase sempre indica que o ConnectServer não está listando o GameServer corretamente, seja por IP incorreto no ServerInfo, porta bloqueada no firewall, ou falha no handshake entre os dois processos. Verifique o arquivo ServerList.dat e os logs do ConnectServer antes de qualquer outra coisa.

É necessário usar proxy reverso para servidores MU Online S6?

Não é obrigatório, mas é altamente recomendado quando o servidor roda em VPS com IP público e você quer proteger o IP real do GameServer, ou quando precisa balancear carga entre múltiplos GameServers. O proxy também permite filtrar pacotes maliciosos antes que cheguem ao processo principal.

O MG e o DL precisam de configurações especiais no GameServer?

Não há nenhuma configuração de proxy diferente por classe. As diferenças relevantes do Magic Gladiator (sem 1ª e 2ª quest, sem Wing L1) e do Dark Lord (stat CMD exclusivo, Lord Emperor como evolução final) são definidas nos arquivos de configuração do GameServer, não na camada de rede. O proxy trata todos os personagens de forma idêntica no nível de conexão TCP.

Como verificar se o ConnectServer está passando o endereço correto para o cliente?

Use o Wireshark ou tcpdump para capturar o pacote C1/C2 de resposta do ConnectServer na porta 44405. O payload deve conter o IP e porta do GameServer no formato legível. Se o IP retornado for 127.0.0.1 mas o cliente está em outra máquina, o ConnectServer está mal configurado no campo ServerAddress do MainServerInfo.

EQ

Equipe ViciadosMU

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

Continue lendo

Artigos relacionados