将本地网络连接到 Azure 虚拟网络以创建混合网络时,必须能够控制对 Azure 网络资源的访问,这是整体安全计划的重要部分。
使用 Azure 防火墙管理器,可以创建中心虚拟网络来保护发往专用 IP 地址、Azure PaaS 和 Internet 的混合网络流量。 可以使用 Azure 防火墙器通过策略来定义允许和拒绝的网络流量,以便控制混合网络中的网络访问。
防火墙管理器还支持安全虚拟中心体系结构。 有关安全虚拟中心和中心虚拟网络体系结构类型的比较,请参阅有哪些 Azure 防火墙管理器体系结构选项?
在本教程中,请创建三个虚拟网络:
VNet-Hub - 防火墙在此虚拟网络中。
VNet-Spoke - 分支虚拟网络代表 Azure 中的工作负荷。
VNet-Onprem - 本地虚拟网络代表本地网络。 在实际部署中,可以使用 VPN 或 ExpressRoute 来连接它。 为简单起见,本教程将使用 VPN 网关连接,并使用 Azure 中的某个虚拟网络来代表本地网络。
本教程介绍如何执行下列操作:
- 创建防火墙策略
- 创建虚拟网络
- 配置和部署防火墙
- 创建并连接 VPN 网关
- 将中心和分支虚拟网络对等互连
- 创建路由
- 创建虚拟机
- 测试防火墙
先决条件
混合网络使用中心辐射型网络体系结构模型在 Azure VNet 与本地网络之间路由流量。 中心辐射型网络体系结构具有以下要求:
若要通过中心防火墙路由辐射子网流量,需有一个用户定义的路由 (UDR) 且该路由应指向禁用了“虚拟网络路由传播”设置的防火墙。 此选项可防止路由分发到辐射子网。 这可以防止获知的路由与你的 UDR 冲突。
请在中心网关子网上配置一个指向防火墙 IP 地址的 UDR,将其作为通向辐射网络的下一跃点。 无需在 Azure 防火墙子网中创建 UDR,因为它会从 BGP 探测路由。
请参阅本教程的创建路由部分了解如何创建这些路由。
注意
Azure 防火墙必须具有直接的 Internet 连接。 如果 AzureFirewallSubnet 知道通过 BGP 的本地网络的默认路由,则必须将其替代为 0.0.0.0/0 UDR,将 NextHopType 值设置为 Internet 以保持 Internet 直接连接 。
可将 Azure 防火墙配置为支持强制隧道。 有关详细信息,请参阅 Azure 防火墙强制隧道。
注意
即使 UDR 指向作为默认网关的 Azure 防火墙,也会直接路由直接对等互连 VNet 之间的流量。 若要在此方案中将子网到子网流量发送到防火墙,UDR 必须在这两个子网上显式地包含目标子网网络前缀。
如果没有 Azure 订阅,请在开始前创建一个试用版订阅。
创建防火墙策略
登录 Azure 门户。
在 Azure 门户搜索栏中,输入 防火墙管理器。 在搜索结果中选择“防火墙策略”。
选择+ 新建。
在 “创建 Azure 防火墙策略”中,选择订阅,对于资源组,请选择“ 新建 ”,并创建名为 FW-Hybrid-Test 的资源组。
对于策略名称,请输入 Pol-Net01。
对于“区域”,请选择“中国东部”。
选择“下一步: DNS 设置”。
选择“下一步:TLS 检查”
选择“下一步:规则”。
选择“添加规则集合”。
对于“名称”,输入 RCNet01。
对于“规则集合类型”,请选择“网络”。
对于“优先级”,请输入“100”。
对于“操作”,请选择“允许”。
在 “规则”下,对于 “名称”,请输入 AllowWeb。
在源类型中选择 IP 地址。
对于 源,请输入 192.168.1.0/24。
对于“协议”,请选择“TCP”。
对于“目标端口”,输入 80。
对于“目标类型”,请选择“IP 地址”。
对于 目标,请输入 10.6.0.0/16。
选择 添加 。
选择“查看 + 创建”。
检查详细信息,然后选择“创建”。
创建防火墙中心虚拟网络
注意
AzureFirewallSubnet 子网的大小为 /26。 有关子网大小的详细信息,请参阅 Azure 防火墙常见问题解答。
在门户顶部的搜索框中,输入“虚拟网络”。 在搜索结果中选择 虚拟网络 。
选择“创建”。
对于“订阅”,请选择自己的订阅。
对于“资源组”,请选择“FW-Hybrid-Test”。
对于 名称,请输入 VNet-Hub。
对于“区域”,请选择“中国东部”。
选择下一步。
在“安全性”上,选择“下一步”。
对于 IPv4 地址空间,请输入 10.5.0.0/16。
在“子网”下,选择“默认值”。
对于“子网用途”,请选择“Azure 防火墙”。
对于 起始地址,请输入 10.5.0.0/26。
接受其他默认设置,然后选择“保存”。
选择“查看 + 创建”。
选择“创建”。
添加另一个子网,将子网用途设置为“虚拟网络网关”,起始地址为 10.5.1.0/27。 此子网用于 VPN 网关。
创建分支虚拟网络
在门户顶部的搜索框中,输入“虚拟网络”。 在搜索结果中选择 虚拟网络 。
选择“创建”。
对于“订阅”,请选择自己的订阅。
对于“资源组”,请选择“FW-Hybrid-Test”。
对于“名称”,输入 VNet-Spoke。
对于“区域”,请选择“中国东部”。
选择下一步。
在“安全性”页上,选择“下一步”。
选择“下一步: IP 地址”。
对于 IPv4 地址空间,请输入 10.6.0.0/16。
在“子网”下,选择“默认值”。
将“名称”更改为“SN-Workload”。
对于 起始地址,请输入 10.6.0.0/24。
接受其他默认设置,然后选择“保存”。
选择“查看 + 创建”。
选择“创建”。
创建本地虚拟网络
在门户顶部的搜索框中,输入“虚拟网络”。 在搜索结果中选择 虚拟网络 。
选择“创建”。
对于“订阅”,请选择自己的订阅。
对于“资源组”,请选择“FW-Hybrid-Test”。
对于 虚拟网络名称,请输入 VNet-Onprem。
对于“区域”,请选择“中国东部”。
选择下一步。
在“安全性”页上,选择“下一步”。
对于 IPv4 地址空间,请输入 192.168.0.0/16。
在“子网”下,选择“默认值”。
将“名称”更改为 SN-Corp。
对于 起始地址,请输入 192.168.1.0/24。
接受其他默认设置,然后选择“保存”。
选择“添加子网”。
对于“子网用途”,请选择“虚拟网络网关”。
对于 起始地址 ,请输入 192.168.2.0/27。
选择 添加 。
选择“查看 + 创建”。
选择“创建”。
配置和部署防火墙
安全策略在与中心关联后,将称作“中心虚拟网络”。
将 VNet-Hub 虚拟网络转换为中心虚拟网络,并使用 Azure 防火墙对其进行保护。
在 Azure 门户搜索栏中,输入 防火墙管理器 ,然后按 Enter。
在右窗格中,选择“概述”。
在“Azure 防火墙管理器”页上的“向虚拟网络添加安全性”下,选择“查看中心虚拟网络”。
在 “虚拟网络”下,选中 VNet-Hub 的复选框。
选择“管理安全性”,然后选择“部署具有防火墙策略的防火墙”。
在“转换虚拟网络”页上的“Azure 防火墙层”下,选择“高级”。 在“防火墙策略”下,选中“Pol-Net01”的复选框。
选择“下一步: 查看 + 确认”
检查详细信息,然后选择“确认”。
部署过程需要花费几分钟时间。
部署完成后,转到“FW-Hybrid-Test”资源组,然后选择防火墙。
请注意“概述”页上的“防火墙专用 IP 地址”。 稍后在创建默认路由时需要用到它。
部署 Azure Bastion
部署 Azure Bastion 开发人员版,以安全地连接到虚拟机进行测试。
在门户顶部的搜索框中,输入“堡垒”。 从搜索结果中选择 Bastions 。
选择“创建”。
在 “创建 Bastion ”页上,输入或选择以下值:
设置 值 项目详细信息 订阅 选择 Azure 订阅。 资源组 选择 FW-Hybrid-Test。 实例详细信息 Name 输入 Bastion-Hub。 区域 选择“中国东部”。 层 选择 “开发人员”。 虚拟网络 选择 VNet-Hub。 子网 使用地址空间 10.5.2.0/26 自动创建 AzureBastionSubnet。 选择“查看 + 创建”。
检查设置,然后选择“创建”。
部署需要数分钟才能完成。
创建并连接 VPN 网关
通过 VPN 网关连接中心和本地虚拟网络。
为中心虚拟网络创建 VPN 网关
现在,为中心虚拟网络创建 VPN 网关。 网络到网络配置需要 RouteBased VpnType。 创建 VPN 网关通常需要 45 分钟或更长时间,具体取决于所选 VPN 网关的 SKU。
在门户顶部的搜索框中,输入 虚拟网络网关。 在搜索结果中选择 虚拟网络网关 。
依次选择“虚拟网络网关”、“创建”。
对于“名称”,输入 GW-hub。
对于 区域,请选择 “美国”中国东部。
对于“网关类型”,请选择“VPN”。
对于“SKU”,选择“VpnGw2”。
为“代系”选择“第 2 代”。
对于“虚拟网络”,请选择“VNet-Hub”。
对于 公共 IP 地址,请选择 “新建”,然后输入 VNet-Hub-GW-pip 以获取名称。
对于“启用主动-主动模式”,选择“已禁用”。
接受剩余的默认值,然后选择“查看 + 创建”。
检查配置,然后选择“创建”。
为本地虚拟网络创建 VPN 网关
现在,为本地虚拟网络创建 VPN 网关。 网络到网络配置需要 RouteBased VpnType。 创建 VPN 网关通常需要 45 分钟或更长时间,具体取决于所选 VPN 网关的 SKU。
在门户顶部的搜索框中,输入 虚拟网络网关。 在搜索结果中选择 虚拟网络网关 。
依次选择“虚拟网络网关”、“创建”。
对于“名称”,输入 GW-Onprem。
对于 区域,请选择 “美国”中国东部。
对于“网关类型”,请选择“VPN”。
对于“SKU”,选择“VpnGw2”。
为“代系”选择“第 2 代”。
对于“虚拟网络”,请选择“VNet-Onprem”。
对于 公共 IP 地址,请选择创建新的,并输入名称 VNet-Onprem-GW-pip。
对于“启用主动-主动模式”,选择“已禁用”。
接受剩余的默认值,然后选择“查看 + 创建”。
检查配置,然后选择“创建”。
创建 VPN 连接
现在,可在中心与本地网关之间创建 VPN 连接。
此步骤创建从中心虚拟网络到本地虚拟网络的连接。 示例中引用了一个共享密钥。 可以对共享密钥使用自己的值。 共享密钥必须与两个连接匹配,这一点非常重要。 创建连接需要花费一段时间。
打开“FW-Hybrid-Test”资源组并选择“GW-hub”网关。
在左列中的“设置”下,选择“连接”。
选择 添加 。
输入 Hub-to-Onprem 作为连接名称。
选择“VNet 到 VNet”作为“连接类型”。
选择“下一步:设置”。
对于“第一虚拟网络网关”,请选择“GW-hub”。
对于“第二个虚拟网络网关”,请选择“GW-Onprem”。
对于“共享密钥(PSK)”,输入 AzureA1b2C3。
选择“查看 + 创建”。
选择“创建”。
创建本地到中心虚拟网络连接。 此步骤与上一步类似,只不过是在 VNet-Onprem 与 VNet-Hub 之间创建连接。 确保共享密钥匹配。 几分钟后会建立连接。
打开“FW-Hybrid-Test”资源组并选择“GW-Onprem”网关。
在左栏中选择“连接”。
选择 添加 。
输入 Onprem-to-Hub 作为连接名称。
选择“VNet 到 VNet”作为“连接类型”。
选择“下一步:设置”。
对于“第一虚拟网络网关”,请选择“GW-Onprem”。
对于“第二个虚拟网络网关”,请选择“GW-hub”。
对于“共享密钥(PSK)”,输入 AzureA1b2C3。
选择“确定” 。
验证连接
在部署第二个网络连接大约五分钟左右后,两个连接的状态应为“已连接”。
将中心和分支虚拟网络对等互连
现在,将中心和分支虚拟网络对等互连。
打开 FW-Hybrid-Test 资源组,然后选择 VNet-Hub 虚拟网络。
在左栏中选择“对等互连”。
选择 添加 。
在“远程虚拟网络摘要”下:
设置名称 值 对等互连链接名称 SpoketoHub 虚拟网络部署模型 资源管理器 订阅 <订阅> 虚拟网络 VNet-Spoke 允许“VNet-分支”访问“VNet-中心” 已选定 允许“VNet-Spoke”接收来自“VNet-Hub”的转发流量 已选定 允许“VNet-Spoke”中的网关或路由服务器将流量转发到“VNet-Hub” 未选中 启用“VNet-Spoke”以使用“VNet-Hub”的远程网关或路由服务器 已选定 在“本地虚拟网络摘要”下:
设置名称 值 对等互连链接名称 HubtoSpoke 允许“VNet-Hub”访问“VNet-Spoke” 已选定 允许“VNet-Hub”接收来自“VNet-Spoke”的转发流量 已选定 允许“VNet-Hub”中的网关或路由服务器将流量转发到“VNet-Spoke” 已选定 启用“VNet-Hub”以使用“VNet-Spoke”远程网关或路由服务器 未选中 选择 添加 。
创建路由
接下来创建一对路由:
通过防火墙 IP 地址从中心网关子网连接到分支子网的路由
通过防火墙 IP 地址从分支子网连接的默认路由
在 Azure 门户主页上,选择“创建资源”。
在搜索文本框中,输入 路由表 ,然后按 Enter。
选择“路由表”。
选择“创建”。
选择“FW-Hybrid-Test”作为资源组。
对于“区域”,请选择“中国东部”。
输入 UDR-Hub-Spoke 作为名称。
选择“查看 + 创建”。
选择“创建”。
创建路由表后,请选择它以打开路由表页。
在左栏中选择“路由”。
选择 添加 。
输入 ToSpoke 作为路由名称。
对于“目标类型”,请选择“IP 地址”。
输入 10.6.0.0/16 作为目标 IP 地址/CIDR 范围。
选择“虚拟设备”作为下一跃点类型。
对于下一跳地址,请输入之前记录的防火墙专用 IP 地址。
选择 添加 。
现在,将路由关联到子网。
在“UDR-Hub-Spoke - 路由”页上,选择“子网”。
选择“关联”。
在“虚拟网络”下,选择“VNet-Hub”。
在“子网”下,选择“GatewaySubnet”。
选择“确定” 。
现在,创建从辐射子网的默认路由。
在 Azure 门户主页上,选择“创建资源”。
在搜索文本框中,输入 路由表 ,然后按 Enter。
选择“路由表”。
选择“创建”。
选择“FW-Hybrid-Test”作为资源组。
对于“区域”,请选择“中国东部”。
输入 UDR-DG 作为名称。
对于“传播网关路由”,请选择“否” 。
选择“查看 + 创建”。
选择“创建”。
创建路由表后,请选择它以打开路由表页。
在左栏中选择“路由”。
选择 添加 。
输入 ToHub 作为路由名称。
对于“目标类型”,请选择“IP 地址”
输入 0.0.0.0/0 作为目标 IP 地址/CIDR 范围。
选择“虚拟设备”作为下一跃点类型。
对于下一跳地址,请输入之前记录的防火墙专用 IP 地址。
选择 添加 。
现在,将路由关联到子网。
在“UDR-DG - 路由”页上,选择“子网”。
选择“关联”。
在“虚拟网络”下,选择“VNet-spoke”。
在“子网”下,选择“SN-Workload”。
选择“确定” 。
创建虚拟机
现在,创建分支工作负荷与本地虚拟机,并将其放入相应的子网。
创建工作负荷虚拟机
在辐射(Spoke)虚拟网络中创建一台没有公共 IP 地址的虚拟机,并在其中安装一个 Web 服务器。
在 Azure 门户主页上,选择“创建资源”。
在门户顶部的搜索框中,输入 虚拟机,在搜索结果中选择 虚拟机 。
选择“ 创建>虚拟机”。
输入或选择虚拟机的以下值:
设置 值 项目详细信息 订阅 选择 Azure 订阅。 资源组 选择 FW-Hybrid-Test。 实例详细信息 虚拟机名称 输入 VM-Spoke-01。 区域 选择“中国东部”。 可用性选项 选择“无需基础结构冗余”。 安全类型 选择“标准” 。 图像 选择 Ubuntu Server 24.04 LTS -x64 Gen2 尺寸 选择虚拟机的大小。 管理员帐户 用户名 输入“azureuser”。 SSH 公钥源 选择“生成新密钥对”。 密钥对名称 输入 VM-分支-01_key。 在“公用入站端口”,“入站端口规则”下 ,选择“无”。
选择下一步: 磁盘。
接受默认设置,然后选择“下一步:网络”。
选择“VNet-Spoke”作为虚拟网络;子网为“SN-Workload”。
对于“公共 IP”,请选择“无”。
选择“查看 + 创建”。
检查摘要页上的设置,然后选择“创建”。
出现提示时,选择“下载私钥和创建资源”。 将私钥文件保存到计算机。
部署完成后,请记下专用 IP 地址供以后使用。
安装 Web 服务器
连接到虚拟机并安装用于测试的 Web 服务器。
在 Azure 门户菜单上,选择“资源组”或从任意页面搜索并选择“资源组”。 选择 FW-Hybrid-Test 资源组。
选择 VM-Spoke-01 虚拟机。
选择 操作>运行命令>RunShellScript。
在脚本框中,输入以下命令:
sudo apt-get update sudo apt-get install -y nginx echo "<html><body><h1>VM-Spoke-01</h1><p>Hybrid network test page</p></body></html>" | sudo tee /var/www/html/index.html选择 运行。
等待脚本成功完成。
创建本地虚拟机
这是一个用于通过 Azure Bastion 进行连接的虚拟机,用于测试防火墙。
在 Azure 门户主页上,选择“创建资源”。
在门户顶部的搜索框中,输入 虚拟机,在搜索结果中选择 虚拟机 。
选择“ 创建>虚拟机”。
输入或选择虚拟机的以下值:
设置 值 项目详细信息 订阅 选择 Azure 订阅。 资源组 选择 FW-Hybrid-Test。 实例详细信息 虚拟机名称 输入 VM-Onprem。 区域 选择“中国东部”。 可用性选项 选择“无需基础结构冗余”。 安全类型 选择“标准” 。 图像 选择 Ubuntu Server 24.04 LTS -x64 Gen2 尺寸 选择虚拟机的大小。 管理员帐户 用户名 输入“azureuser”。 SSH 公钥源 选择“生成新密钥对”。 密钥对名称 输入 VM-Onprem_key。 在“公用入站端口”,“入站端口规则”下 ,选择“无”。
选择下一步: 磁盘。
接受默认设置,然后选择“下一步:网络”。
为虚拟网络选择 VNet-Onprem ,并验证子网是否为 SN-Corp。
对于“公共 IP”,请选择“无”。
选择“查看 + 创建”。
检查摘要页上的设置,然后选择“创建”。
出现提示时,选择“下载私钥和创建资源”。 将私钥文件保存到计算机。
部署完成后,请记下专用 IP 地址供以后使用。
测试防火墙
现在测试防火墙,以确认它是否按预期方式工作。
使用 Azure Bastion 和下载的 SSH 密钥连接到 VM-Onprem 虚拟机:
- 在 Azure 门户中,选择 VM-Onprem 虚拟机。
- 选择连接>连接>。
- 对于 身份验证类型, 请从本地文件选择 SSH 私钥。
- 对于 “用户名”,请输入 azureuser。
- 对于 本地文件,请选择“ 上传文件 ”并浏览到之前下载的 VM-Onprem_key.pem 文件。
- 选择 连接。
在 SSH 会话中,使用其专用 IP 地址在 VM-Spoke-01 上测试 Web 服务器(可以在 VM-Spoke-01 概述页上找到):
curl http://10.0.1.4应会看到 VM-Spoke-01 网页中的 HTML 响应:
<html><body><h1>VM-Spoke-01</h1><p>Hybrid network test page</p></body></html>关闭 Bastion SSH 会话。
现已验证防火墙规则可正常工作:
- 您可以在分支虚拟网络上浏览 Web 服务器。
接下来,将防火墙网络规则集合操作更改为“拒绝”,以验证防火墙规则是否按预期工作。
打开“FW-Hybrid-Test”资源组并选择“Pol-Net01”防火墙策略。
在“设置”下,选择“规则集合”。
选择“RCNet01”规则集合。
对于“规则集合操作”,请选择“拒绝”。
选择“保存”。
在测试已更改的规则之前,请关闭 VM-Onprem 上的所有现有远程桌面和浏览器。 规则集合更新完成后,再次运行测试。 这一次,远程桌面和浏览器应该都无法建立连接。
清理资源
可以保留防火墙资源以供进一步的调查。不再需要时,请删除 FW-Hybrid-Test 资源组,以删除与防火墙相关的所有资源。