Ir para conteúdo
  • Cadastre-se

Expondo servidor publicamente através de encaminhamento via SSH (proxy)


coldplay

Posts recomendados

Nattan Felipe
Esse post foi reconhecido por Nattan Felipe!

coldplay foi premiado com o selo 'Útil ' e 100 pontos.

Esse procedimento permite que seu servidor fique acessível fora da sua rede mesmo quando não é possível abrir as portas do seu roteador. Mas também pode ser útil para atuar como um proxy, escondendo o endereço de IP real da máquina onde ele está hospedado. É semelhante ao que o

O conteúdo está oculto, favor efetuar login ou se cadastrar!
faz.

Um dos melhores casos de uso pra mim é utilizar o modo de depuração do eclipse no meu computador e ainda permitir que outras pessoas se conectem mesmo sem VPN, assim é possível fazer alterações no código e terem elas aplicadas imediatamente, sem a necessidade de compilar novamente.

E já que o gameserver não irá ser executado no VPS, não é necessário uma máquina poderosa. Utilizei uma com apenas 1GB de memória RAM e 1 CPU e funcionou sem problemas, e ainda deve funcionar em especificações mais inferiores ainda.

O tutorial abaixo foi feito utilizando o Ubuntu Server 2024 e aCis 409.

1. Ajustar o arquivo de configuração do ssh do VPS

Em um terminal com acesso root execute $ nano /etc/ssh/sshd_config

Procure pela config GatewayPorts, ela está comentada (com um # na frente), remova o "#" e altere o "no" para "yes". Isso permitirá que as portas encaminhadas também estarão disponíveis para endereços externos, e não somente a rede local do VPS.

Depois use CTRL+S para salvar e CTRL+X para sair do editor

image.png.54d152227b049092ffc79b1566c59aed.png

2. Arquivos properties

Insira o endereço de IP da sua VPS no campo Hostname do arquivo loginserver.properties

Mantenha seu localhost (127.0.0.1) no server.properties, para manter seu tráfego na rede local.

3. Arquivo ServerList.java

A aCis irá retornar o IP local sempre que o endereço que estiver acessando for identificado como local também, e isso faz sentido, é o caminho mais curto, só que nesse caso temos um falso positivo.

Quando acontece o redirecionamento do tráfego, todos as conexões que o servidor recebe são "iguais", porque estão todas vindo do mesmo local (o VPS). Ao atuar dessa maneira, ele funciona como um proxy, então acaba ocultando os endereços reais dos players. Todos os clientes conectados terão o mesmo endereço, e como o servidor e o VPS estão conectados através de um túnel, ele será um endereço local. É como se fosse uma rede LAN.

Portanto a alteração que temos que fazer é garantir que o IP da VPS seja enviado nesses casos, ao invés do endereço local. Felizmente isso é simples, basta remover o "address.isSiteLocalAddress()" do método isLocalIp():

O conteúdo está oculto, favor efetuar login ou se cadastrar!

4. L2.ini

Para as outras pessoas, você deve colocar o IP da VPS, nada muda nisso. Mas para você, recomendo colocar seu endereço local (127.0.01), assim seu acesso não percorrerá um caminho desnecessário.

5. Encaminhamento com o SSH

Execute comando abaixo no seu terminal para encaminhar o tráfego externo das portas 2106 (loginserver) e 7777 (gameserver) para o seu computador.

Substitua USER e IP pelos dados da sua VPS

O conteúdo está oculto, favor efetuar login ou se cadastrar!

Se você assim como eu usa linux no PC, então muitas vezes sequer vai ser necessário baixar o ssh porque ele já vem instalado. No windows acredito que você vai ter que instalá-lo, mas é fácil de encontrar tutoriais sobre isso.

Se você precisar encerrar os tuneis criados, acesse o ssh e execute "kill $(lsof -t -i:7777)" ou "kill $(lsof -t -i:2106)"

Para ver as conexões ativas em cada porta, utilize "lsof -i TCP:7777".

Pronto!

 

.

 

Essa imagem abaixo mostra como tudo irá funcionar. Coloquei ela aqui para demonstrar que como agora temos um elemento fazendo a intermediação de toda a comunicação, ele pode acabar adicionado um delay (lag) entre a troca de informações. Se seu VPS está nos EUA, e os players no Brasil, então eles primeiro acessarão essa máquina no exterior, que encaminhará a solicitação ao seu computador local, e a resposta terá que percorrer o caminho inverso. É uma longa viagem. Não será um problema para um servidor de testes, mas se você tiver a oportunidade de obter um VPS mais próximo, é melhor.

ssh_remote_port_forwarding_tunnel-f.png

 

Fontes

O conteúdo está oculto, favor efetuar login ou se cadastrar!

O conteúdo está oculto, favor efetuar login ou se cadastrar!

Editado por coldplay
  • Gostei 2
  • Amei 1
Link para o comentário
Compartilhar em outros sites

  • coldplay changed the title to Expondo servidor publicamente através de encaminhamento via SSH (proxy)

  • L2JBr ADM

Boa noite!
Fantástico essa informação, sempre quis aprender como se fique acessível mesmo não conseguindo abrir as portas de acesso ao servidor.

Obrigado pelo conteúdo!

Você sabia que a L2JBrasil tem uma empresa de Hosting Oficial?
Conheça a L2JCenter.com

L2JBRASIL - 15 anos vendendo SS e flechas em Giran! (Trade / Adena)

Link para o comentário
Compartilhar em outros sites

Top!

3 hours ago, coldplay said:

Portanto a alteração que temos que fazer é garantir que o IP da VPS seja enviado nesses casos, ao invés do endereço local. Felizmente isso é simples, basta remover o "address.isAnyLocalAddress()" do método isLocalIp():

Só uma correção, nesse trecho você diz para remover o address.isAnyLocalAddress(), mas no commit logo abaixo está sendo removido o address.isSiteLocalAddress().

banner2.png.30b4e74bf5d5418afb97fb5eb86809f8.png

Link para o comentário
Compartilhar em outros sites





×
×
  • Criar Novo...

Important Information

We have placed cookies on your device to help make this website better. You can adjust your cookie settings, otherwise we'll assume you're okay to continue.