Asignación de varias direcciones IP a máquinas virtuales mediante Azure PowerShell
Artículo
Una máquina virtual (VM) de Azure tiene una o varias interfaces de red (NIC) asociadas a ella. Una NIC puede tener una o varias direcciones IP públicas o privadas estáticas o dinámicas asignadas.
La asignación de varias direcciones IP a una VM permite las siguientes capacidades:
Hospedaje de varios sitios web o servicios con direcciones IP y certificados TLS/SSL diferentes en un único servidor.
Actúe como aplicación de red virtual, como un firewall o equilibrador de carga.
La capacidad de agregar cualquier dirección IP privada para cualquiera de las NIC a un grupo de servidores de back-end de Azure Load Balancer. En el pasado, solo la dirección IP principal para la NIC principal podía agregarse a un grupo de back-end. Para más información sobre el equilibrio de carga de varias configuraciones de IP, consulte Equilibrio de carga de varias configuraciones de IP.
Cada NIC conectada a una VM tiene una o varias configuraciones de IP asociadas. Se asigna a cada configuración una dirección IP privada estática o dinámica. Cada configuración también puede tener un recurso de dirección IP pública asociado. Para obtener más información sobre las direcciones IP en Azure, vea Direcciones IP en Azure.
Nota
Todas las configuraciones IP de una sola NIC deben estar asociadas a la misma subred. Si se quieren varias direcciones IP en distintas subredes, se pueden usar varias NIC en una máquina virtual. Para obtener más información sobre cómo usar varias NIC en una máquina virtual en Azure, vea Creación de máquinas virtuales con varias NIC.
Existe un límite para el número de direcciones IP privadas que pueden asignarse a una NIC. También existe un límite para el número de direcciones IP públicas que pueden usarse en una suscripción de Azure. Para más información, consulte el artículo sobre los límites de Azure.
En este artículo se explica cómo agregar varias direcciones IP a una máquina virtual con PowerShell.
Entorno de PowerShell en Azure Cloud Shell o Azure PowerShell instalado localmente. Para obtener más información sobre el uso de PowerShell en Azure Cloud Shell, consulta Inicio rápido de Azure Cloud Shell.
Si decide instalar y usar PowerShell de forma local, para realizar los pasos de este artículo necesita la versión 5.4.1 del módulo de Azure PowerShell o cualquier versión posterior. Ejecute Get-InstalledModule -Name Az para buscar la versión instalada. Si necesita actualizarla, consulte Instalación del módulo de Azure PowerShell. Asegúrese de que el módulo Az.Network es 4.3.0, o cualquier versión posterior. Para comprobar el módulo instalado, use el comando Get-InstalledModule -Name "Az.Network". Si el módulo requiere una actualización, use el comando Update-Module -Name "Az.Network" si es necesario.
Inicie sesión en Azure PowerShell y asegúrese de que ha seleccionado la suscripción con la que quiere usar esta característica. Para obtener más información, consulte Inicio de sesión con Azure PowerShell.
Nota
Aunque los pasos de este artículo asignan todas las configuraciones de IP a una NIC única, también puede asignar varias configuraciones de IP a cualquiera de las NIC de una máquina virtual con varias NIC. Para aprender a crear una VM con varias NIC, consulte Implementación de máquinas virtuales con varias NIC.
Figura: Diagrama de los recursos de configuración de red creados en este artículo de procedimientos
Crear un grupo de recursos
Un grupo de recursos de Azure es un contenedor lógico en el que se implementan y se administran los recursos de Azure.
Cree un grupo de recursos con New-AzResourceGroup con el nombre myResourceGroup en la ubicación eastus2.
En esta sección creas un grupo de seguridad de red para la máquina virtual y la red virtual. Creas una regla para permitir conexiones a la máquina virtual en el puerto 22 para SSH.
## Create rule for network security group and place in variable. ##$nsgrule1 = @{
Name = 'myNSGRuleSSH'
Description = 'Allow SSH'
Protocol = '*'
SourcePortRange = '*'
DestinationPortRange = '22'
SourceAddressPrefix = 'Internet'
DestinationAddressPrefix = '*'
Access = 'Allow'
Priority = '200'
Direction = 'Inbound'
}
$rule1 = New-AzNetworkSecurityRuleConfig @nsgrule1
## Create network security group ##$nsg = @{
Name = 'myNSG'
ResourceGroupName = 'myResourceGroup'
Location = 'eastus2'
SecurityRules = $rule1
}
New-AzNetworkSecurityGroup @nsg
Crear una interfaz de red
Use New-AzNetworkInterface y New-AzNetworkInterfaceIpConfig para crear la interfaz de red para la máquina virtual. La dirección IP pública y el grupo de seguridad de red creados anteriormente están asociados a la interfaz de red. La interfaz de red está conectada a la red virtual creada anteriormente.
Azure PowerShell
## Place the virtual network into a variable. ##$net = @{
Name = 'myVNet'
ResourceGroupName = 'myResourceGroup'
}
$vnet = Get-AzVirtualNetwork @net
## Place the network security group into a variable. ##$ns = @{
Name = 'myNSG'
ResourceGroupName = 'myResourceGroup'
}
$nsg = Get-AzNetworkSecurityGroup @ns
## Place the primary public IP address into a variable. ##$pub1 = @{
Name = 'myPublicIP-1'
ResourceGroupName = 'myResourceGroup'
}
$pubIP1 = Get-AzPublicIPAddress @pub1
## Create a primary IP configuration for the network interface. ##$IP1 = @{
Name = 'ipconfig1'
Subnet = $vnet.Subnets[0]
PrivateIpAddressVersion = 'IPv4'
PublicIPAddress = $pubIP1
}
$IP1Config = New-AzNetworkInterfaceIpConfig @IP1 -Primary## Create a secondary IP configuration for the network interface. ##$IP3 = @{
Name = 'ipconfig3'
Subnet = $vnet.Subnets[0]
PrivateIpAddressVersion = 'IPv4'
PrivateIpAddress = '10.1.0.6'
}
$IP3Config = New-AzNetworkInterfaceIpConfig @IP3
## Command to create a network interface. ##$nic = @{
Name = 'myNIC1'
ResourceGroupName = 'myResourceGroup'
Location = 'eastus2'
NetworkSecurityGroup = $nsg
IpConfiguration = $IP1Config,$IP3Config
}
New-AzNetworkInterface @nic
Nota
Al agregar una dirección IP estática, debe especificar una dirección válida no utilizada en la subred a la que la está conectada la NIC.
Creación de una máquina virtual
Use los siguientes comandos para crear la máquina virtual:
## Place the virtual network into a variable. ##$net = @{
Name = 'myVNet'
ResourceGroupName = 'myResourceGroup'
}
$vnet = Get-AzVirtualNetwork @net
## Place your virtual network subnet into a variable. ##$sub = @{
Name = 'myBackendSubnet'
VirtualNetwork = $vnet
}
$subnet = Get-AzVirtualNetworkSubnetConfig @sub
## Place the secondary public IP address you created previously into a variable. ##$pip = @{
Name = 'myPublicIP-2'
ResourceGroupName = 'myResourceGroup'
}
$pubIP2 = Get-AzPublicIPAddress @pip
## Place the network interface into a variable. ##$net = @{
Name = 'myNIC1'
ResourceGroupName = 'myResourceGroup'
}
$nic = Get-AzNetworkInterface @net
## Create a secondary IP configuration for the network interface. ##$IPc2 = @{
Name = 'ipconfig2'
Subnet = $vnet.Subnets[0]
PrivateIpAddressVersion = 'IPv4'
PrivateIpAddress = '10.1.0.5'
PublicIPAddress = $pubIP2
}
$IP2Config = New-AzNetworkInterfaceIpConfig @IPc2
## Add the IP configuration to the network interface. ##$nic.IpConfigurations.Add($IP2Config)
## Save the configuration to the network interface. ##$nic | Set-AzNetworkInterface
Incorporación de direcciones IP a un sistema operativo de la máquina virtual
Conéctese e inicie sesión en una máquina virtual que creó con múltiples direcciones IP privadas. Debe agregar manualmente todas las direcciones IP privadas (incluida la principal) que ha agregado a la máquina virtual. Complete los pasos siguientes para el sistema operativo de su máquina virtual.
Windows Server
Expandir
Abra un símbolo del sistema o PowerShell.
En la línea de comandos, escriba ipconfig /all. Verá la dirección IP privada Principal que se asignó mediante DHCP.
Escriba ncpa.cpl en la línea de comandos para abrir la configuración Conexiones de red.
Abra Propiedades del adaptador de red asignado a las nuevas direcciones IP.
Haga doble clic en Protocolo de Internet versión 4 (TCP/IPv4).
Seleccione Usar la siguiente dirección IP: Escriba los siguientes valores:
Configuración
Valor
Dirección IP:
Escriba la dirección IP privada Principal.
Máscara de subred:
Escriba una máscara de subred basada en la dirección IP. Por ejemplo, si la subred es una subred /24, la máscara de subred es 255.255.255.0.
Puerta de enlace predeterminada:
la primera dirección IP de la subred. Si la subred es 10.0.0.0/24, la dirección IP de la puerta de enlace es 10.0.0.1.
Seleccione Usar las siguientes direcciones de servidor DNS: Escriba los siguientes valores:
Configuración
Valor
Servidor DNS preferido:
Escriba el servidor DNS principal. Escriba la dirección IP de 168.63.129.16 para usar el DNS predeterminado proporcionado por Azure.
Seleccione el botón Advanced (Opciones avanzadas).
Seleccione Agregar.
Escriba la dirección IP privada que agregó a la interfaz de red de Azure. Escriba la máscara de subred correspondiente. Seleccione Agregar.
Repita los pasos anteriores para agregar cualquier dirección IP privada adicional que haya agregado a la interfaz de red de Azure.
Importante
No asigne manualmente la dirección IP pública asignada a una máquina virtual de Azure en el sistema operativo de la máquina virtual. Al establecer manualmente la dirección IP privada en el sistema operativo, asegúrese de que sea la misma que la asignada a la interfaz de red de Azure. Si no se asigna correctamente la dirección, se puede perder la conectividad a la máquina virtual. Para más información, consulte Cambio de configuración de las direcciones IP.
Para validar la conectividad a Internet desde la configuración de IP secundaria a través de la dirección IP pública, use el siguiente comando. Reemplace 10.1.0.5 por la dirección IP privada secundaria que agregó a la interfaz de red de máquina virtual de Azure.
PowerShell
ping -S10.1.0.5 outlook.com
Nota
Para las configuraciones de IP secundarias, se puede hacer ping a Internet si la configuración tiene una dirección IP pública asociada. Para configuraciones de IP principales, no se requiere una dirección IP pública para hacer ping a Internet.
SUSE Linux Enterprise y openSUSE
Expandir
Las distribuciones basadas en SUSE usan el complemento de cloud-netconfig del paquete cloud-netconfig-azure para administrar direcciones IP adicionales. No se requiere ninguna configuración manual por parte del administrador. La primera dirección IP de un conjunto de interfaces en la plataforma se asigna a través de DHCP. Después, el complemento cloud-netconfig sondea continuamente la API de Azure Instance Metadata Service (una vez por minuto) para las direcciones IP adicionales asignadas a la interfaz y las agrega o quita como direcciones IP secundarias automáticamente.
Este complemento debe instalarse y habilitarse en imágenes nuevas de forma predeterminada. Los pasos de configuración de las cargas de trabajo antiguas se pueden encontrar aquí: https://www.suse.com/c/multi-nic-cloud-netconfig-ec2-azure/.
Ubuntu 14/16
Expandir
Se recomienda revisar la documentación más reciente de la distribución de Linux.
Abra una ventana del terminal.
Asegúrese de ser el usuario raíz. Si no lo es, escriba el siguiente comando:
Bash
sudo -i
Actualice el archivo de configuración de la interfaz de red (suponiendo que sea "eth0").
Mantenga el elemento de línea existente para dhcp. La dirección IP principal permanece configurada que estaba.
Agregue una configuración para una dirección IP estática adicional con los siguientes comandos:
Bash
cd /etc/network/interfaces.d/
ls
Debería ver un archivo .cfg.
Abra el archivo. Debería ver las siguientes líneas al final del archivo:
Bash
auto eth0
iface eth0 inet dhcp
Agregue las líneas siguientes después de las que existen en el archivo. Reemplace 10.1.0.5 por la dirección IP privada y la máscara de subred.
Restablezca la interfaz de red con el comando siguiente:
Bash
ifdown eth0 && ifup eth0
Importante
Si usa una conexión remota, ejecute ifdown e ifup en la misma línea.
Compruebe que la dirección IP se agregue a la interfaz de red con el comando siguiente:
Bash
ip addr list eth0
Debería ver la dirección IP que agregó en la lista. Ejemplo:
Bash
2: eth0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc mq state UP group default qlen 1000
link/ether 00:0d:3a:04:45:16 brd ff:ff:ff:ff:ff:ff
inet 10.1.0.5/24 brd 10.1.0.255 scope global eth0
valid_lft forever preferred_lft forever
inet 10.1.0.6/24 brd 10.1.0.255 scope global secondary eth0
valid_lft forever preferred_lft forever
inet 10.1.0.4/24 brd 10.1.0.255 scope global secondary eth0
valid_lft forever preferred_lft forever
inet6 fe80::20d:3aff:fe04:4516/64 scope link
valid_lft forever preferred_lft forever
Validación (Ubuntu 14/16)
Para asegurarse de que puede conectarse a internet desde su configuración de IP secundaria a través de la dirección IP pública asociada, use el siguiente comando:
Bash
ping -I 10.1.0.5 outlook.com
Nota
Para las configuraciones de IP secundarias, solo se puede hacer ping a Internet si la configuración tiene una dirección IP pública asociada. Para configuraciones de IP principales, no se requiere una dirección IP pública para hacer ping a Internet.
Para máquinas virtuales Linux, al intentar validar la conectividad saliente de una NIC secundaria, debe agregar las rutas adecuadas. Consulte la documentación correspondiente a su distribución de Linux. El siguiente es un método para lograr esto:
Bash
echo 150 custom >> /etc/iproute2/rt_tables
ip rule add from 10.1.0.5 lookup custom
ip route add default via 10.1.0.1 dev eth2 table custom
Asegúrese de reemplazar:
10.1.0.5 con la dirección IP privada que tiene una dirección IP pública asociada
10.1.0.1 con su puerta de enlace predeterminada
eth2 con el nombre de la NIC secundaria
Ubuntu 18.04 y versiones posteriores
Expandir
Ubuntu 18.04 y versiones posteriores han cambiado a netplan para la administración de red del sistema operativo. Se recomienda revisar la documentación más reciente de la distribución de Linux.
Abra una ventana del terminal.
Asegúrese de ser el usuario raíz. Si no lo es, escriba el siguiente comando:
Bash
sudo -i
Cree un archivo para la segunda interfaz y ábralo en un editor de texto:
Bash
vi /etc/netplan/60-static.yaml
Agregue las líneas siguientes al archivo, reemplazando 10.1.0.5/24 por la dirección IP y máscara de subred:
Pruebe los cambios mediante netplan try para confirmar la sintaxis:
Bash
netplan try
Nota
netplan try aplicará los cambios de forma temporal y los revertirá después de 120 segundos. Si se produce una pérdida de conectividad, espere 120 segundos y vuelva a conectarse. En ese momento, los cambios se habrán revertido.
Si no hay ningún problema con netplan try, aplique los cambios de configuración:
Bash
netplan apply
Compruebe que la dirección IP se agregue a la interfaz de red con el comando siguiente:
Bash
ip addr list eth0
Debería ver la dirección IP que agregó en la lista. Ejemplo:
Bash
2: eth0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc mq state UP group default qlen 1000
link/ether 00:0d:3a:04:45:16 brd ff:ff:ff:ff:ff:ff
inet 10.1.0.5/24 brd 10.1.0.255 scope global eth0
valid_lft forever preferred_lft forever
inet 10.1.0.6/24 brd 10.1.0.255 scope global secondary eth0
valid_lft forever preferred_lft forever
inet 10.1.0.4/24 brd 10.1.0.255 scope global secondary eth0
valid_lft forever preferred_lft forever
inet6 fe80::20d:3aff:fe04:4516/64 scope link
valid_lft forever preferred_lft forever
Validación (Ubuntu 18.04+)
Para asegurarse de que puede conectarse a internet desde su configuración de IP secundaria a través de la dirección IP pública asociada, use el siguiente comando:
Bash
ping -I 10.1.0.5 outlook.com
Nota
Para las configuraciones de IP secundarias, solo se puede hacer ping a Internet si la configuración tiene una dirección IP pública asociada. Para configuraciones de IP principales, no se requiere una dirección IP pública para hacer ping a Internet.
Para máquinas virtuales Linux, al intentar validar la conectividad saliente de una NIC secundaria, debe agregar las rutas adecuadas. Existen distintas formas de hacerlo. Consulte la documentación correspondiente a su distribución de Linux. El siguiente es un método para lograr esto:
Bash
echo 150 custom >> /etc/iproute2/rt_tables
ip rule add from 10.1.0.5 lookup custom
ip route add default via 10.1.0.1 dev eth2 table custom
Asegúrese de reemplazar:
10.1.0.5 con la dirección IP privada que tiene una dirección IP pública asociada
10.1.0.1 con su puerta de enlace predeterminada
eth2 con el nombre de la NIC secundaria
Red Hat Enterprise Linux y otros
Expandir
Abra una ventana del terminal.
Asegúrese de ser el usuario raíz. Si no lo es, escriba el siguiente comando:
Bash
sudo -i
Escriba la contraseña y siga las instrucciones que aparezcan. Una vez que sea el usuario raíz, vaya a la carpeta de scripts de red con el comando siguiente:
Bash
cd /etc/sysconfig/network-scripts
Muestra una lista de los archivos de ifcfg relacionados con el siguiente comando:
Bash
ls ifcfg-*
Debería ver ifcfg-eth0 como uno de los archivos.
Para agregar una dirección IP, cree un archivo de configuración, tal y como se muestra a continuación. Tenga en cuenta que debe crearse un archivo para cada configuración de IP.
Bash
touch ifcfg-eth0:0
Abra el archivo ifcfg-eth0:0 con el comando siguiente:
Bash
vi ifcfg-eth0:0
Agregue contenido al archivo, eth0:0 en este caso, con el siguiente comando. Reemplace 10.1.0.5 por la dirección IP privada y la máscara de subred adicionales.
Para agregar direcciones IP privadas adicionales a la configuración de red, cree archivos de configuración adicionales y agregue la información de IP al archivo.
Para asegurarse de que puede conectarse a internet desde su configuración de IP secundaria a través de la dirección IP pública asociada, use el siguiente comando:
Bash
ping -I 10.0.0.5 outlook.com
Nota
Para las configuraciones de IP secundarias, solo se puede hacer ping a Internet si la configuración tiene una dirección IP pública asociada. Para configuraciones de IP principales, no se requiere una dirección IP pública para hacer ping a Internet.
Para máquinas virtuales Linux, al intentar validar la conectividad saliente de una NIC secundaria, debe agregar las rutas adecuadas. Consulte la documentación correspondiente a su distribución de Linux. El siguiente es un método para lograr esto:
Bash
echo 150 custom >> /etc/iproute2/rt_tables
ip rule add from 10.1.0.5 lookup custom
ip route add default via 10.1.0.1 dev eth2 table custom
Asegúrese de reemplazar:
10.0.0.5 con la dirección IP privada que tiene una dirección IP pública asociada
10.0.0.1 con su puerta de enlace predeterminada
eth2 con el nombre de la NIC secundaria
Debian GNU/Linux
Expandir
Se recomienda revisar la documentación más reciente de la distribución de Linux.
Abra una ventana del terminal.
Asegúrese de ser el usuario raíz. Si no lo es, escriba el siguiente comando:
Bash
sudo -i
Actualice el archivo de configuración de la interfaz de red (suponiendo que sea "eth0").
Mantenga el elemento de línea existente para dhcp. La dirección IP principal permanece configurada que estaba.
Agregue una configuración para una dirección IP estática adicional con los siguientes comandos:
Bash
cd /etc/network/interfaces.d/
ls
Debería ver un archivo .cfg.
Abra el archivo. Debería ver las siguientes líneas al final del archivo:
Bash
auto eth0
iface eth0 inet dhcp
Agregue las líneas siguientes después de las que existen en el archivo. Reemplace 10.1.0.5 por la dirección IP privada y la máscara de subred.
Reinicie los servicios de red para que los cambios surtan efecto. En Debian 8 y versiones posteriores, esta acción se puede hacer mediante el comando siguiente:
Bash
systemctl restart networking
En versiones anteriores de Debian, puede usar los siguientes comandos:
Bash
service networking restart
Compruebe que la dirección IP se agregue a la interfaz de red con el comando siguiente:
Bash
ip addr list eth0
Debería ver la dirección IP que agregó en la lista. Ejemplo:
Bash
2: eth0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc mq state UP group default qlen 1000
link/ether 00:0d:3a:04:45:16 brd ff:ff:ff:ff:ff:ff
inet 10.1.0.5/24 brd 10.1.0.255 scope global eth0
valid_lft forever preferred_lft forever
inet 10.1.0.6/24 brd 10.1.0.255 scope global secondary eth0
valid_lft forever preferred_lft forever
inet 10.1.0.4/24 brd 10.1.0.255 scope global secondary eth0
valid_lft forever preferred_lft forever
inet6 fe80::20d:3aff:fe04:4516/64 scope link
valid_lft forever preferred_lft forever
Validación (Debian GNU/Linux)
Para asegurarse de que puede conectarse a internet desde su configuración de IP secundaria a través de la dirección IP pública asociada, use el siguiente comando:
Bash
ping -I 10.1.0.5 outlook.com
Nota
Para las configuraciones de IP secundarias, solo se puede hacer ping a Internet si la configuración tiene una dirección IP pública asociada. Para configuraciones de IP principales, no se requiere una dirección IP pública para hacer ping a Internet.
Para máquinas virtuales Linux, al intentar validar la conectividad saliente de una NIC secundaria, debe agregar las rutas adecuadas. Consulte la documentación correspondiente a su distribución de Linux. El siguiente es un método para lograr esto:
Bash
echo 150 custom >> /etc/iproute2/rt_tables
ip rule add from 10.1.0.5 lookup custom
ip route add default via 10.1.0.1 dev eth2 table custom
Asegúrese de reemplazar:
10.1.0.5 con la dirección IP privada que tiene una dirección IP pública asociada
Muestre el diseño, la implementación y el mantenimiento de la infraestructura de red de Azure, el tráfico de equilibrio de carga, el enrutamiento de red, etc.
Obtenga información sobre cómo crear y administrar una máquina virtual con Windows que tenga varias tarjetas de interfaz de red (NIC) conectadas a ella mediante Azure PowerShell o las plantillas de Resource Manager.