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!

Image of Docusign

Bring your solution into Docusign. Reach over 1.6M customers.

Docusign is now extensible. Overcome challenges with disconnected products and inaccessible data by bringing your solutions into Docusign and publishing to 1.6M customers in the App Center.

Learn more

Top comments (1)

Collapse
 
reenatoteixeira profile image
Renato Teixeira

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

Image of Docusign

🛠️ Bring your solution into Docusign. Reach over 1.6M customers.

Docusign is now extensible. Overcome challenges with disconnected products and inaccessible data by bringing your solutions into Docusign and publishing to 1.6M customers in the App Center.

Learn more