Como usamos tunelamento de rede para criar um servidor de minecraft.
Tags: tunelamento, aws, minecraft, servidor
Published: 2024-07-01 08:00:44

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](https://github.com/fatedier/frp/releases/tag/v0.58.1)

![Image description](https://dev-to-uploads.s3.amazonaws.com/uploads/articles/lkqopsz6rpt1sitqbuvp.png)

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 <link-do-arquivo>**

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](https://github.com/fatedier/frp/releases/tag/v0.58.1), 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
```
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](https://dev-to-uploads.s3.amazonaws.com/uploads/articles/jfs2auk9zb2hoeajg2h0.png)

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!