Desejo criar vários servidores do Minecraft que serão executados em vários servidores da minha rede.
O objetivo principal é ter apenas uma única porta (TCP 25565) voltada para a Internet e, em seguida, passar o nome do host da solicitação (mc.example.com) para o servidor back-end correto.
Existe alguma maneira de conseguir isso? Eu sei que um proxy reverso pode ser usado, mas é para HTTP, então alguma maneira de fazer isso para o Minecraft?
EDIT: como disse @attie, não será possível usar uma única porta IF para vários servidores Minecraft.
Agora, digamos que eu abra um intervalo de 10 portas (25565 a 25575) para esses servidores. O que devo fazer a seguir para tornar isso mais fácil de usar? Quero dizer, redirecionando diretamente o usuário para a porta IF quando ele está entrando em mc.example.com?
Você pode tentar fazer com o Bind9 do Linux (usei Debian com raspberrypi [Raspbian]) com o SVR Records .
Você precisa fazer seu primeiro Domínio, pois para isso você precisa fazer o seguinte:
O texto para cima é o link do arquivo de configuração desse banco de dados de DNS do domínio. (Isso é que você precisa inserir no arquivo o que eu digo para você continuar)
ARQUIVO: /etc/bind/named.conf.localPor exemplo meu domínio desta forma é: origensone.net
É assim que tenho meus servidores Minecraft no meu servidor DNS local:
ARQUIVO: /var/lib/bind/origensone.net.hosts_service . _protocol.name. Porta de peso de prioridade de classe TTL SRV Alvo : _minecraft . _tcp . mcsurvi.origensone.net. SRV 0 5 25566 mcservidortorouter.origensone.net.
O localhost é o IP: 127 . 0 . 0 . 1
Este é um exemplo em registros SVR ; Neste caso estou usando dois subdomínios em ALIAS para poder pegar os dois servidores: origensone.net (domínio):
Quando você tiver isso com o servidor DNS Bind9 e todas as partes concluídas, encontre as instruções aqui para confirmar o que funciona bem no DNS para a porta aqui! .
Ou quando você terminar para confirmar que está tudo bem, você precisa fazer isso:
Isso está no Windows CMD: [Os espaços em cinza são meu IP público para isso são censurados]
Isso está em Raspbian (DnsServer.): [Bloco cinza é meu nome pois está censurado]
Para tentar fazer isso você pode fazê-lo no mesmo servidor ou em outro computador que tenha esse servidor DNS conectado na placa de rede desse host).
E SE funcionar, quando formos fazer um PING para este subdomain.domain o console nos dará o ping correto de 192.168.1.11 ou seja o mesmo IP do Minecraft Hosting Server.
A única razão pela qual isso funciona para HTTP é porque há um
Host:
cabeçalho dentro do protocolo que pode ser inspecionado. Não é possível fazer isso escutando em uma única porta se você também não tiver algo no protocolo que indique para onde a conexão deve ser roteada.Não acredito que o protocolo do Minecraft contenha essas informações extras... Se você está absolutamente 100% restrito a uma única porta voltada para a Internet, suas opções não são fáceis de usar:
Eu recomendo que você ouça em várias portas.
Existe um projeto chamado "Minecraft Redirect Proxy" ( https://github.com/RenegadeEagle/minecraft-redirect-proxy ) que está fazendo exatamente o que você deseja.
@attie O protocolo do Minecraft inclui o nome do host solicitado. É enviado com o primeiro pacote que o servidor recebe.
A configuração também é muito fácil. Aqui um exemplo não testado: