Una de las cosas que faltaban en Hyper-V, para proveer las capacidades de productos que compiten, era la posibilidad de crear redes tipo NAT. Esto ya no es así tanto para Windows Server 2016, como para Hyper-V en Windows 10
La creación de estas redes NAT, por lo menos por ahora, no está disponible a través de la interfaz gráfica, pero se puede hacer en forma sencilla a través de PowerShell, son sólo tres líneas de comando
Aunque la demostración la haré sobre una instalación de Windows Server 2016 TP5, por lo que he leído, es totalmente funcional y con igual procedimiento si se hiciera sobre Windows 10 (Apr 2015)
La máquina de la que parto está configurada prácticamente con los valores por omisión, salvo que está instalada con la interfaz gráfica, ya está instalado Hyper-V y además tengo una máquina virtual con Windows 10 ya creada
Pueden observar en las siguientes capturas de pantalla que no hay nada especial en la configuración IP
La segunda conexión de red es porque durante la instalación de Hyper-V he creado una red “External”
Como una forma de mostrar que con la interfaz gráfica no podemos crear redes de tipo NAT muestro “Virtual Switch Manager”
Acá podemos ver que ya tengo una máquina virtual Windows 10 creada, aunque podría ser cualquier otro sistema operativo
Un detalle importante: para evitar cualquier tipo de interferencia y por ser esto sólo una demostración en la máquina con Hyper-V he deshabilitado el cortafuegos
Volvamos a la consola de PowerShell que debe estar ejecutada “como administrador”. Lo primero que haré es crear un nuevo “Switch” que yo he llamado “NATSwitch” y es de tipo “Internal”. El comando es:
New-VMSwitch -SwitchName «NATSwitch» -SwitchType Internal
Verifico en la máquina con Hyper-V que se ha creado la nueva conexión de red, es importante recordar el nombre que le ha dado ya que lo usaremos luego (“vEthernet (NATSwitch)”)
También podemos observar que este nuevo “Switch” ya lo tenemos disponible en Hyper-V
A esta nueva conexión de red que hemos creado en la máquina con Hyper-V debemos asignarle configuración IP, lo haré con PowerShell usando el comando siguiente, aunque es lo mismo si lo hicieran usando la interfaz gráfica
En mi caso he seleccionado dirección IP 172.16.0.1 Máscara de Subred 255.255.0.0, por lo tanto el comando es:
New-NetIPAddress -IPAddress 172.16.0.1 -PrefixLength 16 -InterfaceAlias «vEthernet (NATSwitch)»
Verifico que se ha configurado correctamente
Ya nos queda el último comando para crear la red NAT, que es justamente el que hace NAT funcione. La red la he llamado “NATNetwork”, y asignado que atenderá todas las direcciones en la red interna 172.16.0.0/16. El comando es:
New-NetNat -Name NATNetwork -InternalIPInterfaceAddressPrefix 172.16.0.0/16
Si todo fue hecho correctamente ya podemos probar que funcione. En la máquina virtual, primero la conectaré a la nueva red NAT creada
Y una vez arrancada le debemos poner una configuración adecuada a esta red:
- Una dirección IP válida en la red 172.16.0.0/16. En mi caso 172.16.0.2/16
- Como Puerta de Enlace debemos ponerle la dirección IP de la red NAT que hemos asignado a la interfaz de la máquina con Hyper-V. En mi caso 172.16.0.1
- Y si queremos que esta máquina virtual pueda navegar por Internet, al estar en grupo de trabajo le podemos poner cualquier DNS público. En mi caso uno de los de Google (8.8.8.8)
¿Funcionará? ¡Por supuesto! ¿O tenías dudas? :)
Con esto he mostrado cómo podemos tener máquinas virtuales en Hyper-V conectadas a una red NAT
Esta configuración permite que todas las máquinas virtuales conectadas a la misma red, se puedan interconectar entre sí, y tengan acceso a Internet y a servicios en la red física. Pero no serán accesibles desde máquinas que estén en la red física
Esto último se podría lograr con “Port Forwarding” en el NAT, pero eso será tema de otra nota (si lo consigo)
Comentarios
¿Sabes si van a dar soporte a usb?
Hola Angel, ya hay :)
Parcialmente en W2012: Hyper-V: Acceso a Discos USB [Actualizado] | WindowServer:
https://windowserver.wordpress.com/2012/06/12/hyper-v-acceso-a-discos-usb/
Y total en W2012R2: Windows Server 2012 R2: Hyper-V “Enhanced Session Mode” y Acceso a USB | WindowServer:
https://windowserver.wordpress.com/2014/05/27/windows-server-2012-r2-hyper-v-enhanced-session-mode-y-acceso-a-usb/
Gracias !
Cual es la diferencia entre este y el external que da por defecto en la configuracion de hyper v?
Hola Matias, justamente que hace NAT («Network Address Translation») :)
NAT es una de las funciones que hacen los «proxies» para dar acceso a Internet, para decirlo de forma sencilla. Cambian una o más direcciones IP de una red privada, a una pública, y reenvía las respuestas
Traducción de direcciones de red – Wikipedia, la enciclopedia libre
https://es.wikipedia.org/wiki/Traducci%C3%B3n_de_direcciones_de_red
How Network Address Translation Works | HowStuffWorks
http://computer.howstuffworks.com/nat.htm
LLegó dos veces tu pregunta, borro una
Entonces el adaptador externo como maneja las salidas a internet de las maquinas virtuales si no es por NAT? Gracias por la respuesta Guillermo!
Hola Matias H, el adaptador red externo trabajo por enrutamiento puro
Para que una máquina virtual conectada a una red externa tenga conectividad a Internet tiene que tener una IP válida para la red física, y por lo tanto sale por «routing»
Perdon pero no se comprende, la maquina virtual tiene una IP valida para la red externa, o sea IP del rango de mi host, y sale a internet con la misma IP publica que mi host, cual es la diferencia con el adaptador NAT? Quizas que pueda tener una IP que sea de rango diferente a la del host? Perdon que siga insistiendo simplemente quiero tenerlo claro
Hola Matias H, la máquina virtual tiene dirección IP 172.16.0.2, y el NAT le da salida a la 192.168.0.0 que es la externa del host
Esta red 192.168.0.0/24 es desde la que se obtiene acceso a Internet
Quizás para que te quede más claro el tema de qué es NAT, es una de las funcionalidades de un Proxy. Permite salida a otra red, típicamente Internet, a máquinas que tienen direccionamiento IP privado no válido en Internet
O sea yo entiendo lo que hace NAT pero no puedo visualizarlo en este ambiente de Hyper-V podrias explicarmelo brevemente con los ejemplos de la IP como si de un ambiente hogareño router con PCs y salida a internet se tratara?
Hola Matias H, lamentablemente no puedo usar estos comentarios para explicaciones teóricas. Pero resumiendo, una máquina que tiene dirección en la red 172.16.0.0/16, se le da acceso a la red física 192.168.0.0/24 que tiene conectividad a Internet; por lo tanto la máquina virtual tiene acceso a Internet
Hola!!!
Alguien sabe si cambiaron la sintaxis de este comando ya que no me funciona aunque siga todos los pasos me manda error exactamente en ese paso
New-NetNat -Name NATNetwork -InternalIPInterfaceAddressPrefix 172.16.0.0/16
Me ayudaria mucho ya que necesito pasar internet a una maquina anidada de hyperv en azure
Hola Ricardo, este no es un foro de soporte; estos son comentarios sobre la nota y ayudo cuando puedo, lamentablemente este no es el caso, no lo he hecho con la versión definitiva
Puedes recurrir a un foro de soporte, por ejemplo 148.243.119.242 en el subforo de Hyper-V