教程:在中心辐射型网络中将 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 网关直接配置到 Azure 防火墙子网,可以将 NAT 网关与 Azure 防火墙集成,以提供可伸缩性更好的出站连接方法。 对于生产部署,建议使用中心辐射型网络,其中的防火墙位于其自身的虚拟网络中。 工作负载服务器是与防火墙所在的中心虚拟网络位于同一区域的对等互连虚拟网络。 在此体系结构设置中,NAT 网关可为对等互连的所有分支虚拟网络提供从中心虚拟网络的出站连接。

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

注意

安全虚拟中心网络 (vWAN) 体系结构目前不支持 Azure NAT 网关。 必须按照本教程中所述使用中心虚拟网络体系结构进行部署。 有关 Azure 防火墙体系结构选项的详细信息,请参阅什么是 Azure 防火墙管理器体系结构选项?

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

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

必备条件

创建中心虚拟网络

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

  1. 登录到 Azure 门户

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

  3. 选择“+ 新建”。

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

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

  6. 在“安全性”选项卡的“Azure Bastion”部分中,选择“启用 Bastion”。

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

    注意

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

  7. 在“Azure Bastion”中,输入或选择以下信息:

    设置
    Azure Bastion 主机名 输入“堡垒”。
    Azure Bastion 公共 IP 地址 选择“创建公共 IP 地址”。
    在“名称”中输入“public-ip”。
    选择“确定”。
  8. 在“安全”选项卡的“Azure 防火墙”部分选择“启用 Azure 防火墙”

    Azure 防火墙是托管的基于云的网络安全服务,可保护 Azure 虚拟网络资源。 它是一个服务形式的完全有状态防火墙,具有内置的高可用性和不受限制的云可伸缩性。 有关 Azure 防火墙的详细信息,请参阅 Azure 防火墙

  9. 在“Azure 防火墙”中,输入或选择以下信息:

    设置 “值”
    Azure 防火墙名称 输入 firewall
    选择“标准” 。
    策略 选择“新建”。
    在“名称”中输入“firewall-policy”
    选择“确定”。
    Azure 防火墙公共 IP 地址 选择“创建公共 IP 地址”。
    在“名称”中输入“public-ip-firewall”
    选择“确定”。
  10. 选择“查看 + 创建”。

  11. 选择“创建”。

部署堡垒主机和防火墙需要几分钟时间。 在部署过程中创建虚拟网络时,可以继续执行后续步骤。

创建 NAT 网关

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

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

  2. 选择“+ 新建”。

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

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

    有关可用性区域的详细信息,请参阅 NAT 网关和可用性区域

  4. 选择“下一步: 出站 IP”。

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

  6. 在“名称”中输入 public-ip-nat

  7. 选择“确定”。

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

  9. 对于“虚拟网络”,请选择 vnet-hub

  10. 在“子网名称”中选择“AzureFirewallSubnet”。

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

  12. 选择“创建” 。

创建分支虚拟网络

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

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

  2. 选择“+ 新建”。

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

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

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

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

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

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

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

    设置
    子网详细信息
    子网模板 保留默认值“默认”。
    名称 输入 subnet-private。
    开始地址 输入 10.1.0.0。
    子网大小 保留默认值“/24 (256 个地址)”。
  10. 选择添加

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

  12. 选择“创建” 。

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

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

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

  2. 选择 vnet-hub

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

  4. 选择“+ 添加”。

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

    设置
    此虚拟网络
    对等互连链接名称 输入 vnet-hub-to-vnet-spoke
    允许“vnet-hub”访问“vnet-spoke” 保留默认值“已选择”。
    允许“vnet-hub”接收来自“vnet-spoke”的转发流量 选中复选框。
    允许“vnet-hub”中的网关将流量转发到“vnet-spoke” 保留默认值“未选中”。
    启用“vnet-hub”以使用“vnet-spoke”远程网关 保留默认值“未选中”。
    远程虚拟网络
    对等互连链接名称 输入 vnet-spoke-to-vnet-hub
    虚拟网络部署模型 保留默认值“资源管理器”。
    订阅 选择订阅。
    虚拟网络 选择 vnet-spoke
    允许“vnet-spoke”访问“vnet-hub” 保留默认值“已选择”。
    允许“vnet-spoke”接收来自“vnet-hub”的转发流量 选中复选框。
    允许“vnet-spoke”中的网关将流量转发到“vnet-hub” 保留默认值“未选中”。
    启用“vnet-spoke”以使用“vnet-hub”远程网关 保留默认值“未选中”。
  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 虚拟机。

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

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

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

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

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

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

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

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

注意

虚拟网络中具有堡垒主机的虚拟机不需要公共 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 地址”中的值。 本文中使用的示例为 20.225.88.213。

从分支测试 NAT 网关

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

  2. 选择 vm-spoke

  3. 在“操作”中,选择“Bastion”。

  4. 输入在 VM 创建过程中输入的用户名和密码。 选择“连接”。

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

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

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

清理资源

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

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

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

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

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

后续步骤

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