在中心和分支网络中将 NAT 网关与 Azure 防火墙集成以实现出站连接

本教程介绍如何将 NAT 网关与中心辐射网络中的 Azure 防火墙集成,以提高出站连接性和可伸缩性。

对于为每个后端虚拟机规模集实例(最少两个实例)配置的每个公共 IP 地址,Azure 防火墙将提供 2,496 个 SNAT 端口。 最多可将 250 个公共 IP 地址关联到 Azure 防火墙。 根据体系结构要求和流量模式,可能需要更多的 SNAT 端口,而不是 Azure 防火墙可以提供的端口。 你可能还需要使用更少的公共 IP,同时需要更多的 SNAT 端口。 更好的出站连接方法是使用 NAT 网关。 NAT 网关为每个公共 IP 地址提供 64,512 个 SNAT 端口,最多可与 16 个公共 IP 地址一起使用。

NAT 网关可以通过将 NAT 网关直接配置为 Azure 防火墙子网来与 Azure 防火墙集成。 该关联提供了一种更具伸缩性的出站连接方式。 对于生产部署,建议使用中心辐射型网络,其中的防火墙位于其自身的虚拟网络中。 工作负载服务器是与防火墙所在的中心虚拟网络位于同一区域的对等互连虚拟网络。 在此体系结构设置中,NAT 网关可为对等互连的所有分支虚拟网络提供从中心虚拟网络的出站连接。

学习教程期间所创建 Azure 资源的示意图。

注意

虽然可以在中心辐射虚拟网络架构中部署 NAT 网关,如本教程中所述,但 vWAN 架构的中心虚拟网络不支持 NAT 网关。 要在 vWAN 体系结构中使用,必须将 NAT 网关直接配置到与安全虚拟中心 (vWAN) 关联的分支虚拟网络。 有关 Azure 防火墙体系结构选项的详细信息,请参阅什么是 Azure 防火墙管理器体系结构选项?

本教程介绍如何执行下列操作:

  • 在部署期间创建中心虚拟网络并部署 Azure 防火墙和 Azure Bastion
  • 创建 NAT 网关并将其与中心虚拟网络中的防火墙子网相关联
  • 创建分支虚拟网络
  • 创建虚拟网络对等互连
  • 为分支虚拟网络创建路由表
  • 为中心虚拟网络创建防火墙策略
  • 创建虚拟机以测试通过 NAT 网关进行的出站连接

必备条件

创建资源组

创建资源组以包含本快速入门的所有资源。

  1. 登录到 Azure 门户

  2. 在门户顶部的搜索框中,输入 资源组。 在搜索结果中选择“资源组”。

  3. 选择“+ 新建”。

  4. “创建资源组”的“基本信息”选项卡中,输入或选择以下信息。

    设置
    订阅 选择订阅
    资源组 test-rg
    区域 中国北部 3
  5. 选择“查看 + 创建”。

  6. 选择“创建”。

创建中心虚拟网络

中心虚拟网络包含与 Azure 防火墙和 NAT 网关关联的防火墙子网。 使用以下示例创建中心虚拟网络。

  1. 登录到 Azure 门户

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

  3. 选择“创建”。

  4. 在“创建虚拟网络”的“基本信息”选项卡中输入或选择以下信息

    设置
    项目详细信息
    订阅 选择订阅。
    资源组 选择 test-rg 或您的资源组。
    实例详细信息
    名称 输入 vnet-hub
    区域 选择你的区域。 此示例使用 中国北部 3
  5. 选择“ IP 地址 ”选项卡,或依次选择“ 下一步:安全性”、“ 下一步:IP 地址”。

  6. “子网 ”中,选择 默认 子网。

  7. 在“编辑子网”中,输入或选择以下信息

    设置
    子网用途 保留默认值。
    名称 输入subnet-1
  8. 将其余设置保留为默认值,然后选择“ 保存”。

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

  10. “添加子网”中 输入或选择以下信息。

    设置
    子网用途 选择 Azure Bastion
  11. 将其余设置保留为默认值,然后选择“ 添加”。

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

  13. “添加子网”中 输入或选择以下信息。

    设置
    子网用途 选择 Azure 防火墙
  14. 将其余设置保留为默认值,然后选择“ 添加”。

  15. 选择查看 + 创建,然后选择创建

创建 Azure Bastion 主机

Azure Bastion 通过 TLS 提供与虚拟机的安全 RDP 和 SSH 连接,而无需 VM 上的公共 IP 地址。

  1. 在 Azure 门户顶部的搜索框中,输入 Bastion。 在搜索结果中选择 Bastions

  2. 选择“创建”。

  3. “创建 Bastion”基本选项卡中输入或选择以下信息。

    设置
    项目详细信息
    订阅 选择订阅。
    资源组 选择 test-rg 或您的资源组。
    实例详细信息
    名称 输入“堡垒”。
    区域 选择你的区域。 此示例使用 中国北部 3
    选择 “开发人员”。
    虚拟网络 选择“vnet-1”。
    子网 选择“AzureBastionSubnet”
  4. 选择查看 + 创建,然后选择创建

创建 Azure 防火墙

  1. 在门户顶部的搜索框中,输入“防火墙”。 在搜索结果中选择“防火墙”。

  2. 选择“+ 新建”。

  3. 在“创建防火墙”页上,使用下表配置防火墙:

    设置
    项目详细信息
    订阅 选择订阅。
    资源组 选择“test-rg”。
    实例详细信息
    名称 输入 firewall
    区域 选择“中国北部 3”。
    可用性区域 接受默认选项 None
    防火墙 SKU 选择“标准” 。
    防火墙管理 选择“使用防火墙策略来管理此防火墙”。
    防火墙策略 选择“ 添加新”。
    名称:输入 防火墙策略
    区域:选择 “中国北部 3”。
    策略层: 标准
    选择“ 确定”。
    选择虚拟网络
    虚拟网络 选择“使用现有项”
    虚拟网络 选择 vnet-hub
    公共 IP 地址
    公共 IP 地址 选择“ 添加新”。
    名称:输入 public-ip-firewall
    SKU: 标准
    赋值: 静态
    可用性区域: 区域冗余
    选择“ 确定”。
  4. 接受其他默认值,然后选择“查看 + 创建”

  5. 查看摘要,然后选择“创建”以创建防火墙。

    部署防火墙需要几分钟时间。

  6. 部署完成后,转到 test-rg 资源组,然后选择 防火墙 资源。

  7. 记下防火墙专用 IP 地址和公共 IP 地址。 稍后将使用这些地址。

创建 NAT 网关

所有出站 Internet 流量都穿越 NAT 网关传送到 Internet。 使用以下示例为中心辐射型网络创建 NAT 网关,并将其与 AzureFirewallSubnet 相关联。

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

  2. 选择“+ 新建”。

  3. 在“创建公共 IP 地址”中,输入以下信息。

    设置
    订阅 选择订阅。
    资源组 选择“test-rg”。
    区域 选择“中国北部 3”。
    名称 输入 public-ip-nat
    IP 版本 选择 IPv4
    SKU 选择“标准” 。
    可用性区域 选择“区域冗余”
    选择“区域”
  4. 选择“查看 + 创建”,然后选择“创建”

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

  6. 选择“+ 新建”。

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

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

  9. “出站 IP ”选项卡中,选择公共 IP 地址或前缀。

  10. 选择“下一步”。

  11. “子网 ”选项卡中的 “虚拟网络”中,选择 vnet-hub

  12. 选择特定的子网,选择 AzureFirewallSubnet

  13. 选择查看 + 创建,然后选择创建

创建分支虚拟网络

分支虚拟网络包含用于测试 Internet 流量到 NAT 网关的路由的测试虚拟机。 使用以下示例创建分支网络。

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

  2. 选择“+ 新建”。

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

    设置
    项目详细信息
    订阅 选择订阅。
    资源组 选择“test-rg”。
    实例详细信息
    名称 输入 vnet-spoke
    区域 选择“中国北部 3”。
  4. 选择下一步,转到安全性选项卡。

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

  6. 在“IPv4 地址空间”中的“IP 地址”选项卡中,选择“删除地址空间”以删除自动填充的地址空间

  7. 选择“添加 IPv4 地址空间”

  8. 在“IPv4 地址空间”中,输入“10.1.0.0.”。 在掩码选择中保留默认值 /16(65536 个地址)。

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

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

    设置
    子网用途 保留默认值“默认”。
    名称 输入 subnet-private。
    IPv4
    IPv4 地址范围 保留默认值“10.1.0.0/16”
    开始地址 保留默认值 10.1.0.0。
    大小 保留默认值“/24 (256 个地址)”。
  11. 选择添加

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

  13. 选择“创建”。

在中心与分支之间创建对等互连

虚拟网络对等互连用于将中心连接到分支,并将分支连接到中心。 使用以下示例在中心与分支之间创建双向网络对等互连。

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

  2. 选择 vnet-hub

  3. 在“设置”中选择“对等互连”。

  4. 选择“+ 添加”。

  5. 在“添加对等方”中,输入或选择以下信息:

    设置
    远程虚拟网络摘要
    对等互连链接名称 输入 vnet-spoke-to-vnet-hub
    虚拟网络部署模型 保留默认值“资源管理器”。
    订阅 选择订阅。
    虚拟网络 选择 vnet-spoke (test-rg)
    远程虚拟网络对等互连设置
    允许“vnet-spoke”访问“vnet-hub” 保留默认值“已选择”。
    允许“vnet-spoke”接收来自“vnet-hub”的转发流量 选中复选框。
    允许“vnet-spoke”中的网关或路由服务器将流量转发到“vnet-hub” 保留默认值“未选中”。
    启用“vnet-spoke”以使用“vnet-hubb”远程网关或路由服务器 保留默认值“未选中”。
    本地虚拟网络摘要
    对等互连链接名称 输入 vnet-hub-to-vnet-spoke
    本地虚拟网络对等互连设置
    允许“vnet-hub”访问“vnet-spoke” 保留默认值“已选择”。
    允许“vnet-hub”接收来自“vnet-spoke”的转发流量 选中复选框。
    允许“vnet-hub”中的网关或路由服务器将流量转发到“vnet-spoke” 保留默认值“未选中”。
    启用“vnet-hub”以使用“vnet-spoke”远程网关或路由服务器 保留默认值“未选中”。
  6. 选择添加

  7. 选择“刷新”并确认“对等互连状态”是否为“已连接”。

创建分支网络路由表

路由表将离开分支虚拟网络的所有流量强制发送到中心虚拟网络。 路由表中配置了 Azure 防火墙(作为虚拟设备)的专用 IP 地址。

获取防火墙的专用 IP 地址

本文稍后创建的路由表需要防火墙的专用 IP 地址。 使用以下示例获取防火墙的专用 IP 地址。

  1. 在门户顶部的搜索框中,输入“防火墙”。 在搜索结果中选择“防火墙”。

  2. 选择 firewall

  3. 在“firewall”的“概述”中,记下“防火墙专用 IP”字段中的 IP 地址。 此示例中的 IP 地址为 10.0.1.68

创建路由表

创建一个路由表,以强制所有分支间流量和 Internet 出口流量通过中心虚拟网络中的防火墙。

  1. 在门户顶部的搜索框中,输入“路由表”。 在搜索结果中选择“路由表”。

  2. 选择“+ 新建”。

  3. 在“创建路由表”中,输入或选择以下信息:

    设置
    项目详细信息
    订阅 选择订阅。
    资源组 选择“test-rg”。
    实例详细信息
    区域 选择“中国北部 3”。
    名称 输入 route-table-spoke
    传播网关路由 请选择“否”。
  4. 选择“查看 + 创建”。

  5. 选择“创建”。

  6. 在门户顶部的搜索框中,输入“路由表”。 在搜索结果中选择“路由表”。

  7. 选择 route-table-spoke

  8. 在“设置”中选择“路由”。

  9. 在“路由”中选择“+ 添加”。

  10. 在“添加路由”中,输入或选择以下信息:

    设置
    路由名称 输入 route-to-hub
    目标类型 选择“IP 地址”。
    目标 IP 地址/CIDR 范围 输入 0.0.0.0/0。
    下一跃点类型 选择“虚拟设备”。
    下一跃点地址 输入“10.0.1.68”。
  11. 选择添加

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

  13. 选择“+ 关联”。

  14. 在“关联子网”中,输入或选择以下信息:

    设置
    虚拟网络 选择 vnet-spoke (test-rg)
    子网 选择“subnet-private”。
  15. 选择“确定”。

配置防火墙

必须通过防火墙策略和网络规则允许来自分支的流量通过中心传送。 使用以下示例创建防火墙策略和网络规则。

配置网络规则

  1. 在门户顶部的搜索框中,输入“防火墙”。 在搜索结果中选择“防火墙策略”。

  2. 选择 firewall-policy

  3. 展开“设置”,然后选择“网络规则”

  4. 选择“+ 添加规则集合”。

  5. 在“添加规则集合”中,输入或选择以下信息:

    设置
    名称 输入 spoke-to-internet
    规则集合类型 选择“网络”。
    优先级 输入 100
    规则集合操作 选择“允许”
    规则集合组 选择“DefaultNetworkRuleCollectionGroup”。
    规则
    名称 输入 allow-web.
    源类型 IP 地址。
    输入 10.1.0.0/24。
    协议 选择“TCP”。
    目标端口 输入 80,443。
    目标类型 选择“IP 地址”。
    目标 输入 *
  6. 选择添加

创建测试虚拟机

使用 Ubuntu 虚拟机来测试通过 NAT 网关传送出站 Internet 流量。 使用以下示例创建 Ubuntu 虚拟机。

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

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

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

    设置
    项目详细信息
    订阅 选择订阅。
    资源组 选择“test-rg”。
    实例详细信息
    虚拟机名称 输入 vm-spoke
    区域 选择“中国北部 3”。
    可用性选项 选择“无需基础结构冗余”。
    安全类型 保留默认值标准
    图像 选择“Ubuntu Server 24.04 LTS - Gen2”
    大小 选择一个大小。
    管理员帐户
    身份验证类型 选择“SSH 公钥”。
    用户名 输入“azureuser”。
    SSH 公钥源 选择“生成新密钥对”。
    密钥对名称 输入 vm-spoke-key
    入站端口规则
    公共入站端口 选择
  4. 选择页面顶部的“网络”选项卡,或者选择“下一步: 磁盘”,然后选择“下一步: 网络”

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

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

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

  8. 此时会显示“ 生成新密钥对 ”对话框。 选择“下载私钥并创建资源”。

私钥将下载到本地计算机。 在后续步骤中,使用 Azure Bastion 连接到虚拟机时将需要该私钥。 私钥文件的名称是在 “密钥对名称 ”字段中输入的名称。 在此示例中,私钥文件名为 ssh-key

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

注意

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

测试 NAT 网关

连接到在前面步骤中创建的 Ubuntu 虚拟机,以验证出站 Internet 流量是否从 NAT 网关传出。

获取 NAT 网关公共 IP 地址

获取 NAT 网关公共 IP 地址,以验证本文稍后的步骤。

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

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

  3. 记下“IP 地址”中的值。 本文中使用的示例为 203.0.113.0.25

从分支测试 NAT 网关

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

  2. 选择 vm-spoke

  3. 在“概述”中,选择“连接”,然后选择“通过 Bastion 连接”

  4. 选择 SSH 作为连接类型。 上传 SSH 私钥文件。 选择“连接”。

  5. 在 bash 提示符下,输入以下命令:

    curl ifconfig.me
    
  6. 验证命令返回的 IP 地址是否与 NAT 网关的公共 IP 地址匹配。

    azureuser@vm-1:~$ curl ifconfig.me
    203.0.113.0.25
    
  7. 关闭堡垒主机与 vm-spoke 的连接。

清理资源

使用创建的资源之后,可以删除资源组及其所有资源:

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

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

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

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

后续步骤

请继续学习下一篇文章,了解如何将 NAT 网关与 Azure 负载均衡器集成: