O config.yml define onde o BungeeCord escuta, quais backends conhece e para onde novos jogadores são encaminhados. Gera sempre o ficheiro com a tua versão instalada. Exemplos antigos de blog podem conter campos ou defaults que já não combinam com a build atual.
Uma configuração sintaticamente válida ainda não é uma rede segura. Assim que os backends usam
online-mode=false, a sua porta TCP tem de estar protegida contra ligações diretas. O processo completo está no pilar de configuração do BungeeCord.
Estrutura base segura
online_mode: true
ip_forward: true
player_limit: -1
server_connect_timeout: 5000
remote_ping_timeout: 5000
servers:
lobby:
address: <LOBBY-ADRESSE>:<PORT>
motd: '&aLobby'
restricted: false
survival:
address: <SURVIVAL-ADRESSE>:<PORT>
motd: '&aSurvival'
restricted: false
listeners:
- host: 0.0.0.0:<PROXY-PORT>
motd: '&aA Minha Rede'
priorities:
- lobby
- survival
force_default_server: true
forced_hosts:
survival.example.net: survival
max_players: 100
tab_list: GLOBAL_PING
query_enabled: false
proxy_protocol: false
Os placeholders têm de ser substituídos pelos endereços do painel. Um endereço de backend público no exemplo não é uma autorização para deixar a porta aberta publicamente.
Campos globais
| Campo | Significado | Classificação segura |
|---|---|---|
online_mode |
Autenticação no proxy | para redes premium normais, true |
ip_forward |
IP, UUID e perfil para o backend | necessário, mas não é controlo de acesso |
player_limit |
limite global rígido de jogadores | 0 ou menor significa ilimitado |
server_connect_timeout |
tempo para a ligação ao backend | demasiado baixo gera falsos alarmes, demasiado alto cria esperas longas |
remote_ping_timeout |
timeout para pings ao backend | ping não é o mesmo que uma entrada real |
remote_ping_cache |
cache do estado do backend | pode mostrar temporariamente um estado antigo |
connection_throttle |
janela de tempo para novas ligações | não é uma proteção completa contra bots/DDoS |
forge_support |
suporte adicional para handshake do Forge | verifica a compatibilidade do modloader separadamente |
servers: nomear backends
Cada chave em servers é um nome interno. address tem de estar acessível do ponto de vista do processo do proxy. restricted: true exige a permissão bungeecord.server.<name>, mas não impede acesso direto pela rede à porta do backend.
Evita usar o mesmo domínio público do proxy como endereço de backend: isso pode criar um loop. Usa um endereço concreto interno, privado ou autorizado de outra forma para o proxy.
listeners: entradas públicas
host tem de corresponder à alocação atribuída ao proxy. priorities é a lista ordenada para arranque e fallback. Um erro de digitação como Lobby em vez de lobby basta para que nenhum destino padrão seja encontrado.
force_default_server: true inicia novas ligações através da lógica de prioridades/Forced Host. Com false, o BungeeCord pode tentar restaurar um destino usado anteriormente.
max_players não é player_limit
listeners.*.max_players controla o número de jogadores mostrado na lista de servidores. player_limit é o limite global rígido. Define ambos de forma consciente; uma apresentação bonita não substitui medição de capacidade.
forced_hosts e DNS
forced_hosts associa um hostname a um nome interno de servidor. O DNS continua a apontar para o BungeeCord. Para domínio e porta diferente, usa o guia de domínio/SRV.
Não confundas os campos
proxy_protocolé para um remetente HAProxy/PROXY Protocol colocado à frente, não para o forwarding normal do BungeeCord.query_enabledabre, se necessário, um serviço UDP separado; não o atives por precaução.ping_passthroughassume o MOTD e o estado de um destino, mas torna uma falha do backend mais visível.restrictedé uma permissão do BungeeCord, não uma firewall./greloadnão recarrega de forma fiável todas as alterações de plugins e permissões; planeia um reinício.
Configurar corretamente o lado do backend
Define server.properties como online-mode=false e settings.bungeecord: true em spigot.yml. No Paper, proxies.bungee-cord.online-mode tem de combinar com o online_mode do proxy. Antes de mudares algo, lê o guia de forwarding seguro e cria um backup testado através do caminho de cópia/rollback descrito no guia de mudança de versão.
Validação
- Usa apenas espaços, sem tabs.
- Verifica a indentação e strings com caracteres especiais.
- Compara todos os nomes em
prioritieseforced_hostscomservers. - Reinicia completamente o backend e o proxy.
- Testa TCP, ping do Minecraft e entrada real no lobby separadamente.
- Testa a partir de uma fonte independente se a porta do backend está bloqueada.
Se o BungeeCord não chegar a nenhum lobby, o guia de erros de fallback ajuda. Só depois deste teste base instala plugins de proxy e backend no nível correto.
FAQ
Porque não devo copiar o config.yml de um tutorial?
Porque campos e valores padrão mudam entre builds. Deixa o BungeeCord gerar o ficheiro com a tua versão instalada e transfere daí apenas os valores que realmente queres ajustar. Um campo de um exemplo antigo pode faltar na tua build ou ter outro significado.
Qual é a diferença entre max_players e player_limit?
listeners.*.max_players é apenas apresentação: o número que os clientes veem na lista de servidores. player_limit é o limite global rígido a partir do qual o proxy recusa ligações (0 ou menor significa ilimitado). Define ambos de forma consciente: uma indicação alta não substitui medição de capacidade.
restricted: true basta para proteger um backend?
Não. restricted é uma permissão do BungeeCord e exige bungeecord.server.<name> para a troca através do proxy. Não impede ninguém de contactar diretamente a porta do backend. A proteção aí é firewall ou rede privada, não a configuração do proxy.
Tenho de reiniciar depois de uma alteração, ou /greload chega?
Planeia um reinício. /greload relê a configuração, mas não transfere de forma fiável todas as alterações de plugins e permissões para o estado em execução. Em alterações a listeners, servidores ou forwarding, o reinício completo é o único caminho fiável.
Porque é que o domínio do proxy não pode estar como endereço de backend?
Porque o proxy passaria a contactar-se a si próprio como destino e criaria um loop. Em servers.<name>.address deve estar o endereço pelo qual o processo do proxy alcança o backend: um endereço interno ou privado, não o nome público para o qual o DNS da tua rede aponta.