DEV Community

Pedro Cunha
Pedro Cunha

Posted on • Edited on

5 3 3 3 3

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!

Billboard image

Deploy and scale your apps on AWS and GCP with a world class developer experience

Coherence makes it easy to set up and maintain cloud infrastructure. Harness the extensibility, compliance and cost efficiency of the cloud.

Learn more

Top comments (1)

Collapse
 
reenatoteixeira profile image
Renato Teixeira

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

Billboard image

Create up to 10 Postgres Databases on Neon's free plan.

If you're starting a new project, Neon has got your databases covered. No credit cards. No trials. No getting in your way.

Try Neon for Free →

👋 Kindness is contagious

Please leave a ❤️ or a friendly comment on this post if you found it helpful!

Okay