Tutorial: Creación y administración de redes virtuales de Azure para máquinas virtuales Linux con la CLI de AzureTutorial: Create and manage Azure virtual networks for Linux virtual machines with the Azure CLI

Las máquinas virtuales de Azure utilizan las redes de Azure para la comunicación de red interna y externa.Azure virtual machines use Azure networking for internal and external network communication. Este tutorial le guía a través de la implementación de dos máquinas virtuales y la configuración de redes de Azure para estas máquinas virtuales.This tutorial walks through deploying two virtual machines and configuring Azure networking for these VMs. Se da por supuesto que en los ejemplos de este tutorial las máquinas virtuales hospedan una aplicación web con un back-end de base de datos, sin embargo, no se implementa ninguna aplicación en el tutorial.The examples in this tutorial assume that the VMs are hosting a web application with a database back-end, however an application is not deployed in the tutorial. En este tutorial, aprenderá a:In this tutorial, you learn how to:

  • Creación de una red virtual y una subredCreate a virtual network and subnet
  • Crear una dirección IP públicaCreate a public IP address
  • Crear una máquina virtual de front-endCreate a front-end VM
  • Protegen el tráfico de red.Secure network traffic
  • Crear una máquina virtual de back-endCreate a back-end VM

Uso de Azure Cloud ShellUse Azure Cloud Shell

En Azure se hospeda Azure Cloud Shell, un entorno de shell interactivo que puede utilizar mediante el explorador.Azure hosts Azure Cloud Shell, an interactive shell environment that you can use through your browser. Cloud Shell le permite usar bash o PowerShell para trabajar con servicios de Azure.Cloud Shell lets you use either bash or PowerShell to work with Azure services. Puede usar los comandos preinstalados de Cloud Shell para ejecutar el código de este artículo sin tener que instalar nada en su entorno local.You can use the Cloud Shell pre-installed commands to run the code in this article without having to install anything on your local environment.

Para iniciar Azure Cloud Shell:To launch Azure Cloud Shell:

OpciónOption Ejemplo o vínculoExample/Link
Seleccione Probarlo en la esquina superior derecha de un bloque de código.Select Try It in the upper-right corner of a code block. Solo con seleccionar Probar no se copia automáticamente el código en Cloud Shell.Selecting Try It doesn't automatically copy the code to Cloud Shell. Ejemplo de Probarlo para Azure Cloud Shell
Vaya a https://shell.azure.com o seleccione el botón Iniciar Cloud Shell para abrir Cloud Shell en el explorador.Go to https://shell.azure.com or select the Launch Cloud Shell button to open Cloud Shell in your browser. Iniciar Cloud Shell en una nueva ventanaLaunch Cloud Shell in a new window
Seleccione el botón Cloud Shell en la barra de menús de la esquina superior derecha de Azure Portal.Select the Cloud Shell button on the top-right menu bar in the Azure portal. Botón Cloud Shell en Azure Portal

Para ejecutar el código de este artículo en Azure Cloud Shell:To run the code in this article in Azure Cloud Shell:

  1. Inicie Cloud Shell.Launch Cloud Shell.

  2. Seleccione el botón Copiar de un bloque de código para copiar el código.Select the Copy button on a code block to copy the code.

  3. Pegue el código en la sesión de Cloud Shell con Ctrl+Mayús+V en Windows y Linux, o Cmd+Mayús+V en macOS.Paste the code into the Cloud Shell session with Ctrl+Shift+V on Windows and Linux, or Cmd+Shift+V on macOS.

  4. Presione ENTRAR para ejecutar el código.Press Enter to run the code.

Si decide instalar y usar la CLI localmente, en este tutorial es preciso que ejecute la CLI de Azure de la versión 2.0.30, u otra posterior.If you choose to install and use the CLI locally, this tutorial requires that you are running the Azure CLI version 2.0.30 or later. Ejecute az --version para encontrar la versión.Run az --version to find the version. Si necesita instalarla o actualizarla, vea Instalación de la CLI de Azure.If you need to install or upgrade, see Install Azure CLI.

Introducción a las redes de máquinas virtualesVM networking overview

Las redes virtuales de Azure habilitan las conexiones de red seguras entre máquinas virtuales, Internet y otros servicios de Azure SQL Database.Azure virtual networks enable secure network connections between virtual machines, the internet, and other Azure services such as Azure SQL database. Las redes virtuales se dividen en segmentos lógicos llamados subredes.Virtual networks are broken down into logical segments called subnets. Las subredes se utilizan para controlar el flujo de red y como límite de seguridad.Subnets are used to control network flow, and as a security boundary. La implementación de una máquina virtual incluye, por lo general, una interfaz de red virtual, que está conectada a una subred.When deploying a VM, it generally includes a virtual network interface, which is attached to a subnet.

Cuando haya completado el tutorial, se crean los siguientes recursos de red virtual:As you complete the tutorial, the following virtual network resources are created:

Red virtual con dos subredes

  • myVNet: red virtual que las máquinas virtuales usan para comunicarse entre sí y con Internet.myVNet - The virtual network that the VMs use to communicate with each other and the internet.
  • myFrontendSubnet: subred de myVNet que usan los recursos de front-end.myFrontendSubnet - The subnet in myVNet used by the front-end resources.
  • myPublicIPAddress: dirección IP pública que se usa para tener acceso a myFrontendVM desde Internet.myPublicIPAddress - The public IP address used to access myFrontendVM from the internet.
  • myFrontentNic: interfaz de red que usa myFrontendVM para comunicarse con myBackendVM.myFrontentNic - The network interface used by myFrontendVM to communicate with myBackendVM.
  • myFrontendVM: máquina virtual que se usa para la comunicación entre Internet y myBackendVM.myFrontendVM - The VM used to communicate between the internet and myBackendVM.
  • myBackendNSG: grupo de seguridad de red que controla la comunicación entre myFrontendVM y myBackendVM.myBackendNSG - The network security group that controls communication between the myFrontendVM and myBackendVM.
  • myBackendSubnet: subred asociada a myBackendNSG y que usan los recursos de back-end.myBackendSubnet - The subnet associated with myBackendNSG and used by the back-end resources.
  • myBackendNic: interfaz de red que usa myBackendVM para comunicarse con myFrontendVM.myBackendNic - The network interface used by myBackendVM to communicate with myFrontendVM.
  • myBackendVM: máquina virtual que usa los puertos 22 y 3306 para comunicarse con myFrontendVM.myBackendVM - The VM that uses port 22 and 3306 to communicate with myFrontendVM.

Creación de una red virtual y una subredCreate a virtual network and subnet

Para este tutorial, se crea una única red virtual con dos subredes:For this tutorial, a single virtual network is created with two subnets. una subred de front-end para hospedar una aplicación web y una subred de back-end para hospedar un servidor de bases de datos.A front-end subnet for hosting a web application, and a back-end subnet for hosting a database server.

Antes de poder crear una red virtual, cree un grupo de recursos con az group create.Before you can create a virtual network, create a resource group with az group create. En el ejemplo siguiente, se crea un grupo de recursos denominado myRGNetwork en la ubicación eastus.The following example creates a resource group named myRGNetwork in the eastus location.

az group create --name myRGNetwork --location eastus

Creación de una red virtualCreate virtual network

Cree una red virtual con el comando az network vnet create.Use the az network vnet create command to create a virtual network. En este ejemplo, la red se denomina mvVnet y se le asigna el prefijo de dirección 10.0.0.0/16.In this example, the network is named mvVNet and is given an address prefix of 10.0.0.0/16. También se crea una subred denominada mySubnetFrontEnd y el prefijo 10.0.1.0/24.A subnet is also created with a name of myFrontendSubnet and a prefix of 10.0.1.0/24. Más adelante en este tutorial, se va a conectar una máquina virtual de front-end a esta subred.Later in this tutorial a front-end VM is connected to this subnet.

az network vnet create \
  --resource-group myRGNetwork \
  --name myVNet \
  --address-prefix 10.0.0.0/16 \
  --subnet-name myFrontendSubnet \
  --subnet-prefix 10.0.1.0/24

Creación de una subredCreate subnet

Para agregar una subred nueva a la red virtual, se utiliza el comando az network vnet subnet create.A new subnet is added to the virtual network using the az network vnet subnet create command. En este ejemplo, la subred se denomina myBackendSubnet y se le asigna el prefijo de dirección 10.0.2.0/24.In this example, the subnet is named myBackendSubnet and is given an address prefix of 10.0.2.0/24. Esta subred se usa con todos los servicios back-end.This subnet is used with all back-end services.

az network vnet subnet create \
  --resource-group myRGNetwork \
  --vnet-name myVNet \
  --name myBackendSubnet \
  --address-prefix 10.0.2.0/24

Entonces, se ha creado una red y se ha segmentado en dos subredes, una para servicios front-end y otra para servicios back-end.At this point, a network has been created and segmented into two subnets, one for front-end services, and another for back-end services. En la siguiente sección, se crean máquinas virtuales y se conectan a estas subredes.In the next section, virtual machines are created and connected to these subnets.

Crear una dirección IP públicaCreate a public IP address

Una dirección IP pública permite que los recursos de Azure estén accesibles en Internet.A public IP address allows Azure resources to be accessible on the internet. El método de asignación de la dirección IP pública se puede configurar como dinámico o estático.The allocation method of the public IP address can be configured as dynamic or static. De forma predeterminada, la dirección IP pública se asigna dinámicamente.By default, a public IP address is dynamically allocated. Las direcciones IP dinámicas se liberan al desasignar una máquina virtual.Dynamic IP addresses are released when a VM is deallocated. Este comportamiento hace que la dirección IP cambie durante cualquier operación que incluya una desasignación de máquina virtual.This behavior causes the IP address to change during any operation that includes a VM deallocation.

El método de asignación se puede establecer en estático, lo que garantiza que la dirección IP siga asignada a una máquina virtual, incluso durante un estado de desasignación.The allocation method can be set to static, which ensures that the IP address remains assigned to a VM, even during a deallocated state. Cuando se usa una dirección IP asignada estáticamente, no se puede especificar la propia dirección IP,When using a statically allocated IP address, the IP address itself cannot be specified. sino que se asigna desde un grupo de direcciones disponibles.Instead, it is allocated from a pool of available addresses.

az network public-ip create --resource-group myRGNetwork --name myPublicIPAddress

Al crear una máquina virtual con el comando az vm create, el método predeterminado para la asignación de una dirección IP pública es dinámico.When creating a VM with the az vm create command, the default public IP address allocation method is dynamic. Al crear una máquina virtual mediante el comando az vm create, incluya el argumento --public-ip-address-allocation static para asignar una dirección IP pública estática.When creating a virtual machine using the az vm create command, include the --public-ip-address-allocation static argument to assign a static public IP address. Esta operación no se muestra en este tutorial, sin embargo, en la sección siguiente se cambia una dirección IP asignada dinámicamente a una dirección asignada estáticamente.This operation is not demonstrated in this tutorial, however in the next section a dynamically allocated IP address is changed to a statically allocated address.

Cambio del método de asignaciónChange allocation method

Se puede cambiar el método de asignación de dirección IP mediante el comando az network public-ip update.The IP address allocation method can be changed using the az network public-ip update command. En este ejemplo, se cambia el método de asignación de dirección IP de la máquina virtual de front-end a estático.In this example, the IP address allocation method of the front-end VM is changed to static.

En primer lugar, desasigne la máquina virtual.First, deallocate the VM.

az vm deallocate --resource-group myRGNetwork --name myFrontendVM

Use el comando az network public-ip update para actualizar el método de asignación.Use the az network public-ip update command to update the allocation method. En este caso, --allocation-method se establece en estático.In this case, the --allocation-method is being set to static.

az network public-ip update --resource-group myRGNetwork --name myPublicIPAddress --allocation-method static

Inicie la máquina virtual.Start the VM.

az vm start --resource-group myRGNetwork --name myFrontendVM --no-wait

Sin dirección IP públicaNo public IP address

A menudo, no es necesario que una máquina virtual sea accesible a través de Internet.Often, a VM does not need to be accessible over the internet. Para crear una máquina virtual sin una dirección IP pública, use el argumento --public-ip-address "" con un conjunto vacío de comillas dobles.To create a VM without a public IP address, use the --public-ip-address "" argument with an empty set of double quotes. Esta configuración se muestra más adelante en este tutorial.This configuration is demonstrated later in this tutorial.

Crear una máquina virtual de front-endCreate a front-end VM

Use el comando az vm create para crear una máquina virtual denominada myFrontendVM mediante myPublicIPAddress.Use the az vm create command to create the VM named myFrontendVM using myPublicIPAddress.

az vm create \
  --resource-group myRGNetwork \
  --name myFrontendVM \
  --vnet-name myVNet \
  --subnet myFrontendSubnet \
  --nsg myFrontendNSG \
  --public-ip-address myPublicIPAddress \
  --image UbuntuLTS \
  --generate-ssh-keys

Protegen el tráfico de red.Secure network traffic

Un grupo de seguridad de red (NSG) contiene una lista de reglas de seguridad que permiten o deniegan el tráfico de red a recursos conectados a Azure Virtual Network (VNet).A network security group (NSG) contains a list of security rules that allow or deny network traffic to resources connected to Azure Virtual Networks (VNet). Los NSG se pueden asociar a subredes o a interfaces de red individuales.NSGs can be associated to subnets or individual network interfaces. Cuando un NSG está asociado a una interfaz de red, se aplica solo a la máquina virtual asociada.When an NSG is associated with a network interface, it applies only the associated VM. Cuando un grupo de seguridad de red está asociado a una subred, las reglas se aplican a todos los recursos conectados a la subred.When an NSG is associated to a subnet, the rules apply to all resources connected to the subnet.

Reglas del grupo de seguridad de redNetwork security group rules

Las reglas de NSG definen puertos de redes a través de los que se permite o deniega el tráfico.NSG rules define networking ports over which traffic is allowed or denied. Las reglas pueden incluir intervalos de direcciones IP de origen y destino para que el tráfico se controle entre sistemas o subredes específicos.The rules can include source and destination IP address ranges so that traffic is controlled between specific systems or subnets. Las reglas de NSG también incluyen una prioridad (entre 1 y 4096).NSG rules also include a priority (between 1—and 4096). Las reglas se evalúan por orden de prioridad.Rules are evaluated in the order of priority. Una regla con una prioridad de 100 se evalúa antes que una regla con prioridad de 200.A rule with a priority of 100 is evaluated before a rule with priority 200.

Todos los grupos de seguridad de red contienen un conjunto de reglas predeterminadas.All NSGs contain a set of default rules. No se pueden eliminar las reglas predeterminadas, pero dado que tienen asignada la mínima prioridad, pueden reemplazarse por las reglas que cree.The default rules cannot be deleted, but because they are assigned the lowest priority, they can be overridden by the rules that you create.

Las reglas predeterminadas para los grupos de seguridad de red son:The default rules for NSGs are:

  • Red virtual: el tráfico que se origina y termina en una red virtual se permite en las direcciones tanto de entrada como de salida.Virtual network - Traffic originating and ending in a virtual network is allowed both in inbound and outbound directions.
  • Internet: se permite el tráfico saliente pero se bloquea el entrante.Internet - Outbound traffic is allowed, but inbound traffic is blocked.
  • Equilibrador de carga: se permite que el equilibrador de carga de Azure sondee el estado de las máquinas virtuales y las instancias de rol.Load balancer - Allow Azure’s load balancer to probe the health of your VMs and role instances. Si no va a usar un conjunto con equilibrio de carga, puede invalidar esta regla.If you are not using a load balanced set, you can override this rule.

Creación de grupos de seguridad de redCreate network security groups

Un grupo de seguridad de red puede crearse a la vez como máquina virtual mediante el comando az vm create.A network security group can be created at the same time as a VM using the az vm create command. De este modo, el NSG está asociado a la interfaz de red de máquinas virtuales y se crea automáticamente una regla de NSG para permitir el tráfico en el puerto 22 desde cualquier origen.When doing so, the NSG is associated with the VMs network interface and an NSG rule is auto created to allow traffic on port 22 from any source. Anteriormente en este tutorial, se ha creado automáticamente el NSG de front-end con la máquina virtual de front-end.Earlier in this tutorial, the front-end NSG was auto-created with the front-end VM. También se crea automáticamente una regla de NSG para el puerto 22.An NSG rule was also auto created for port 22.

En algunos casos, puede resultar útil crear previamente un NSG, por ejemplo, cuando no se deben crear reglas predeterminadas de SSH o cuando el NSG debe asociarse a una subred.In some cases, it may be helpful to pre-create an NSG, such as when default SSH rules should not be created, or when the NSG should be attached to a subnet.

Utilice el comando az network nsg create para crear un grupo de seguridad de red.Use the az network nsg create command to create a network security group.

az network nsg create --resource-group myRGNetwork --name myBackendNSG

En lugar de asociar el NSG a una interfaz de red, está asociado a una subred.Instead of associating the NSG to a network interface, it is associated with a subnet. En esta configuración, todas las máquinas virtuales que están conectadas a la subred heredan las reglas de NSG.In this configuration, any VM that is attached to the subnet inherits the NSG rules.

Actualice la subred existente denominada myBackendSubnet con el nuevo NSG.Update the existing subnet named myBackendSubnet with the new NSG.

az network vnet subnet update \
  --resource-group myRGNetwork \
  --vnet-name myVNet \
  --name myBackendSubnet \
  --network-security-group myBackendNSG

Protección del tráfico entranteSecure incoming traffic

Al crear la máquina virtual de front-end, se ha creado una regla de NSG para permitir el tráfico entrante en el puerto 22.When the front-end VM was created, an NSG rule was created to allow incoming traffic on port 22. Esta regla permite las conexiones SSH con la máquina virtual.This rule allows SSH connections to the VM. En este ejemplo, también se debería permitir el tráfico en el puerto 80.For this example, traffic should also be allowed on port 80. Esta configuración permite tener acceso a una aplicación web en la máquina virtual.This configuration allows a web application to be accessed on the VM.

Utilice el comando az network nsg rule create para crear una regla para el puerto 80.Use the az network nsg rule create command to create a rule for port 80.

az network nsg rule create \
  --resource-group myRGNetwork \
  --nsg-name myFrontendNSG \
  --name http \
  --access allow \
  --protocol Tcp \
  --direction Inbound \
  --priority 200 \
  --source-address-prefix "*" \
  --source-port-range "*" \
  --destination-address-prefix "*" \
  --destination-port-range 80

La máquina virtual de front-end solo es accesible en los puertos 22 y 80.The front-end VM is only accessible on port 22 and port 80. El resto del tráfico entrante se bloquea en el grupo de seguridad de red.All other incoming traffic is blocked at the network security group. Puede ser útil visualizar las configuraciones de reglas de NSG.It may be helpful to visualize the NSG rule configurations. Se puede volver a la configuración de las reglas de NSG con el comando az network rule list.Return the NSG rule configuration with the az network rule list command.

az network nsg rule list --resource-group myRGNetwork --nsg-name myFrontendNSG --output table

Protección de máquinas virtuales para el tráfico de máquinas virtualesSecure VM to VM traffic

También pueden aplicar reglas del grupo de seguridad de red entre máquinas virtuales.Network security group rules can also apply between VMs. En este ejemplo, la máquina virtual de front-end necesita comunicarse con la máquina virtual de back-end en el puerto 22 y el 3306.For this example, the front-end VM needs to communicate with the back-end VM on port 22 and 3306. Esta configuración permite las conexiones SSH desde la máquina virtual de front-end y también permite que una aplicación de la máquina virtual de front-end se comunique con una base de datos MySQL de back-end.This configuration allows SSH connections from the front-end VM, and also allow an application on the front-end VM to communicate with a back-end MySQL database. Se debe bloquear el resto del tráfico entre las máquinas virtuales de front-end y back-end.All other traffic should be blocked between the front-end and back-end virtual machines.

Utilice el comando az network nsg rule create para crear una regla para el puerto 22.Use the az network nsg rule create command to create a rule for port 22. Tenga en cuenta que el argumento --source-address-prefix especifica un valor de 10.0.1.0/24.Notice that the --source-address-prefix argument specifies a value of 10.0.1.0/24. Esta configuración garantiza que solo se permite el tráfico de la subred de front-end a través de NSG.This configuration ensures that only traffic from the front-end subnet is allowed through the NSG.

az network nsg rule create \
  --resource-group myRGNetwork \
  --nsg-name myBackendNSG \
  --name SSH \
  --access Allow \
  --protocol Tcp \
  --direction Inbound \
  --priority 100 \
  --source-address-prefix 10.0.1.0/24 \
  --source-port-range "*" \
  --destination-address-prefix "*" \
  --destination-port-range "22"

Ahora, agregue una regla para el tráfico de MySQL en el puerto 3306.Now add a rule for MySQL traffic on port 3306.

az network nsg rule create \
  --resource-group myRGNetwork \
  --nsg-name myBackendNSG \
  --name MySQL \
  --access Allow \
  --protocol Tcp \
  --direction Inbound \
  --priority 200 \
  --source-address-prefix 10.0.1.0/24 \
  --source-port-range "*" \
  --destination-address-prefix "*" \
  --destination-port-range "3306"

Por último, como los NSG tienen una regla predeterminada que permite todo el tráfico entre las máquinas virtuales de la misma red virtual, se puede crear una regla para que los NSG de back-end bloqueen todo el tráfico.Finally, because NSGs have a default rule allowing all traffic between VMs in the same VNet, a rule can be created for the back-end NSGs to block all traffic. Observe que a --priority se le asigna un valor de 300, que es menor que las reglas de NSG y MySQL.Notice here that the --priority is given a value of 300, which is lower that both the NSG and MySQL rules. Esta configuración garantiza que se sigue permitiendo el tráfico SSH y MySQL a través de NSG.This configuration ensures that SSH and MySQL traffic is still allowed through the NSG.

az network nsg rule create \
  --resource-group myRGNetwork \
  --nsg-name myBackendNSG \
  --name denyAll \
  --access Deny \
  --protocol Tcp \
  --direction Inbound \
  --priority 300 \
  --source-address-prefix "*" \
  --source-port-range "*" \
  --destination-address-prefix "*" \
  --destination-port-range "*"

Creación de la máquina virtual de "back-end"Create back-end VM

Cree una máquina virtual que esté asociada a myBackendSubnet.Now create a virtual machine, which is attached to the myBackendSubnet. Tenga en cuenta que el argumento --nsg tiene un valor de comillas dobles vacías.Notice that the --nsg argument has a value of empty double quotes. No es obligatorio crear un NSG con la máquina virtual.An NSG does not need to be created with the VM. La máquina virtual está conectada a la subred de back-end que está protegida con el NSG de back-end creado previamente.The VM is attached to the back-end subnet, which is protected with the pre-created back-end NSG. Este NSG se aplica a la máquina virtual.This NSG applies to the VM. Además, tenga en cuenta aquí que el argumento --public-ip-address tiene un valor de comillas dobles vacías.Also, notice here that the --public-ip-address argument has a value of empty double quotes. Esta configuración crea una máquina virtual sin una dirección IP pública.This configuration creates a VM without a public IP address.

az vm create \
  --resource-group myRGNetwork \
  --name myBackendVM \
  --vnet-name myVNet \
  --subnet myBackendSubnet \
  --public-ip-address "" \
  --nsg "" \
  --image UbuntuLTS \
  --generate-ssh-keys

La máquina virtual de back-end solo es accesible en los puertos 22 y 3306 desde la subred de front-end.The back-end VM is only accessible on port 22 and port 3306 from the front-end subnet. El resto del tráfico entrante se bloquea en el grupo de seguridad de red.All other incoming traffic is blocked at the network security group. Puede ser útil visualizar las configuraciones de reglas de NSG.It may be helpful to visualize the NSG rule configurations. Se puede volver a la configuración de las reglas de NSG con el comando az network rule list.Return the NSG rule configuration with the az network rule list command.

az network nsg rule list --resource-group myRGNetwork --nsg-name myBackendNSG --output table

Pasos siguientesNext steps

En este tutorial, ha creado y protegido redes de Azure cuando están relacionadas con máquinas virtuales.In this tutorial, you created and secured Azure networks as related to virtual machines. Ha aprendido a:You learned how to:

  • Creación de una red virtual y una subredCreate a virtual network and subnet
  • Crear una dirección IP públicaCreate a public IP address
  • Crear una máquina virtual de front-endCreate a front-end VM
  • Protegen el tráfico de red.Secure network traffic
  • Creación de la máquina virtual de "back-end"Create back-end VM

Prosiga en el siguiente tutorial para aprender a proteger los datos en máquinas virtuales mediante la copia de seguridad de Azure.Advance to the next tutorial to learn about securing data on virtual machines using Azure backup.