Criando um emulador de LAN para fins de jogos

0

Eu criei um utilitário simples para o Warcraft III que permite aos usuários entrarem em jogos hospedados remotamente, como se estivessem acessíveis em sua LAN. Sua ideia é bem direta:

  1. Os jogadores A e B querem jogar. Eles configuram o encaminhamento de porta em seus roteadores, iniciam meu utilitário e trocam seus endereços IP externos.
  2. Os jogadores entram nos endereços IP uns dos outros no meu utilitário e um dos jogadores cria um jogo do Warcraft III.
  3. Meu utilitário usa o formato de pacote Warcraft III para consultar sua máquina local em busca de qualquer jogo hospedado no Warcraft III. Se receber uma resposta (com informações sobre o jogo), ela simplesmente o encaminha para todos os IPs da lista.
  4. Devido ao encaminhamento de porta, o pacote (datagrama, para ser mais específico) alcança a outra instância do Warcraft III e assim o outro usuário agora é capaz de ver o jogo de seu amigo, assim como se juntar a ele.

Funciona muito bem. No entanto, ainda é necessário que os usuários definam o encaminhamento de porta e esta é a minha pergunta: qual seria a melhor abordagem para evitá-lo?

Eu estive pensando em UPnP / NAT-PMP, mas isso é mais útil quando meu aplicativo está escutando. Neste caso, eu só notifico o Warcraft III do outro lado que há um jogo na minha máquina. Mas posso criar um mapeamento de porta para outro aplicativo?

Eu certamente estou perdendo algo, então eu ficaria feliz se alguém pudesse me apontar na direção certa.

    
por Kalafior 27.10.2013 / 18:26

1 resposta

2

Não há uma maneira padrão confiável de informar a um sistema remoto em uma rede NATted diferente para abrir uma porta para um aplicativo em um sistema local.

Você tem três métodos básicos para evitar a configuração do usuário do encaminhamento de porta com a maioria dos aplicativos:

Diga ao usuário que ele é SOL, a menos que ele conecte diretamente seu computador ou dispositivo a uma Internet cujo ISP não bloqueie o tráfego de entrada. Esta é uma má ideia.

Dizendo ao roteador para abrir uma porta programaticamente usando algo como o uPNP. Isso pressupõe que seu roteador suporte isso.

C. Ter um sistema conhecido fora de qualquer rede NATted para a qual os clientes possam fazer conexões de saída. Esse sistema também pode precisar encaminhar o tráfego em nome dos clientes.

O termo apropriado para "emulador de LAN" é rede privada virtual. O Hamachi e o OpenVPN são dois pacotes de software que configuram uma VPN. Estou apostando que Garena, como mencionado por @gronostaj, opera de maneira semelhante com uma interface amigável para jogadores.

Uma VPN cairá na categoria C - você precisará de um servidor VPN acessível fora do NAT de qualquer pessoa para que funcione. Uma VPN funcionaria bem - a rede virtual funcionaria exatamente como uma LAN e os sistemas que estão na VPN podem receber conexões de entrada de qualquer outro sistema na VPN.

Tenho certeza que você não quer arcar com as despesas e responsabilidade de operar uma VPN acessível centralmente - sem mencionar que restringir a utilização apenas para Warcraft será difícil e muito mais responsável.

Eu não usei muito o Hamachi, então não tenho certeza se você pode aproveitá-lo para alcançar o que deseja.

O melhor que você provavelmente pode fazer é suportar o uPnP e incluir instruções de encaminhamento de porta para roteadores comuns com o seu software.

    
por 27.10.2013 / 19:05