Reenviar un puerto local a una VM en HyperV

A veces es necesario exponer algún servicio desplegado en una VM en la red. En VirtualBox con una red de tipo NAT la configuración del Port Forwarding se ejecuta de forma muy sencilla a través de una sencilla interfaz. Sin embargo esta taréa tan simple no puede ser ejecutada mediante una GUI en HyperV ya que no existe tal opción. Al trabajar con HyperV y NAT, la configuración del port-forwarding debe ejecutarse a través del comando netsh de Windows.

En esta entrada se verá como crear y eliminar reenvios de puertos desde la máquina local a las VM via netsh.

Crear un reenvio de puerto

netsh interface portproxy add v4tov4 listenport=PORT connectaddress=IP connectport=PORT protocol=tcp

  • listenport, indica el puerto en el que escuchará la máquina física.
  • connectaddress, indica la IP de destino.
  • connectport, indica el puerto de destino.

A continuación un ejemplo donde se reenvían los siguientes puertos:

  • 2022, se reenvia a 192.168.122.20:22
  • 4080, se reenvia a 192.168.122.40:80
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
C:\Windows\system32>netsh interface portproxy add v4tov4 listenport=2022 connect
address=192.168.122.20 connectport=22 protocol=tcp
C:\Windows\system32>netsh interface portproxy add v4tov4 listenport=4080 connect
address=192.168.122.40 connectport=80 protocol=tcp
C:\Windows\system32>netsh interface portproxy show all
Listen on ipv4: Connect to ipv4:
Address Port Address Port
--------------- ---------- --------------- ----------
* 2022 192.168.122.20 22
* 4080 192.168.122.40 80
C:\Windows\system32>

Eliminar un reenvio de puerto

netsh interface portproxy delete v4tov4 LISTEN-PORT

1
2
3
4
5
6
7
8
9
10
11
12
13
C:\Windows\system32>netsh interface portproxy delete v4tov4 2022
C:\Windows\system32>netsh interface portproxy show all
Listen on ipv4: Connect to ipv4:
Address Port Address Port
--------------- ---------- --------------- ----------
* 4080 192.168.122.40 80
C:\Windows\system32>
Contenidos
  1. 1. Crear un reenvio de puerto
  2. 2. Eliminar un reenvio de puerto