Vinculando nomes de domínio a números de porta

3

Eu tenho um servidor [game] (CentOS) que tem cerca de 10 portas usadas. Para um jogo em particular, tenho 2 servidores: um privado e um público. O IP para eles é o mesmo, portanto, para diferenciar entre eles, o usuário deve usar mydomain.com:[portnumber]. Existe uma maneira que eu possa configurar o CentOS para tomar automaticamente algo como subdominio.meudominio.com e transformá-lo para mydomain.com:[número_da_porta] ou simples host local: [número_da_porta]? É para isso que serve um DNS?

Obrigado

    
por alecwhardy 10.09.2011 / 08:07

4 respostas

4

Se for completamente seu aplicativo e você tiver controle sobre seu DNS, você poderá definir um SRV record para seu jogo. Seus clientes precisam entender que você definiu um registro _gamename._tcp.example.com SRV para fornecer ao usuário uma maneira de usar example.com para acessar o servidor na porta correta.

Parece complicado e quase inviável se você acabou de usar um servidor de jogos existente e hospedá-lo, mas é a única maneira de incluir um número de porta no DNS.

Se isto não for possile, apenas pegue a porta "normal" para o servidor público (para que o usuário não tenha que se preocupar) e a porta "other" para o servidor privado (onde você tem que especificar o servidor). porta, mas a base de usuários é limitada, então a "soma total de preocupações" é menor.

    
por 10.09.2011 / 09:24
1

Você pode fazer isso editando o arquivo httpd.conf do apache e adicionando o redirecionamento de Hosts Virtuais. Claro que se esse é o seu servidor e você pode editar os registros DNS também. Por exemplo:

NameVirtualHost ip.add.of.server

<VirtualHost ip.add.of.server>
    ServerName yourserver.domain.com
    Redirect permanent / http://yourserver.domain.com:PORT
</VirtualHost>

<VirtualHost ip.add.of.server>
    ServerName yourserver2.domain.com
    Redirect permanent / http://yourserver.domain.com:PORT
</VirtualHost>

yourserver2.domain.com pode ser o mesmo servidor, você deve adicionar um novo registro no DNS.

    
por 11.09.2011 / 00:45
1

Infelizmente, não há como fazer isso, a menos que seja uma característica dos jogos específicos que você está executando.

Suas escolhas são vincular um IP público separado a cada instância diferente do mesmo jogo (que não é uma opção se você tiver apenas um único IP público) ou especificar o número da porta quando informar as pessoas sobre o servidor .

Há uma solução alternativa para isso ao lidar com o tráfego HTTP, mas isso só funciona porque um cliente de conexão fala com o servidor e fornece informações ao servidor sobre o que ele está tentando conectar (ou seja, informa ao servidor ao qual está se conectando qual nome DNS está tentando acessar, quando ele se conecta). Isso permite que o servidor escolha o conteúdo a ser exibido ao cliente. No entanto, isso não afeta nada em uma porta diferente.

    
por 11.09.2011 / 02:51
0

Você tem essas soluções fáceis de implementar:

  • regra DNAT em um firewall para alterar a porta de destino do tráfego local para a porta dedicada ao tráfego local
  • Ouça em external_IP: same_port para aplicativo externo e ouça em internal_IP: same_port para aplicativo interno. Dessa forma, você tem os dois aplicativos em execução e usa a mesma porta, mas IPs diferentes.
por 21.09.2011 / 17:06