教程:使用 NAT 网关和公共负载均衡器配置双栈出站连接

本教程介绍如何为双栈子网配置 NAT 网关和公共负载均衡器,从而可以使用 NAT 网关为 v4 工作负载进行出站连接并使用公共负载均衡器为 v6 工作负载进行出站连接。

NAT 网关支持使用 IPv4 公共 IP 地址进行出站连接,而负载均衡器支持 IPv4 和 IPv6 公共 IP 地址。 当具有 IPv4 公共 IP 的 NAT 网关与使用 IPv4 公共 IP 地址的负载均衡器一起存在时,NAT 网关将优先于负载均衡器来提供出站连接。 当具有 IPv6 负载均衡器的双栈网络中部署了 NAT 网关时,IPv4 出站流量会使用 NAT 网关,IPv6 出站流量则会使用负载均衡器。

学习教程期间所创建资源的关系图。

在本教程中,你将了解如何执行以下操作:

  • 创建虚拟网络
  • 创建具有 IPv4 公用地址的 NAT 网关
  • 将 IPv6 添加到虚拟网络
  • 创建具有 IPv6 公用地址的公共负载均衡器
  • 创建双栈虚拟机
  • 验证来自双栈虚拟机的出站连接

先决条件

登录 Azure

使用 Azure 帐户登录到 Azure 门户

创建虚拟网络

在本部分,将为虚拟机和负载均衡器创建一个虚拟网络。

以下过程创建包含资源子网、Azure Bastion 子网和 Azure Bastion 主机的虚拟网络。

  1. 在门户中,搜索并选择“虚拟网络”。

  2. 在“虚拟网络”页面上,选择“+ 创建”。

  3. 创建虚拟网络基本信息选项卡上输入或选择以下信息:

    设置
    项目详细信息
    订阅 选择订阅。
    资源组 选择“新建”。
    在“名称”中输入“test-rg”。
    选择“确定”。
    实例详细信息
    名称 输入“vnet-1”。
    区域 选择“(亚太)中国东部 2”。

    Azure 门户中“创建虚拟网络”的“基本信息”选项卡的屏幕截图。

  4. 选择“下一步: IP 地址”转到“IP 地址”选项卡。

  5. 在“IP 地址”选项卡的“IPv4 地址空间”下,选择垃圾箱删除图标以删除任何已出现的地址空间,然后输入“10.0.0.0/16”。

  6. 选择“+ 添加子网”。

  7. 在“添加子网”中输入或选择以下信息:

    设置
    子网名称 输入“subnet-1”。
    子网地址范围 输入 10.0.0.0/24

    在 Azure 门户的“创建虚拟网络”中创建 IP 地址空间和子网的屏幕截图。

  8. 选择 添加

  9. 选择“下一步: 安全性”转到“安全性”选项卡。

  10. 在“安全性”选项卡上的“BastionHost”旁,选择“启用”。

    Azure Bastion 使用浏览器通过安全外壳 (SSH) 或远程桌面协议 (RDP),通过使用其专用 IP 地址连接虚拟网络中的虚拟机。 虚拟机不需要公共 IP 地址、客户端软件或特殊配置。 有关 Azure Bastion 的详细信息,请参阅 Azure Bastion

    注意

    每小时定价从部署 Bastion 的时刻开始计算,无论出站数据的使用情况如何。 有关详细信息,请参阅定价SKU。 如果要将 Bastion 部署为教程或测试的一部分,建议在使用完此资源后将其删除。

  11. 输入或选择以下信息:

    设置
    Bastion 名称 输入“堡垒”。
    AzureBastionSubnet 地址空间 输入“10.0.1.0/26”。
    公共 IP 地址 选择“新建”。
    在“名称”中输入“public-ip”。
    选择“确定”

    在 Azure 门户的“创建虚拟网络”中启用堡垒主机的屏幕截图。

  12. 选择屏幕底部的“查看 + 创建”,然后在验证通过时选择“创建”。

部署堡垒主机需要几分钟时间。 部署虚拟网络后,可以继续执行后续步骤。

创建 NAT 网关

NAT 网关为虚拟网络的 IPv4 部分提供出站连接。 使用以下示例创建 NAT 网关。

  1. 在门户顶部的搜索框中,输入“NAT 网关”。 在搜索结果中选择“NAT 网关”。

  2. 选择“+ 新建”。

  3. 在“创建网络地址转换(NAT)网关”的“基本信息”选项卡中,输入或选择以下值:

    设置
    项目详细信息
    订阅 选择订阅。
    资源组 选择“test-rg”。
    实例详细信息
    NAT 网关名称 输入 nat-gateway
    区域 选择“中国北部 3”。
    可用性区域 选择一个区域或选择“无区域”。
    TCP 空闲超时(分钟) 保留默认值“4”。
  4. 选择“下一步: 出站 IP”。

  5. 在“公共 IP 地址”中,选择“创建新的公共 IP 地址”。

  6. 在“名称”中输入 public-ip-nat。 选择“确定”。

  7. 选择“下一步: 子网”。

  8. 对于“虚拟网络”,请选择 vnet-1

  9. 在子网列表中,选择“subnet-1”对应的框。

  10. 选择“查看 + 创建”。

  11. 选择“创建”。

将 IPv6 添加到虚拟网络

在 NAT 网关与“subnet-1”关联后,必须将 IPv6 添加到虚拟网络。 使用以下示例可将 IPv6 地址空间和子网添加到前面步骤中创建的虚拟网络。

  1. 在门户顶部的搜索框中,输入“虚拟网络”。 在搜索结果中,选择“虚拟网络”。

  2. 选择“vnet-1”。

  3. 在“设置”中,选择“地址空间”。

  4. 在显示“添加其他地址范围”的框中,输入“2404:f800:8000:122::/63”。

  5. 选择“保存”。

  6. 在“设置”中选择“子网”。

  7. 在子网列表中选择 subnet-1

  8. 选择“添加 IPv6 地址空间”旁边的框。

  9. 在“IPv6 地址空间”中,输入“2404:f800:8000:122::/64”。

  10. 选择“保存”。

创建双栈虚拟机

虚拟机的网络配置具有 IPv4 配置和 IPv6 配置。 使用内部 IPv4 地址创建虚拟机。 然后将 IPv6 配置添加到虚拟机的网络接口。

以下过程会在虚拟网络中创建一个名为 vm-1 的测试虚拟机 (VM)。

  1. 在门户中,搜索并选择“虚拟机”。

  2. 在“虚拟机”中,依次选择“+ 创建”、“Azure 虚拟机”。

  3. 在“创建虚拟机”的“基本信息”选项卡上,输入或选择以下信息:

    设置
    项目详细信息
    订阅 选择订阅。
    资源组 选择“test-rg”。
    实例详细信息
    虚拟机名称 输入“vm-1”。
    区域 选择“中国北部 3”。
    可用性选项 选择“无需基础结构冗余”。
    安全类型 选择“标准”。
    映像 选择“Ubuntu Server 22.04 LTS - Gen2”。
    大小 选择一个大小。
    管理员帐户
    身份验证类型 选择密码
    用户名 输入“azureuser”。
    Password 输入密码。
    确认密码 重新输入密码。
    入站端口规则
    公共入站端口 选择“无”。
  4. 选择页面顶部的“网络”选项卡。

  5. 在“网络”选项卡中,输入或选择以下信息:

    设置
    网络接口
    虚拟网络 选择“vnet-1”。
    子网 选择“subnet-1 (10.0.0.0/24)”。
    公共 IP 选择
    NIC 网络安全组 选择“高级”。
    配置网络安全组 选择“新建”。
    在“名称”中输入“nsg-1”。
    将其余字段保留默认设置,然后选择“确定”。
  6. 将其余设置保留为默认值,然后选择“查看 + 创建”。

  7. 检查设置,然后选择“创建”。

注意

虚拟网络中具有堡垒主机的虚拟机不需要公共 IP 地址。 Bastion 提供公共 IP,虚拟机使用专用 IP 在网络中进行通信。 可以从堡垒托管的虚拟网络的任何虚拟机中删除公共 IP。 有关详细信息,请参阅 将公共 IP 地址与 Azure VM 取消关联

注意

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

发生以下事件之一时,将禁用默认出站访问 IP:

  • 将公共 IP 地址分配给 VM。
  • 虚拟机被放置在标准负载平衡器的后端池中,有无出站规则均可。
  • 向虚拟机的子网分配了 Azure 虚拟网络 NAT 网关 资源。

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

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

等待虚拟机完成部署,然后再继续执行后续步骤。

将 IPv6 添加到虚拟机

为了支持 IPv6,虚拟机必须将 IPv6 网络配置添加到网络接口。 使用以下示例可将 IPv6 网络配置添加到虚拟机。

  1. 在门户顶部的搜索框中,输入“虚拟机”。 在搜索结果中,选择“虚拟机”。

  2. 选择 vm-1

  3. 在“设置”中,选择“网络”。

  4. 选择“网络接口:”字段中的网络接口名称。 该网络接口名称是虚拟机名称加上一个随机数。 在此示例中,它是 vm-1202

  5. 在网络接口属性的“设置”中,选择“IP 配置” 。

  6. 选择“+ 添加”。

  7. 在“添加 IP 配置”中,输入或选择以下信息:

    设置
    名称 输入 ipconfig-ipv6
    IP 版本 选择“IPv6”。
  8. 将其余设置保留为默认值,然后选择“添加”。

创建公共负载均衡器

公共负载均衡器具有前端 IPv6 地址和用于负载均衡器后端池的出站规则。 出站规则控制后端池中虚拟机的外部 IPv6 连接的行为。 使用以下示例可创建 IPv6 公共负载均衡器。

  1. 在门户顶部的搜索框中,输入“负载均衡器”。 在搜索结果中选择“负载均衡器”。

  2. 选择“+ 新建”。

  3. 在“创建负载均衡器”的“基本信息”选项卡中,输入或选择以下信息:

    设置
    项目详细信息
    订阅 选择订阅。
    资源组 选择“test-rg”。
    实例详细信息
    名称 输入 load-balancer
    区域 选择“中国北部 3”。
    SKU 保留默认值“标准”。
    类型 选择“公共”。
  4. 选择“下一步: 前端 IP 配置”。

  5. 选择“+ 添加前端 IP 配置”。

  6. 在“添加前端 IP 配置”中,输入或选择以下信息:

    设置
    名称 输入 frontend-ipv6
    IP 版本 选择“IPv6”。
    IP 类型 选择“IP 地址”。
    公共 IP 地址 选择“新建”。
    在“名称”中输入 public-ip-ipv6
    选择“确定”。
  7. 选择 添加

  8. 选择“下一步: 后端池”。

  9. 选择“+ 添加后端池”。

  10. 在“添加后端池”中,输入或选择以下信息:

    设置
    名称 输入 backend-pool
    虚拟网络 选择 vnet-1 (test-rg)
    后端池配置 保留默认值“NIC”。
  11. 选择“保存”。

  12. 选择“下一步: 入站规则”,然后选择“下一步: 出站规则”。

  13. 选择“添加出站规则”。

  14. 在“添加出站规则”中,输入或选择以下信息:

    设置
    名称 输入 outbound-rule
    IP 版本 选择“IPv6”。
    前端 IP 地址 选择 frontend-ipv6
    协议 保留默认值“全部”。
    空闲超时(分钟) 保留默认值“4”。
    TCP 重置 保留默认值“启用”。
    后端池 选择“backend-pool”。
    端口分配
    端口分配 选择“手动选择出站端口数”。
    出站端口
    选择依据 选择“每个实例的端口数”。
    每个实例的端口数 输入“20000”。
  15. 选择 添加

  16. 选择“查看 + 创建” 。

  17. 选择“创建”。

等待负载均衡器完成部署,然后再继续执行后续步骤。

将虚拟机添加到负载均衡器

  1. 在门户顶部的搜索框中,输入“负载均衡器”。 在搜索结果中选择“负载均衡器”。

  2. 选择“load-balancer”。

  3. 在“设置”中,选择“后端池”。

  4. 选择“backend-pool”。

  5. 在“虚拟网络”中选择“vnet-1 (test-rg)”。

  6. 在“IP 配置”中,选择“+ 添加”。

  7. 选中与“ipconfig-ipv6”的“IP 配置”对应的 vm-1 的复选框。 不要选择“ipconfig1”。

  8. 选择 添加

  9. 选择“保存”。

验证出站连接

使用 Azure Bastion 连接到虚拟机,以验证 IPv4 和 IPv6 出站流量。

获取 IPv4 和 IPv6 公共 IP 地址

在验证出站连接之前,记下前面创建的 IPv4 和 IPv6 公共 IP 地址。 使用以下示例可获取公共 IP 地址。

  1. 在门户顶部的搜索框中,输入“公共 IP 地址”。 在搜索结果中,选择“公共 IP 地址”。

  2. 选择“public-ip-nat”。

  3. 记下“IP 地址”中的地址。 在此示例中,它是 203.0.113.5

  4. 返回到“公共 IP 地址”。

  5. 选择“public-ip-ipv6”。

  6. 记下“IP 地址”中的地址。 在此示例中,它是 2001:DB8::14

记下这两个 IP 地址。 使用 IP 验证每个栈的出站连接。

测试连接

  1. 登录到 Azure 门户

  2. 在门户顶部的搜索框中,输入“虚拟机”。 在搜索结果中,选择“虚拟机”。

  3. 选择 vm-1

  4. 在“vm-1”的“概述”中选择“连接”,然后选择“Bastion”。 选择“使用 Bastion

  5. 输入在创建虚拟机时指定的用户名和密码。

  6. 选择“连接”。

  7. 在命令行中,输入以下命令以验证 IPv4 地址。

    curl -4 icanhazip.com
    
    azureuser@vm-1:~$ curl -4 icanhazip.com
    203.0.113.5
    
  8. 在命令行中,输入以下命令以验证 IPv4 地址。

    curl -6 icanhazip.com
    
    azureuser@vm-1:~$ curl -6 icanhazip.com
    2001:DB8::14
    
  9. 关闭与“vm-1”的 Bastion 连接。

清理资源

使用本文中创建的资源完成操作后,请删除资源组及其包含的所有资源。

  1. 在 Azure 门户中,搜索并选择“资源组”。

  2. 在“资源组”页上,选择“test-rg”资源组。

  3. 在“test-rg”页上,选择“删除资源组”。

  4. 在“输入资源组名称以确认删除”中输入“test-rg”,然后选择“删除”。

后续步骤

转到下一篇文章,了解如何执行以下操作: