Facebook Pixel
Como Tornar Pública Uma VM ou Computador Sem IP Válido – Port Forwarding no Windows

Como Tornar Pública Uma VM ou Computador Sem IP Válido – Port Forwarding no Windows

Você tem um servidor Windows com IP público conectado à Internet, e precisa expor alguns serviços hospedados em outros dentro da sua rede local ou servidores hospedados em máquinas virtuais dentro do servidor físico. Seja como for estes computadores não possuem IP válido (público), apenas IPs inválidos para se comunicarem entre si.

Caso o seu cenário seja o mapeamento de portas do servidor para dentro das VMs, será necessário primeiro tornar estas VMs acessáveis pela rede local. Para isso, vamos começar montando uma rede local com Virtual Machines dentro do Hyper-V. Caso o seu cenário seja apenas o mapeamento para computadores físicos, pode passar para o próximo tópico.

Para distribuir o acesso à Internet para as estações utilizando a conexão do servidor host é necessário instalar o serviço NAT (Network Address Translation) no servidor.

Para configurar as rotas e fazer o port forwarding, basta utilizar o comando netsh no servidor que possui conexão com ambas as redes. No exemplo abaixo vou fazer o seguinte mapeamento:

  • Todas as chamadas às portas 80, 443 e 8172 do servidor para as respectivas portas do computador na rede local que responde pelo IP 192.168.0.21.
  • Todas as chamadas à porta 81 do servidor para a porta 8080 para o computador na rede local que responde pelo IP 192.168.0.22:
  • O computador que responde pelo IP interno 192.168.0.23 irá receber chamadas à portas 80, 1433, 3389 e 443 através de mapeamentos no servidor feitos exclusivamente para ele.
netsh interface portproxy add v4tov4 listenport=80 listenaddress=0.0.0.0 connectport=80 connectaddress=192.168.0.21
netsh interface portproxy add v4tov4 listenport=443 listenaddress=0.0.0.0 connectport=443 connectaddress=192.168.0.21
netsh interface portproxy add v4tov4 listenport=8172 listenaddress=0.0.0.0 connectport=8172 connectaddress=192.168.0.21
netsh interface portproxy add v4tov4 listenport=81 listenaddress=0.0.0.0 connectport=8080 connectaddress=192.168.0.22
netsh interface portproxy add v4tov4 listenport=8011 listenaddress=0.0.0.0 connectport=80 connectaddress=192.168.0.23
netsh interface portproxy add v4tov4 listenport=1411 listenaddress=0.0.0.0 connectport=1433 connectaddress=192.168.0.23
netsh interface portproxy add v4tov4 listenport=3311 listenaddress=0.0.0.0 connectport=3389 connectaddress=192.168.0.23
netsh interface portproxy add v4tov4 listenport=4411 listenaddress=0.0.0.0 connectport=443 connectaddress=192.168.0.23

Esclarecendo as portas citadas no exemplo acima:
80: Web server (HTTP).
443: Web server seguto (HTTPS).
8172: Serviço Web Deployment, que permite publicação direta a partir do Visual Studio.
1433: Banco de dados SQL Server.
3389: Acesso remoto (RDS).

Para verificar se está tudo certo, utilize o comando:

netsh interface portproxy show all

Exemplo:

PS C:\Users\Administrator> netsh interface portproxy show all

Listen on ipv4:             Connect to ipv4:

Address         Port        Address         Port
--------------- ----------  --------------- ----------
0.0.0.0         80          192.168.0.21    80
0.0.0.0         443         192.168.0.21    443
0.0.0.0         8172        192.168.0.21    8172
0.0.0.0         81          192.168.0.22    8080
0.0.0.0         8011        192.168.0.23    80
0.0.0.0         1411        192.168.0.23    1433
0.0.0.0         3311        192.168.0.23    3389
0.0.0.0         4411        192.168.0.23    443

Para eliminar um mapeamento utilize o comando:

netsh interface portproxy delete v4tov4 listenport= listenaddress=

Exemplo:
netsh interface portproxy delete v4tov4 listenport=80 listenaddress=0.0.0.0

Para fazer modificações, é necessário eliminar o mapeamento e fazer um novo.

Estando feitos os mapeamentos, não esqueça de liberar as portas no Windows Firewall.

Deixe seu comentário