将公共 IP 地址关联到虚拟机

本文介绍如何将公共 IP 地址关联到现有的虚拟机 (VM)。 若要使用公共 IP 地址创建新的 VM,可以使用 Azure 门户Azure CLIAzure PowerShell 来完成此操作。 公共 IP 地址会产生少许费用。 有关详细信息,请参阅定价。 每个订阅可以使用的公共 IP 地址数有限制。 有关详细信息,请参阅限制

可以使用 Azure 门户Azure CLIAzure PowerShell 将公共 IP 地址关联到 VM。

注意

Azure 会为未分配公共 IP 地址的 VM 或位于内部基本 Azure 负载均衡器的后端池中的 VM 提供默认出站访问 IP。 默认出站访问 IP 机制会提供不可配置的出站 IP 地址。

当将公共 IP 地址分配给 VM、将 VM 放置在具有或不具有出站规则的标准负载均衡器的后端池中,或者将 Azure 虚拟网络 NAT 网关资源分配给 VM 的子网时,默认禁用出站访问 IP。

有关 Azure 中的出站连接的详细信息,请参阅 Azure 中的默认出站访问权限使用用于出站连接的源网络地址转换 (SNAT)

Azure 门户

  1. 登录到 Azure 门户

  2. 浏览或搜索要将公共 IP 地址添加到的虚拟机,然后将其选中。

  3. 在“设置”下选择“网络”,然后选择要将公共 IP 地址添加到的网络接口,如下图所示:

    展示了如何选择虚拟机网络接口的屏幕截图。

    注意

    公共 IP 地址将关联到 VM 上附加的网络接口。 上图中的 VM 只有一个网络接口。 如果 VM 有多个网络接口,它们都会显示,你需要选择要将公共 IP 地址关联到的网络接口。

  4. 选择“IP 配置”,然后选择一种 IP 配置,如下图所示:

    展示了如何选择网络接口的 IP 配置的屏幕截图。

    注意

    公共 IP 地址将关联到网络接口的 IP 配置。 上图中的网络接口只有一种 IP 配置。 如果网络接口有多种 IP 配置,它们都会出现在列表中,你需要选择要将公共 IP 地址关联到的 IP 配置。

  5. 选择“关联”,然后选择“选择公共 IP 地址”以选择现有的公共 IP 地址。 如果未列出任何可用的公共 IP 地址,则需要创建一个。 若要了解如何创建,请参阅创建公共 IP 地址

    展示了如何选择和关联现有公共 IP 的屏幕截图。

  6. 如下图所示选择“保存”,然后关闭 IP 配置框。

    显示了所选公共 IP 的屏幕截图。

    注意

    显示的公共 IP 地址是 VM 所在的同一区域中的 IP 地址。 如果在该区域中创建了多个公共 IP 地址时,所有 IP 地址都会显示在此处。 如果有任何 IP 地址灰显,原因是该地址已关联到不同的资源。

  7. 查看分配给 IP 配置的公共 IP 地址,如下图所示。 IP 地址可能需要在几秒钟后才会显示。

    显示了新分配的公共 IP 的屏幕截图。

    注意

    地址是从每个 Azure 区域中使用的地址池分配的。 若要查看每个区域中使用的地址池列表,请参阅中国的 Azure 数据中心 IP 范围。 分配的地址可能是用于该区域的池中的任何地址。 如果需要从区域中的特定池分配地址,请使用公共 IP 地址前缀

  8. 使用网络安全组中的安全规则允许将网络流量发往 VM

Azure CLI

在本地计算机上安装并使用 Azure CLI

  1. 如果在 Bash 本地使用 CLI,请使用 az login 登录到 Azure。

  2. 公共 IP 地址将关联到 VM 上附加的网络接口的 IP 配置。 使用 az network nic ip-config update 命令将公共 IP 地址关联到 IP 配置。 以下示例将现有公共 IP 地址 myPublicIP 关联到资源组 myResourceGroup 中现有网络接口 myVMNic 的 IP 配置 ipconfig1。

    az network nic ip-config update \
      --name ipconfig1 \
      --nic-name myVMNic \
      --resource-group myResourceGroup \
      --public-ip-address myPublicIP
    
    • 如果没有现有的公共 IP 地址,请使用 az network public-ip create 命令创建一个。 例如,以下命令在名为 myResourceGroup 的资源组中创建名为 myPublicIP 的公共 IP 地址。

      az network public-ip create --name myPublicIP --resource-group myResourceGroup
      

      注意

      以上命令使用你可能想要自定义的多个设置的默认值创建一个公共 IP 地址。 若要详细了解所有的公共 IP 地址设置,请参阅创建公共 IP 地址。 地址是从每个 Azure 区域使用的公共 IP 地址池分配的。 若要查看每个区域中使用的地址池列表,请参阅中国的 Azure 数据中心 IP 范围

    • 如果你不知道附加到 VM 的网络接口的名称,请使用 az vm nic list 命令查看名称。 例如,以下命令会列出附加到资源组 myResourceGroup 中 VM myVM 的网络接口的名称:

      az vm nic list --vm-name myVM --resource-group myResourceGroup
      

      输出中包含类似于以下示例的一个或多个行:

      "id": "/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/myResourceGroup/providers/Microsoft.Network/networkInterfaces/myVMNic",
      

      在上一个示例中,myVMNic 是网络接口的名称。

    • 如果你不知道网络接口的 IP 配置的名称,请使用 az network nic ip-config list 命令检索名称。 例如,以下命令列出了名为 myResourceGroup 的资源组中名为 myVMNic 的网络接口的 IP 配置的名称:

      az network nic ip-config list --nic-name myVMNic --resource-group myResourceGroup --out table
      
  3. 使用 az vm list-ip-addresses 命令查看分配到 IP 配置的公共 IP 地址。 以下示例显示分配到资源组 myResourceGroup 中现有 VM myVM 的 IP 地址。

    az vm list-ip-addresses --name myVM --resource-group myResourceGroup --out table
    

    注意

    地址是从每个 Azure 区域中使用的地址池分配的。 若要查看每个区域中使用的地址池列表,请参阅中国的 Azure 数据中心 IP 范围。 分配的地址可能是用于该区域的池中的任何地址。 如果需要从区域中的特定池分配地址,请使用公共 IP 地址前缀

  4. 使用网络安全组中的安全规则允许将网络流量发往 VM

PowerShell

在本地计算机上通过管理员权限安装和使用 PowerShell

  1. 如果在本地使用 PowerShell,请使用 Connect-AzAccount -Environment AzureChinaCloud 登录到 Azure。

  2. 公共 IP 地址将关联到 VM 上附加的网络接口的 IP 配置。 使用 Get-AzVirtualNetworkGet-AzVirtualNetworkSubnetConfig 命令获取网络接口所在的虚拟网络和子网。 接下来,使用 Get-AzNetworkInterface 命令获取网络接口,并使用 Get-AzPublicIpAddress 命令获取现有的公共 IP 地址。 然后使用 Set-AzNetworkInterfaceIpConfig 命令将公共 IP 地址关联到 IP 配置,并使用 Set-AzNetworkInterface 命令将新 IP 配置写入到网络接口。

    以下示例将现有公共 IP 地址 myPublicIP 关联到现有网络接口 myVMNic 的 IP 配置 ipconfig1,该网络接口位于虚拟网络 myVNet 的子网 mySubnet 中。 所有资源位于名为 myResourceGroup 的资源组中。

    $vnet = Get-AzVirtualNetwork -Name myVNet -ResourceGroupName myResourceGroup
    $subnet = Get-AzVirtualNetworkSubnetConfig -Name mySubnet -VirtualNetwork $vnet
    $nic = Get-AzNetworkInterface -Name myVMNic -ResourceGroupName myResourceGroup
    $pip = Get-AzPublicIpAddress -Name myPublicIP -ResourceGroupName myResourceGroup
    $nic | Set-AzNetworkInterfaceIpConfig -Name ipconfig1 -PublicIPAddress $pip -Subnet $subnet
    $nic | Set-AzNetworkInterface
    
    • 如果没有现有的公共 IP 地址,请使用 New-AzPublicIpAddress 命令创建一个。 例如,以下命令在 chinaeast 区域的名为 myResourceGroup 的资源组中,创建名为 myPublicIP 的动态公共 IP 地址。

      New-AzPublicIpAddress -Name myPublicIP -ResourceGroupName myResourceGroup -AllocationMethod Dynamic -Location chinaeast
      

      注意

      以上命令使用你可能想要自定义的多个设置的默认值创建一个公共 IP 地址。 若要详细了解所有的公共 IP 地址设置,请参阅创建公共 IP 地址。 地址是从每个 Azure 区域使用的公共 IP 地址池分配的。 若要查看每个区域中使用的地址池列表,请参阅中国的 Azure 数据中心 IP 范围

    • 如果你不知道附加到 VM 的网络接口的名称,请使用 Get-AzVM 命令查看名称。 例如,以下命令会列出附加到资源组 myResourceGroup 中 VM myVM 的网络接口的名称:

      $vm = Get-AzVM -name myVM -ResourceGroupName myResourceGroup
      $vm.NetworkProfile
      

      输出中包含类似于以下示例的一个或多个行。 在示例输出中,myVMNic 是网络接口的名称。

      "id": "/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/myResourceGroup/providers/Microsoft.Network/networkInterfaces/myVMNic",
      
    • 如果你不知道网络接口所在的虚拟网络或子网的名称,请使用 Get-AzNetworkInterface 命令查看该信息。 例如,以下命令获取名为 myResourceGroup 的资源组中名为 myVMNic 的网络接口的虚拟网络和子网信息:

      $nic = Get-AzNetworkInterface -Name myVMNic -ResourceGroupName myResourceGroup
      $ipConfigs = $nic.IpConfigurations
      $ipConfigs.Subnet | Select Id
      

      输出中包含类似于以下示例的一个或多个行。 在示例输出中,myVNet 是虚拟网络的名称,mySubnet 是子网的名称。

      "/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/myResourceGroup/providers/Microsoft.Network/virtualNetworks/myVNet/subnets/mySubnet",
      
    • 如果你不知道网络接口的 IP 配置的名称,请使用 Get-AzNetworkInterface 命令检索名称。 例如,以下命令列出了名为 myResourceGroup 的资源组中名为 myVMNic 的网络接口的 IP 配置的名称:

      $nic = Get-AzNetworkInterface -Name myVMNic -ResourceGroupName myResourceGroup
      $nic.IPConfigurations
      

      输出中包含类似于以下示例的一个或多个行。 在示例输出中,ipconfig1 是 IP 配置的名称。

      Id     : /subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/myResourceGroup/providers/Microsoft.Network/networkInterfaces/myVMNic/ipConfigurations/ipconfig1
      
  3. 使用 Get-AzPublicIpAddress 命令查看分配到 IP 配置的公共 IP 地址。 以下示例显示分配到资源组 myResourceGroup 中公共 IP 地址 myPublicIP 的地址。

    Get-AzPublicIpAddress -Name myPublicIP -ResourceGroupName myResourceGroup | Select IpAddress
    

    如果你不知道分配到 IP 配置的公共 IP 地址的名称,请运行以下命令获取该名称:

    $nic = Get-AzNetworkInterface -Name myVMNic -ResourceGroupName myResourceGroup
    $nic.IPConfigurations
    $address = $nic.IPConfigurations.PublicIpAddress
    $address | Select Id
    

    输出中包含类似于以下示例的一个或多个行。 在示例输出中,myPublicIP 是分配到 IP 配置的公共 IP 地址的名称。

    "/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/myResourceGroup/providers/Microsoft.Network/publicIPAddresses/myPublicIP"
    

    注意

    地址是从每个 Azure 区域中使用的地址池分配的。 若要查看每个区域中使用的地址池列表,请参阅中国的 Azure 数据中心 IP 范围。 分配的地址可能是用于该区域的池中的任何地址。 如果需要从区域中的特定池分配地址,请使用公共 IP 地址前缀

  4. 使用网络安全组中的安全规则允许将网络流量发往 VM

允许将网络流量发往 VM

在从 Inernet 连接到公共 IP 地址之前,请确保已在可能与网络接口和/或网络接口的子网关联的任何网络安全组中打开所需的端口。 尽管安全组会筛选发往网络接口专用 IP 地址的流量,但一旦入站 Internet 流量抵达公共 IP 地址,Azure 就会将公共地址转换成专用 IP 地址,因此,如果网络安全组阻止流量流,则与公共 IP 地址的通信就会失败。 可以使用门户CLIPowerShell 查看网络接口及其子网的有效安全规则。

后续步骤

在本文中,你已学习了如何使用 Azure 门户、Azure CLI 或 Azure PowerShell 将公共 IP 地址关联到 VM。

使用一个网络安全组来允许将入站 Internet 流量发往你的 VM。 若要了解如何创建网络安全组,请参阅使用网络安全组