本文介绍如何将公共 IP 地址关联到现有的虚拟机 (VM)。 要执行此操作,请将公共 IP 地址与附加到 VM 的网络接口的 IP 配置相关联。 可使用 Azure 门户 Azure CLI Azure PowerShell

若要选择使用公共 IP 地址创建新的 VM,可以使用 Azure 门户 Azure CLI Azure PowerShell

公共 IP 地址会产生少许费用。 有关详细信息,请参阅 定价 。 每个订阅可以使用的公共 IP 地址数有限制。 有关详细信息,请参阅 限制

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

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

在灵活业务流程模式下由虚拟机规模集创建的 VM 没有默认的出站访问权限。

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

  • 具有活动订阅的 Azure 帐户。 你可以 免费创建一个帐户
  • Azure 门户

  • 登录 Azure 门户

  • 在门户中,搜索并选择要向其添加公共 IP 地址的 VM。

  • 在左侧窗格的“ 设置 ”下选择“ 网络 ”,然后选择要将公共 IP 地址添加到的网络接口。

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

  • 在“ 网络接口 ”窗口的“ 设置 ”下,选择“ IP 配置 *”,然后从列表中选择一个 IP 配置。

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

  • 选择“ 关联 ”,然后选择“ 公共 IP 地址 ”以从下拉列表中选择现有的公共 IP 地址。 如果未列出任何公共 IP 地址,则需要创建一个。 若要了解如何创建,请参阅 创建公共 IP 地址

  • 选择“ 保存 ”,然后关闭 IP 配置窗口。

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

  • 在“ 网络接口 ”窗口中,查看分配给 IP 配置的公共 IP 地址。 新关联的 IP 地址可能需要几秒钟才能出现。

    IP 地址是从为 Azure 区域保留的公共 IP 地址池分配的。 若要查看每个区域中使用的地址池列表,请参阅 Azure IP 范围和服务标记 。 如果需要从特定前缀分配地址,请使用 公共 IP 地址前缀

  • 通过调整网络安全组中的安全规则,打开安全组中所需的端口。 如需相关信息,请参阅 允许发到 VM 的网络流量

    Azure CLI

    在计算机上安装 Azure CLI ,或使用 Azure Cloud Shell。 Cloud Shell 是可直接在 Azure 门户中运行的免费 Bash shell。 它预安装了 Azure CLI 并将其配置为与你的 Azure 帐户一起使用。 在后面的 Azure CLI 代码示例中选择“ 打开 Cloudshell ”按钮。 选择“ 打开 Cloudshell ”时,Cloud Shell 会在浏览器中加载,并提示你登录 Azure 帐户。

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

  • 使用 az network nic ip-config update 命令将公共 IP 地址关联到 IP 配置。 以下示例将名为 myPublicIP 的现有公共 IP 地址关联到名为 ipconfig1 的 IP 配置。 此 IP 配置属于名为 myResourceGroup 的资源组中名为 myVMNic 的现有网络接口。

    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 地址。 IP 地址是从为 Azure 区域保留的公共 IP 地址池分配的。 若要查看每个区域中使用的地址池列表,请参阅 Azure IP 范围和服务标记。 如果需要从特定前缀分配地址,请使用公共 IP 地址前缀

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

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

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

    "id": "/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/myResourceGroup/providers/Microsoft.Network/networkInterfaces/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
    
  • 使用 az vm list-ip-addresses 命令查看分配到 IP 配置的公共 IP 地址。 以下示例显示分配到资源组 myResourceGroup 中现有 VM myVM 的 IP 地址。

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

    IP 地址是从为 Azure 区域保留的公共 IP 地址池分配的。 若要查看每个区域中使用的地址池列表,请参阅 Azure IP 范围和服务标记。 如果需要从特定前缀分配地址,请使用公共 IP 地址前缀

  • 通过调整网络安全组中的安全规则,打开安全组中所需的端口。 如需相关信息,请参阅允许发到 VM 的网络流量

    Azure PowerShell

    在计算机上安装 Azure PowerShell 或使用 Cloud Shell。 Cloud Shell 是可直接在 Azure 门户中运行的免费 Bash shell。 它预安装了 Azure PowerShell,并配置为与你的 Azure 帐户一起使用。 在后面的 Azure PowerShell 代码示例中选择“打开 Cloudshell”按钮。 选择“打开 Cloudshell”时,Cloud Shell 会在浏览器中加载,并提示你登录 Azure 帐户。

  • 如果在本地使用 Azure PowerShell,请使用 Connect-AzAccount 登录到 Azure。

  • 使用 Get-AzVirtualNetwork 命令检索资源组中的虚拟网络。 然后,使用 Get-AzVirtualNetworkSubnetConfig 命令检索虚拟网络中的子网配置。

  • 使用 Get-AzNetworkInterface 命令检索资源组中的网络接口。 然后,使用 Get-AzPublicIpAddress 命令检索资源组中的现有公共 IP 地址。

  • 使用 Set-AzNetworkInterfaceIpConfig 命令将公共 IP 地址与 IP 配置相关联。 然后,使用 Set-AzNetworkInterface 命令将新 IP 配置写入网络接口。

    以下示例将名为 myPublicIP 的现有公共 IP 地址关联到名为 ipconfig1 的 IP 配置。 此 IP 配置属于名为 myVNet 的虚拟网络中名为 mySubnet 的子网中名为 myVMNic 的现有网络接口。 所有资源位于名为 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 命令创建一个。 例如,以下命令在 eastus 区域中名为 myResourceGroup 的资源组中创建名为 myPublicIP 的动态公共 IP 地址。

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

    此命令使用你可能想要自定义的多个设置的默认值创建一个公共 IP 地址。 若要详细了解公共 IP 地址设置,请参阅创建公共 IP 地址。 IP 地址是从为 Azure 区域保留的公共 IP 地址池分配的。 若要查看每个区域中使用的地址池列表,请参阅 Azure IP 范围和服务标记。 如果需要从特定前缀分配地址,请使用公共 IP 地址前缀

  • 如果你想知道连接到 VM 的网络接口的名称和属性,请使用 Get-AzVM 命令进行查看。 例如,以下命令列出了连接到名为 myResourceGroup 的资源组中名为 myVM 的 VM 的网络接口:

    $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
    
  • 使用 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"
    

    IP 地址是从为 Azure 区域保留的公共 IP 地址池分配的。 若要查看每个区域中使用的地址池列表,请参阅 Azure IP 范围和服务标记。 如果需要从特定前缀分配地址,请使用公共 IP 地址前缀

  • 通过调整网络安全组中的安全规则,打开安全组中所需的端口。 如需相关信息,请参阅允许发到 VM 的网络流量

    允许将网络流量发往 VM

    必须先在安全组中打开必要的端口,然后才能从 Internet 连接到公共 IP 地址。 这些端口必须在可能已关联到网络接口、网络接口的子网或这两者的任何网络安全组中打开。 尽管安全组会筛选发往网络接口专用 IP 地址的流量,但在入站 Internet 流量抵达公共 IP 地址后,Azure 就会将公共地址转换成专用 IP 地址。 因此,如果网络安全组阻止流量流,则与公共 IP 地址的通信将失败。

    可以查看适用于 Azure 门户Azure CLIAzure PowerShell 的网络接口及其子网的有效安全规则。

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

  • 使用网络安全组来允许将入站 Internet 流量发往你的 VM。

  • 了解如何创建网络安全组

  •