DEV Community

Pedro Cunha
Pedro Cunha

Posted on • Updated on

Como usamos tunelamento de rede para criar um servidor de minecraft.

Anualmente todos nós sentimos a necessidade de jogar Minecraft, seja quando há alguma grande atualização ou queremos relembrar os velhos tempos, e com a atualização da 1.21 não foi diferente, porém, como fugir de serviços grátis e de baixa qualidade como Aternos ou não depender do Hamachi/Radmin para criar um servidor de Minecraft privado?

Isso que nós nos perguntamos quando iniciamos nossa jogatina anual, o mais fácil seria abrir uma porta usando o redirecionamento de porta no roteador e “hostear” o servidor na própria máquina enquanto jogavamos, mas enfrentamos um problema: o provedor de internet. Atualmente existem mais computadores domésticos do que IPv4 no mundo, isso faz com que os provedores não forneçam um IPv4 único para cada rede contratada e dificulte o redirecionamento de porta/aplicações self-hosted na própria casa.

Foi ai que usamos o serviço de EC2 da AWS e um proxy reverso (FRP) para criar um tunelamento entre a rede pública e o servidor que estava rodando localmente na máquina, vamos recapitular tudo:


Configurar uma instância da EC2

Essa parte do trabalho foi realizada pelo @lucas_barros_1e6eb9a9ce38 onde ele me providenciou a chave privada para acessar via SSH a máquina virtual.
É importante liberar as portas 7000 (para conexão com o FRP) e a 25565 (porta padrão do servidor de minecraft).

Configurar o FRP na máquina virtual

O FRP (Fast Reverse Proxy) é uma solução que facilita a criação de túnel de redes para acessar serviços internos de redes privadas através da internet.

Para isso você precisará baixar a versão mais atualizada do FRP compatível com o sistema operacional que você está rodando, no caso da máquina virtual será o linux_amd64.

No momento você pode baixar a versão mais atual através desse link

Image description

Então você precisará acessar via SSH a máquina virtual da AWS com o comando

ssh -i “chave_privada.pem” dns-publico-da-sua-maquina

E para fazer o download do FRP via terminal você pode usar o comando

wget

Após descompactar e acessar o conteúdo da pasta, editaremos o arquivo frps.toml para termos certeza que o conteúdo dele é:
bindPort = 7000

Estamos especificando que a porta 7000 é a que será usada para a conexão entre o FRP do servidor com o FRP da máquina local.
Após isso rodaremos o comando abaixo para iniciar o serviço do FRP no servidor.

./frps -c ./frps.toml &

O “&” é usado para rodar o serviço sem anexar a saída no terminal e assim podemos fechar a conexão com a máquina virtual da AWS sem parar o serviço do FRP.
Com isso podemos começar a configurar o serviço FRP localmente e também o servidor minecraft.

Configurar o ambiente localmente

O primeiro passo é configurar o FRP na sua máquina local e para isso também iremos baixar através do mesmo link, porém no meu caso será a versão windows_amd64.
Após descompactar editaremos o arquivo frpc.toml que deve estar mais ou menos assim

serverAddr = "dns-publico-da-sua-maquina"
serverPort = 7000

[[proxies]]
name = "identificador"
type = "tcp"
localIP = "127.0.0.1"
localPort = 25565
remotePort = 25565
Enter fullscreen mode Exit fullscreen mode

Salvando o arquivo e rodando o comando

frpc.exe -c frpc.toml

É esperado que a conexão com o FRP que está rodando na máquina virtual da AWS seja estabelecida e portanto uma saída parecida com essa será exibida no terminal.

Image description

Como configuramos que a porta usada para o servidor minecraft é a padrão (25565) então idealmente todo o tráfego feito para a porta 25565 da rede da máquina virtual está sendo redirecionado para a porta 25565 da minha rede local, então basta apenas rodar o servidor do minecraft na porta 25565 da minha rede local que os jogadores terão acesso ao servidor de minecraft.

O IP público para o servidor será "dns-publico-da-sua-maquina":25565.

Boa jogatina!

Top comments (1)

Collapse
 
reenatoteixeira profile image
Renato Teixeira

caramba, muito massa! até deu aquela vontade anual de jogar tbm hahaha