Como enviar um pacote tcp para um dispositivo dentro da WLAN com um IP local de uma rede externa?

6

Eu tenho que enviar um comando da internet para um dispositivo em uma WLAN, que está escutando a porta 9999.

O dispositivo em si só recebe um IP local.

Eu também tenho n (2-100 +) número de dispositivos com o mesmo programa (escutando a porta 9999).

Conheço todos os IPs locais dos dispositivos e sei para qual IP enviar o comando.

Como posso enviar o comando de uma rede externa (nuvem / dispositivo móvel) para um IP local específico através do roteador de gateway?

Eu entendo que isso pode ser conseguido com um servidor rodando dentro da WLAN, ou um dispositivo de gateway dedicado. Mas estou interessado em saber se isso é possível apenas com o roteador sem fio.

    
por Rifat Mahmud 10.09.2015 / 14:05

6 respostas

1

Precisa de algo além de um roteador

Um roteador, tanto por definição quanto uso comum, roteia pacotes baseados no endereço e porta de destino indicados, e não em outros fatores.

Qualquer que seja a tecnologia que você esteja usando para enviá-la, no momento em que um único pacote TCP / IP chega de uma conexão externa ao roteador, o roteador deve decidir o que fazer com esse único pacote, para qual das centenas de dispositivos internos que devem ser enviados - e precisa de informações para fazer isso.

Não é possível usar as informações do endereço IP, já que na sua configuração você teria apenas um único endereço IP externo, e esse seria o endereço do roteador - o mesmo para todos os pacotes que você gostaria de rotear de forma diferente.

Ele poderia usar as informações da porta TCP para isso, como sugerido em outras respostas, mas aparentemente não é aceitável.

Ele poderia usar a carga útil do pacote, mas não fará isso. Os roteadores sem fio de consumo comumente usados não farão inspeção de cada carga de pacote para decidir seu roteamento de qualquer maneira. Você poderia criar um dispositivo ou código personalizado para lidar com isso, o que seria, na verdade, o mesmo que "um servidor rodando dentro da WLAN", que aparentemente também não é aceitável.

Não há outras informações - um roteador pode tomar algumas decisões com base em outros campos no Cabeçalho do pacote IP , mas esses campos não são utilizáveis para suas necessidades ou são impraticáveis - por exemplo, você pode configurar o roteamento com base no endereço IP source e enviar pacotes com endereços de origem falsificados, mas teria todos os mesmos problemas de configuração do que simplesmente usar portas para isso.

    
por 11.09.2015 / 00:51
12

Insira os mapeamentos de porta n (encaminhamentos de porta) nas configurações do gateway NAT no roteador sem fio. Por conveniência, talvez faça as portas públicas correlacionadas ao endereço IP interno do cliente (a parte do número do host) mais um prefixo (digamos, 50000).

Então, digamos que você tenha máquinas clientes em endereços privados 10.0.0.2 a 10.0.0.202. Insira os mapeamentos de portas assim:

[wireless router public IP]:50002 -> 10.0.0.2:9999
[wireless router public IP]:50003 -> 10.0.0.3:9999
…
[wireless router public IP]:50202 -> 10.0.0.202:9999

Agora, em seu software cliente, para alcançar cada host, você sempre especifica o endereço IP público do seu gateway NAT (seu roteador sem fio), mas varia a porta que você especifica com base em qual cliente você deseja acessar. / p>

A maioria dos softwares clientes permite que você especifique uma porta, codificando-a no URL como http://example.com:50001/ ou especificando-a como um argumento de linha de comando, geralmente após a opção -p ou -P . Verifique a página man da sua ferramenta.

    
por 10.09.2015 / 14:17
5

Você tem duas opções para realizar sua tarefa

  1. Usando o acesso VPN ao roteador WiFi - dessa forma seu dispositivo externo precisa usar alguns dos protocolos vpn disponíveis (por exemplo, PPTP) dessa forma o dispositivo terá rota para a rede Wi-Fi interna e você poderá se conectar diretamente a cada IP.
  2. Usando Meias - você precisa encontrar um roteador Wi-Fi com suporte para socks-proxy.

A primeira maneira é mais fácil de ser realizada sem alterar o código do aplicativo. Você pode usar o DD-WRT ou o Mikrotik baseado em Wifi roteadores para ambas as opções. Para mim o Mikrotik é mais fácil de configurar como servidor VPN. Veja mais informações sobre a implementação de Socks .

    
por 10.09.2015 / 14:25
2

Você pode usar o encaminhamento de porta em seu roteador, é claro. Mas existem riscos de segurança associados a ele.

Se você conseguir executar o OpenVPN em seus dispositivos, sugiro que crie uma VPN. Com todos os seus dispositivos e sua nuvem / celular também na VPN, você pode acessá-los como se estivessem fisicamente na mesma rede. Além disso, toda a comunicação seria criptografada.

    
por 10.09.2015 / 14:19
0

Você pode abrir uma regra de encaminhamento de porta no roteador, informando que qualquer coisa recebida na interface pública e na porta 9999 deve ser encaminhada para o IP do seu dispositivo e a mesma porta.

O roteador enviará os requisitos externos para o dispositivo e porta especificados, e os outros dispositivos não perceberão esse tráfego.

    
por 10.09.2015 / 14:10
0

Você precisaria configurar o encaminhamento de NAT / porta em seu roteador sem fio. Desde que você não especificou o roteador que você tem, eu não posso ajudá-lo ainda mais. Além disso, muitos roteadores sem fio de consumo têm conjuntos de recursos de baixo custo, o que pode limitar o número de encaminhamentos manuais.

Edite porque não posso responder aos comentários por qualquer motivo idiota

Não, você não pode mapear uma única porta para vários IPs sem um balanceador de carga. Você teria que definir portas diferentes na interface externa do seu roteador, para mapear as várias combinações de IP / porta dos dispositivos na sua rede interna.

    
por 10.09.2015 / 14:12