Redes Virtuales en Azure

En la actualidad cualquier cliente o servidor estará conectado a una red y, en el caso de máquinas virtuales en Azure aún es más importante contar con acceso a una red. Para hacer uso de servicios, para que los clientes puedan conectar con sus máquinas y para la gestión de estas es imprescindible disponer de la conectividad necesaria.

Las redes virtuales en Azure se denominan VNets y una máquina virtual sólo puede estar conectada a una VNet, aunque puede estar conectada a múltiples subredes dentro de la misma VNet.

Cuando creamos una máquina virtual debe conectarse a una VNet y si no tenemos ninguna creada, se creará una por defecto:

Vemos que cuando se crea una VNet también se crean otros objetos que están asociados a ella:

  • Virtual Network (VNet): Es una división lógica de redes dentro de nuestra suscripción a Azure. Por defecto, máquinas virtuales que estén en diferentes VNets no podrán conectarse entre sí. Podemos tener más de una VNet con el mismo rango de IPs, aunque no es una buena idea si después queremos conectarlas. Vemos que podemos crear otra VNet con el mismo rango de IPs y solo nos muestra un aviso.

  • Subnet: Las VNets las podemos dividir en subredes para asemejar el despliegue en cloud al que tenemos en on-premises. Una VNet debe contener, al menos, una subnet. Las máquinas virtuales se crean asociadas a una VNet (y esto no se puede cambiar sin eliminar la máquina y volverla a crear), y se conectan a una subnet en la VNet. Es posible cambiar una máquina a otra subnet dentro de una VNet, pero no a una subnet en otra VNet.
  • Network Interface: Una máquina virtual se conecta a una subnet mediante una NIC. El número de NICs que puede tener una máquina virtual depende de su tamaño. El máximo de NICs que puede tener una máquina virtual es 8. Todas las NICs deben estar en la misma VNet, aunque pueden estar en subnets diferentes.
  • Direcciones IP Privadas: Se usan internamente en la VNet para comunicar entre sí máquinas virtuales que pertenecen a la misma subnet, máquinas que están en VNets diferentes mediante VNet peering, para conectar máquinas en Azure con máquinas on-premises mediante una VPN, para conectar máquinas virtuales en dos regiones diferentes de Azure mediante una VPN y también para conectar máquinas virtuales con su balanceador de carga o su gateway. Estas direcciones IP privadas NO se deben cambiar desde el sistema operativo de la máquina virtual.
  • Direcciones IP Públicas: Se utilizan para la conexión desde Internet a la máquina virtual. La primera NIC que creamos en una VM se denomina Primary y tiene asignada la IP pública, el resto de NICs son secundarias y no tienen IP Pública.
  • Network Security Groups (NSG): Conjuntos de reglas que permiten controlar los paquetes entrantes y salientes a las máquinas virtuales. Se pueden asignar tanto a nivel de VNets y subnets como a nivel de NICs. Entraremos en detalle en otro post.

Crear una VNet

Podemos utilizar varios métodos para crear una VNet. Si estamos empezando en Azure probablemente sea más sencillo utilizar la interfaz web, mientras que si vamos a desplegar múltiples objetos deberíamos optar por PowerShell, Azure CLI, plantillas o incluso .NET.

Crear la VNet desde la interfaz web es muy sencillo, basta con que en el menú lateral seleccionemos “Redes Virtuales” y pulsemos en “Agregar”:

Nos aparecerá el asistente para crear una red virtual y solo tenemos que completar el formulario:

Si queremos utilizar PowerShell para crear nuestra red virtual, podemos acceder desde la interfaz web a Cloud Shell o bien instalar en nuestra máquina local los módulos necesarios para Azure PowerShell. Para simplificar vamos a usar Cloud Shell:

Y si es la primera vez que accedemos, podemos elegir entre Bash o PowerShell:

Seleccionamos PowerShell y nos pedirá crear una cuenta de almacenamiento para esta línea de comandos. En pocos minutos ya tendremos a nuestra disposición una consola de PowerShell desde la que vamos a crear una red virtual:

Suponiendo que tenemos un grupo de recursos llamado RG1, podemos crear una nueva VNet en el rango 10.2.0.0/16 con una subnet llamada “subnet1” y rango 10.2.0.0/24 usando los siguientes comandos:

PS Azure:\> $REDVIRTUAL = New-AZVirtualNetwork -ResourceGroupName RG1 -Location 'East US' -Name 'RG1-Vnet2' -AddressPrefix 10.2.0.0/16

PS Azure:\> $SUBRED = Add-AzVirtualNetworkSubnetConfig -Name 'Subnet1' -AddressPrefix 10.2.0.0/24 -VirtualNetwork $REDVIRTUAL

PS Azure:\> $REDVIRTUAL | Set-AzVirtualNetwork

Donde estamos utilizando los nuevos comandos AZ de Azure PowerShell. Durante la ejecución de estos comandos nos aparecerán algunos warnings porque Microsoft está haciendo cambios en los comandos de Azure PowerShell.

En próximos posts profundizaremos en el uso y la administración de redes virtuales, cómo conectar VNets entre sí y cómo conectar una red on-premises con una VNet en Azure.