
Estoy ejecutando Windows 10 build 1809 y tengo Hyper-V instalado. Tengo una máquina Linux ejecutándose detrás de una NAT con conectividad a Internet que funciona en IP 10.0.5.5. Básicamente seguí las instrucciones en el siguiente enlace.
https://docs.microsoft.com/en-us/virtualization/hyper-v-on-windows/user-guide/setup-nat-network
Cuando creé el mapeo de puertos, llamé
Add-NetNatStaticMapping -ExternalIPAddress 0.0.0.0/24 -ExternalPort 8500 -Protocol TCP -InternalIPAddress 10.0.5.5 -InternalPort 8500 -NatName YetAnotherNAT
Si intento golpearhttp://10.0.5.5:8500Funciona (la página se carga). Si intento golpearhttp://127.0.0.1:8500no funciona (no se carga nada). Incluso si intento utilizar cualquiera de mis IP externas, no funciona.
Básicamente es como si todo el reenvío de puertos no estuviera haciendo nada.
¿Algunas ideas?
Get-VmSwitch devuelve lo siguiente
PS C:\> Get-VMSwitch
Name SwitchType NetAdapterInterfaceDescription
---- ---------- ------------------------------
nat Internal
Wifi External Intel(R) Dual Band Wireless-AC 7265
DockerNAT Internal
Default Switch Internal Teamed-Interface
MyNATSwitch Internal
YetAnotherSwitch Internal
Get-NetNat devuelve lo siguiente
PS C:\> get-netnat
Name : YetAnotherNAT
ExternalIPInterfaceAddressPrefix :
InternalIPInterfaceAddressPrefix : 10.0.5.0/24
IcmpQueryTimeout : 30
TcpEstablishedConnectionTimeout : 1800
TcpTransientConnectionTimeout : 120
TcpFilteringBehavior : AddressDependentFiltering
UdpFilteringBehavior : AddressDependentFiltering
UdpIdleSessionTimeout : 120
UdpInboundRefresh : False
Store : Local
Active : True
Respuesta1
Probablemente estés tocando esto:
Acceder a puntos finales internos directamente desde el host
No se puede acceder a los puntos finales internos asignados a máquinas virtuales o contenedores mediante las IP/puertos externos a los que se hace referencia en las asignaciones de puertos estáticos NAT directamente desde el host NAT. Desde el host NAT, estos puntos finales internos deben ser direccionados directamente por su IP y puertos internos. Por ejemplo, supongamos que un punto final de contenedor tiene IP 172.16.1.100 y está ejecutando un servidor web que escucha en el puerto 80. Además, suponga que se ha creado una asignación de puertos a través de Docker para reenviar el tráfico desde la dirección IP del host (10.10.50.20) recibida. en el puerto TCP 8080 al punto final del contenedor. En este caso, un usuario en el host del contenedor no puede acceder directamente al servidor web utilizando los puertos asignados externamente. por ejemplo, un usuario que opera en el host del contenedor no puede acceder indirectamente al servidor web del contenedor enhttp://10.10.50.20:8080. En su lugar, el usuario debe acceder directamente al servidor web del contenedor enhttp://172.16.1.100:80.
La única advertencia a esta limitación es que se puede acceder al punto final interno utilizando el puerto/IP externo desde un punto final de VM/contenedor separado que se ejecuta en el mismo host NAT: esto se llama fijación de cabello. Por ejemplo, un usuario que opera en el contenedor A puede acceder a un servidor web que se ejecuta en el contenedor B utilizando la IP interna y el puerto de http://10.10.50.20:8080