本文介绍如何控制来自Azure虚拟网络的出站 Internet 访问。 它比较 NAT 网关、Azure 防火墙和组合出口模式,以帮助为工作负荷选择可预测的安全方法。
本文介绍的内容
出站流量控制决定 Azure 工作负载如何访问公共互联网。 设计良好的出口策略提供可预测的公共 IP 地址、防止 SNAT 端口耗尽,并根据需要按目标筛选出站连接。
注释
本文介绍特定于出口的概念。 有关全面的防火墙覆盖,请参阅 Azure 防火墙 和流量检查。
谁需要本文
如果满足以下一个或多个条件,请阅读本文:
- 工作负荷需要对 Internet 进行受控的出站访问,以获取更新、API 或外部服务。
- 出站连接需要可预测的公共 IP 地址。
- 你需要防止 SNAT 端口耗尽,或为高连接数工作负载扩展出站连接能力。
- 需要在 NAT 网关、Azure 防火墙或用于出口控制和检查的组合模式之间进行选择。
Tip
按照场景路径操作? 在页面顶部选择你的方案,以获取定制指南。 以下核心指南适用于所有读者。
直接转移焦点: 迁移的 VM 需要受控的出站 Internet 访问。 通过中心防火墙集中所有出站流量,以跨迁移的工作负荷强制实施一致的安全策略。
如果你符合以下情况,请阅读本文:
- 部署需要访问 Internet 的工作负载,以获取更新、API 调用或第三方服务。
- 希望通过中心 VNet 中的 Azure 防火墙 集中管理出站流量。
- 需要在迁移的工作负荷上关闭默认出站访问,并将其替换为显式出口方法。
- 需要为出站连接使用固定且可预测的公共 IP 地址。
现代化重点: 所有辐射状 VNet 都通过用户定义路由(UDR)将出站流量经由中心防火墙路由。 这种集中式出口模型是安全体系结构不可或缺的一部分,因为它会阻止应用团队绕过 IT 托管的安全控制。
如果你符合以下情况,请阅读本文:
- 需要确保所有辐射网络中的工作负载(AKS、应用服务、虚拟机)都将出站流量经由中心防火墙路由。
- 想要将基于 UDR 的路由从每个分支路由到中心Azure 防火墙,以获取一致的出口策略。
- 要求中心防火墙对所有出站连接执行 SNAT。
- 需要防止高连接数工作负载的 SNAT 端口耗尽。
跨云焦点: 如果目标设计需要受控的 Internet 出口策略,请包括集中式出口。 否则,跨云流量通过中转路径(安全虚拟中心中的 Azure 防火墙),不需要单独的出口配置。
如果你符合以下情况,请阅读本文:
- 需要Azure登陆区域中的集中式 Internet 出口策略。
- 想要为跨云传输检查和 Internet 出口共享相同的Azure 防火墙。
- 在默认出站访问被弃用之前进行替代。
Azure服务和功能
下表介绍了可用于Azure虚拟网络中的出站 Internet 访问的服务和功能。
| 服务或功能 | 它提供的内容 | 何时使用它 |
|---|---|---|
| 默认出站访问(已停用) | Azure自动为出站连接分配临时公共 IP。 分配的 IP 不可预测,无需通知即可更改。 | 不要用于新部署。 替换为 NAT 网关或Azure 防火墙。 请参阅 安全注意事项。 |
| Azure NAT 网关 | 具有固定且可预测的公共 IP 的托管 SNAT 服务。 每个公共 IP 提供 64,512 个 SNAT 端口,最多提供 16 个公共 IP(总计超过 100 万个端口)。 无内容筛选。 | 需要固定出口 IP 的仅出站工作负载、高连接数应用程序,以及存在 SNAT 端口耗尽风险的场景。 |
| Azure 防火墙 | 针对出站流量的全面第 3 至第 7 层检测。 FQDN 筛选、URL 筛选、Web 类别和 IDPS(高级 SKU)。 集中式策略管理。 | 当您需要控制资源连接到哪些目标,而不只是确保它们具有出站访问权限时。 |
| NAT 网关 + Azure 防火墙 | NAT 网关负责防火墙子网中的 SNAT 扩展。 Azure 防火墙处理检查和筛选。 不会发生双重 NAT。 | 需要同时具备可扩展出口能力和内容感知过滤的生产环境。 适用于企业工作负荷的建议体系结构。 |
| 具有公共 IP 的 VM(出站) | 虚拟机使用自己的公共 IP 地址用于出站流量。 没有集中式控件或筛选。 | 避免用于生产。 没有集中式管理,在大规模下表现不可预测,也无法从共享的 SNAT 资源中受益。 |
如何选择
如何控制出站访问
使用下表根据要求选择出口方法。
| 你的要求 | 建议的方法 | 为什么 |
|---|---|---|
| 仅固定出站 IP 地址,无需过滤 | NAT 网关 | 提供具有自动 SNAT 端口分配的可预测公共 IP。 没有检查开销或筛选成本。 最简单的生产就绪选项。 |
| FQDN 筛选、URL 筛选或流量检查 | Azure 防火墙 | 按目标 FQDN 或 URL 筛选出站连接。 高级 SKU 版本增加了用于高级威胁检测的 IDPS 和 TLS 检测。 |
| 修复了出站 IP 和内容筛选 | NAT 网关 + Azure 防火墙 | AzureFirewallSubnet 上的 NAT 网关提供可缩放的 SNAT。 防火墙在出口前检查流量。 兼具两者所长。 |
| 不用于新部署 | 默认出站访问或虚拟机公共 IP 地址 | 默认出站访问已停用。 VM 公共 IP 不提供集中控制。 这两者都不适合生产工作负荷。 |
用于出站流量的 NAT Gateway 与 Azure 防火墙 对比
通过以下比较来了解 NAT 网关与 Azure 防火墙 分别独立使用时的权衡取舍。
| Capability | NAT 网关 | Azure 防火墙 |
|---|---|---|
| SNAT 端口 | 每个公共 IP 64,512 个(最多 16 个 IP,总计超过 100 万个) | 每个后端实例的每个公共 IP 为 2,496 个(最多 250 个 IP) |
| 流量筛选 | 无:允许所有出站流量通过 | FQDN 规则, URL 筛选, Web 类别, 网络规则 |
| IDPS 和 TLS 检查 | 不可用 | 仅限高级版 SKU |
| Throughput | 子网的线速(SNAT 无公开上限) | 最高 100 Gbps (高级)、 30 Gbps (标准)、 250 Mbps (基本) |
| 成本模型 | 每小时资源费用 + 每 GB 数据处理费用 | 每小时资源 + 处理的每 GB 数据(基本成本较高) |
| 路由复杂性 | 直接关联到子网,无需 UDR | 要求在工作负载子网上配置 UDR(0.0.0.0/0 → 防火墙私有 IP) |
| 用例 | 需要固定 IP 的大量出站连接 | 需要出口筛选和日志记录的受监管环境 |
出站流量的路由优先级
Azure 按以下优先顺序评估出站方法。 高优先级方法会覆盖同一子网上的低优先级方法:
- UDR 到虚拟设备或虚拟网络网关: 替代所有其他出站方法,包括 NAT 网关。
- NAT 网关: 优先于实例级公共 IP 和负载均衡器出站规则。
- 虚拟机上的实例级公共 IP。
- 负载均衡器出站规则。
- 默认系统路由到 Internet(Microsoft为新部署停用此选项)。
Important
指向虚拟设备(如 Azure 防火墙)的用户定义路由(UDR)将替代 NAT 网关。目标为 0.0.0.0/0。 此行为是针对组合 NAT 网关 + 防火墙体系结构设计的。 工作负荷子网上的 UDR 强制流量通过防火墙,而 AzureFirewallSubnet 上的 NAT 网关提供最终的出口 IP。
组合体系结构:NAT 网关 + Azure 防火墙
建议的企业出口生产模式结合了这两个服务:
- 工作负荷子网具有 UDR,用于将 0.0.0.0/0 流量发送到Azure 防火墙专用 IP 地址。
- Azure 防火墙使用网络规则、应用程序规则或两者来检查和筛选出站流量。
- NAT 网关 与 AzureFirewallSubnet 关联,并为防火墙的出站连接提供可缩放的 SNAT。
- 不会出现双重 NAT。 防火墙使用专用 IP 将流量发送到 NAT 网关,NAT 网关使用其公共 IP 应用 SNAT 一次。
此架构通过可扩展的 SNAT 实现集中式检查。 AzureFirewallSubnet 不需要额外的 UDR,因为 NAT 网关在关联后会自动路由出站互联网流量。
注释
标准 NAT 网关是区域资源,不支持区域冗余部署。 如果你部署了区域冗余的 Azure 防火墙,请使用 NAT Gateway V2(StandardV2 SKU)来实现区域冗余 SNAT。 当与区域冗余防火墙配对时,标准 NAT 网关将成为区域性中断期间的单一故障点。
数据流演练
以下序列演示单个出站请求如何流经组合体系结构:
- 工作负荷子网中的 VM 启动与外部 API 的 TCP 连接(例如
api.contoso.com:443)。 - 子网的 UDR 与 0.0.0.0/0 匹配,并将数据包发送到Azure 防火墙专用 IP。
- Azure 防火墙根据应用程序规则和网络规则评估连接。 如果匹配到包含 FQDN 允许项的应用程序规则,防火墙将允许该连接。
- 防火墙从其自己的接口在 AzureFirewallSubnet 上发送允许的数据包。
- 与 AzureFirewallSubnet 关联的 NAT 网关执行 SNAT。 它将防火墙的专用源 IP 转换为其公共 IP 之一,并从池中分配 SNAT 端口。
- 来自外部 API 的响应将返回到 NAT 网关公共 IP。 NAT 网关执行反向转换并将数据包传递回防火墙。
- 防火墙通过现有连接状态将响应发送到原始 VM。
在此端到端流中,防火墙仅检查一次流量,NAT 网关仅应用一次 SNAT,且没有双 NAT。
监控和诊断
监控您的出站基础设施,以便在容量问题影响工作负载之前检测到这些问题:
- NAT 网关指标:监视 Azure Monitor 中的 SNAT 连接总数、SNAT 连接计数(按状态)和 数据路径可用性。 当 SNAT 端口使用量超过分配容量的 80% 时设置警报。
- Azure 防火墙日志:启用诊断设置以将日志发送到Log Analytics。 使用 AzureFirewallApplicationRule 和 AzureFirewallNetworkRule 日志类别审核允许和拒绝的出站连接。
- 连接监视器:使用网络观察程序 连接监视器测试从工作负荷 VM 到外部终结点的端到端连接。 连接监视器检测到延迟增加和连接失败,这可能表示 SNAT 耗尽或防火墙配置错误。
- 防火墙指标: 跟踪 吞吐量、 规则命中计数和 SNAT 端口利用率 ,以正确调整防火墙 SKU 的大小,并确定热规则。
设计注意事项
对迁移后的工作负载发出的所有出站通信均使用 Azure 防火墙。 此方法提供从第一天开始的集中式 FQDN 筛选、日志记录和威胁检测:
- 关闭默认出站访问: 对于新部署,子网默认为专用(无自动出站)。 对于现有 VNet,应明确将默认出站替换为通过 Azure 防火墙 的出站流量,以避免依赖不可预测且不受控制的公共 IP 地址。
- 工作负载子网上的 UDR:在每个辐射型工作负载子网上创建用户定义路由(0.0.0.0/0 → Azure 防火墙 专用 IP 地址)。 此配置强制所有 Internet 绑定的流量通过中心防火墙。
- AzureFirewallSubnet 上的 NAT 网关: 将 NAT 网关与防火墙子网关联,以便进行可缩放的 SNAT。 此组合提供可预测的出口 IP,并避免 SNAT 端口耗尽。
- 先从宽泛的放行规则开始,再逐步收紧:在迁移期间,允许应用程序访问其所需的出站目标(Windows 更新、软件包存储库、第三方 API)。 在迁移稳定后,审查防火墙日志,并将访问范围限制为已知的 FQDN。
从每个分支到中心防火墙的基于 UDR 的路由是出口安全模型的基础。 应用团队无法绕过由 IT 管理的出站管控:
- 每个辐射型 VNet 中的 UDR:每个工作负载子网都关联了一个路由表,该路由表将 0.0.0.0/0 指向中心 Azure 防火墙 的私有 IP 地址。 此配置可确保 AKS 节点、应用服务 VNet 集成的子网和 VM 都通过防火墙进行出站路由。
- 中心网络防火墙充当 SNAT: Azure 防火墙对所有出站连接执行源 NAT。 所有分支工作负荷共享防火墙的出口 IP 地址,这简化了合作伙伴防火墙允许列表。
- 用于 SNAT 缩放的 NAT 网关: 将 NAT 网关与 AzureFirewallSubnet 相关联。 使用 16 个公共 IP(超过 100 万 SNAT 端口),可以处理高连接计数工作负载,例如具有许多 Pod 进行外部 API 调用的 AKS 群集。
- 用于 FQDN 控制的应用程序规则:使用 Azure 防火墙 应用程序规则按 FQDN 限制出站流量。 应用团队通过变更管理流程申请 FQDN 放行条目。 默认情况下,拒绝可防止数据外泄。
安全虚拟中心中的 Azure 防火墙会检查跨云传输流量和互联网出站流量。 为这两个路径共享单个防火墙简化了体系结构:
- 保护出口的虚拟中心防火墙:如果使用安全中心部署虚拟 WAN,中心中的Azure 防火墙将处理所有连接的 VNet 的 Internet 出口。 配置安全中心的 Internet 流量路由策略,以通过防火墙发送 0.0.0.0/0。
- 出口和跨云传输共享相同的防火墙:发往 Internet 的流量和通过 IPSec 隧道发往 AWS/Google Cloud 的流量都通过Azure 防火墙进行检查。 此设计意味着为所有出站路径保留一个规则集。
- 仅当需要时才集中: 如果跨云设计不强制集中 Internet 出口(例如,工作负荷仅在云之间通信),则可以跳过此配置,仅依赖于跨云传输防火墙检查。
先决条件
在实现出站出口控件之前,请确认以下项:
- 已部署一个虚拟网络,其子网大小适合您的工作负载。 有关子网设计指南 ,请参阅虚拟网络和子网 。
- 你了解用户定义的路由(UDR)及其如何替代默认Azure路由。 有关 UDR 配置详细信息 ,请参阅虚拟网络和子网 。
- 如果使用Azure 防火墙,则防火墙子网的大小正确。 AzureFirewallSubnet 至少需要 /26 (64 个地址)。
- 你知道 SNAT 的规模要求。 计算峰值并发出站连接数,以确定所需的 NAT 网关公网 IP 地址数量(每个 IP 提供 64,512 个端口)。
安全注意事项
替换默认出站访问
默认出站访问已停用。 对于 2026 年 3 月 31 日之后发布的 API 版本,新虚拟网络默认为专用子网(无自动出站)。 现有虚拟网络不受影响,但应迁移到使用显式出站方式。 有关完整详细信息,请参阅 默认出站访问文档。
注释
当前使用默认出站访问的现有虚拟网络和 VM 将继续工作。 但是,分配的公共 IP 无法预测,不提供任何筛选功能,并且会触发 Azure 顾问 警报。 无论停用时间表如何,都应规划迁移到 NAT 网关或 Azure 防火墙。
用于集中防火墙检查的 UDR 路由
使用Azure 防火墙进行出口控制时,请在每个工作负荷子网上创建一个 UDR,其中包含:
- 目标: 0.0.0.0/0
- 下一跳类型: 虚拟设备
- 下一跳地址: Azure 防火墙专用 IP(例如 10.0.1.4)
此配置可确保来自工作负荷子网的所有 Internet 绑定流量通过防火墙进行检查。 如果没有此 UDR,流量将绕过防火墙,并直接使用子网上配置的任何出站方法。
防止 SNAT 端口耗尽
当工作负载建立的并发出站连接数超过可用端口数量所能支持的范围时,就会发生 SNAT 端口耗尽。 症状包括间歇性连接超时、出站连接的 TCP RST 数据包,以及出现套接字错误的失败 HTTP 请求。 应用程序日志显示“已使用的地址”或“无法分配请求的地址”错误。 资源耗尽通常会在高负载下出现,此时大量短生命周期的连接会迅速打开到同一目标 IP 和端口。
为防止资源耗尽:
- 对于出站连接数较多的工作负载,请使用 NAT 网关。 每个公共 IP 提供 64,512 个 SNAT 端口,并在子网中的所有资源之间进行动态分配。
- 如果监视显示端口使用量超过 80%,请将公共 IP 添加到 NAT 网关。 最多添加 16 个公共 IP。
- 使用应用程序代码中的连接池重复使用现有连接,而不是为每个请求打开新的连接。
- 尽可能使目标终结点多样化。 SNAT 端口分配按目标 IP/端口元组分配,因此跨多个目标 IP 分布流量可降低端口压力。
- 缩短空闲超时时间,以便更快地回收端口。 NAT 网关的默认空闲超时为 4 分钟。 对于会创建大量短生命周期连接的工作负载,请调低此值。
网络安全组补充出口控制
网络安全组(NSG)和出站出口方法用于不同的目的,并协同工作。 NSG 按子网或 NIC 级别的 IP 地址和端口筛选流量。 NAT 网关和Azure 防火墙控制流量到达 Internet 的方式。 使用这两个层进行深度防御。 有关 NSG 设计的指导,请参阅 网络安全组和应用程序安全组。
强制隧道注意事项
强制隧道流出通过本地可能会造成延迟,并添加对本地防火墙的依赖关系。 如果低延迟很重要,请考虑使用 Azure 防火墙 进行出站流量检查。 如果符合性要求进行本地检查,请测试工作负荷子网的端到端延迟,并确保本地路径可以处理吞吐量要求,而不会成为瓶颈。
阻止数据渗透
Azure 防火墙 FQDN 筛选将出站连接限制为已批准的域名,从而防止数据外泄。 定义允许流量流向特定 FQDN(例如 *.blob.core.chinacloudapi.cn ,或 api.partner.com)的应用程序规则,并拒绝所有其他出站连接。 此方法可确保泄露的工作负载无法将数据发送到受攻击者控制的终结点。
相关文章
- 虚拟网络和子网:子网设计和 UDR 路由
- IP 地址规划:NAT 网关的公共 IP 分配
- Azure 防火墙的部署位置和规则:详细的防火墙指南,涵盖规则集合优先级和架构模式
- 网络安全组和应用程序安全组:补充出口控制的流量筛选
- 混合连接:强制隧道在需要时将出口发送到本地
- 入站互联网连接:与出站相对应的入站连接
Learn more
后续步骤
Tip
自行探索? 返回到 概述导航器 ,按功能查找下一篇文章。
接下来是直接迁移过程中的下一步:
配置中心防火墙:为集中东西部检查和出站流量控制设置Azure 防火墙。
现代化之旅的下一步:
配置中心防火墙:在中心中将Azure 防火墙设置为 SNAT/DNAT,以在流量到达应用层之前清理所有流量。
跨云之旅的下一步:
设置跨云监视:跨云资产更难进行故障排除。 在上线之前建立监视。