4. Azure虚拟网络对等互连

当企业把不同业务、不同环境或不同区域的工作负载拆进多个虚拟网络(VNet)后,最先遇到的现实问题就是:这些 VNet 之间如何互通。Azure 虚拟网络对等互连(VNet Peering)提供的是一种把两个 VNet 直接连接起来的机制,使两端资源可以像处在同一网络中一样通过私有 IP 通信。它不依赖公网、不经过网关设备,流量走的是 Azure 骨干网,因此延迟低、带宽高,是 Azure 内部网络互联最常用的基础手段。

对等互连的两种类型

VNet Peering 按两端 VNet 所处位置分为两类:

  • 区域内对等(Regional VNet Peering):两个 VNet 位于同一 Azure 区域。例如都在“中国东部”,此时对等连接延迟最低,通常用于同一区域内生产、测试、共享服务等 VNet 的互联。
  • 全局对等(Global VNet Peering):两个 VNet 位于不同 Azure 区域。例如一个在“中国东部”,另一个在“中国北部”。全局对等同样走 Azure 骨干网,但跨区域流量会产生额外的出站数据传输费用,且延迟高于区域内对等。

需要特别强调的是:对等互连是非传递的。如果 VNet A 与 VNet B 对等,VNet B 与 VNet C 对等,A 并不能自动访问 C。要实现 A 到 C 的连通,必须显式建立 A 与 C 的对等,或借助网关传输、Azure 防火墙、路由服务器等机制中转。这是初学者最容易踩的坑。

网关传输:让对等网络共享混合连接

很多企业已经通过 VPN 网关或 ExpressRoute 网关把本地数据中心接入某个 VNet(通常称为 Hub VNet)。如果 Spoke VNet 也想复用这个网关访问本地网络,而不想每个 Spoke 都单独建网关,就可以使用网关传输(Gateway Transit)。

网关传输的规则是:

  • 在 Hub 侧的对等连接上启用“允许网关传输”(Allow gateway transit)。
  • 在 Spoke 侧的对等连接上启用“使用远程网关”(Use remote gateways)。
  • Spoke VNet 自身不能再部署网关,否则会冲突。
  • 网关传输只对 VPN/ExpressRoute 网关生效,不适用于 Azure 防火墙或 Route Server 的传递,后者需要单独配置。

这样,Spoke 中的虚拟机访问本地数据中心时,流量会经对等链路到 Hub,再由 Hub 的网关转发出去,实现“一个网关、多网共享”。

对等互连的配置过程

对等互连必须在两端分别创建,且两端状态都变为“已连接”才算真正生效。下面以两个 VNet 为例,给出 Azure CLI 的配置示例。假设 Hub VNet 为 vnet-hub(10.0.0.0/16),Spoke VNet 为 vnet-spoke(10.1.0.0/16),两者位于同一区域。

# 1. 在 Hub 侧创建指向 Spoke 的对等连接
az network vnet peering create \
  --name hub-to-spoke \
  --resource-group rg-network \
  --vnet-name vnet-hub \
  --remote-vnet /subscriptions/<sub-id>/resourceGroups/rg-network/providers/Microsoft.Network/virtualNetworks/vnet-spoke \
  --allow-vnet-access true \
  --allow-forwarded-traffic true \
  --allow-gateway-transit true

# 2. 在 Spoke 侧创建指向 Hub 的对等连接
az network vnet peering create \
  --name spoke-to-hub \
  --resource-group rg-network \
  --vnet-name vnet-spoke \
  --remote-vnet /subscriptions/<sub-id>/resourceGroups/rg-network/providers/Microsoft.Network/virtualNetworks/vnet-hub \
  --allow-vnet-access true \
  --allow-forwarded-traffic true \
  --use-remote-gateways true

关键参数说明:--allow-vnet-access 控制是否允许对等网络访问本 VNet;--allow-forwarded-traffic 允许经网关或 NVA 转发的流量通过对等链路;--allow-gateway-transit 与 --use-remote-gateways 成对使用,实现网关共享。若两端地址空间有重叠,对等创建会直接失败,因此规划阶段必须保证各 VNet 的 CIDR 不冲突。

连通性验证与常见排障

配置完成后,可用以下方式验证:

  1. 查看对等状态:az network vnet peering list --resource-group rg-network --vnet-name vnet-hub -o table,两端 PeeringState 应为 Connected。
  2. 在 Spoke 的 VM 上 ping Hub 中 VM 的私有 IP,或使用 Test-NetConnection 测试 TCP 端口。
  3. 若不通,优先检查 NSG 规则、两端地址空间是否重叠、对等状态是否 Connected、以及是否误以为对等可传递。
对等互连创建后,Azure 会自动在两端 VNet 的路由表中加入指向对端地址空间的路由,无需手工配置 UDR。但若使用了 NVA 或强制隧道,可能需要额外 UDR 覆盖默认对等路由。
VNet Peering 拓扑与网关传输示意 Hub VNet (10.0.0.0/16) VM-Hub VPN / ER 网关 允许网关传输 ✓ 允许转发流量 ✓ Spoke VNet (10.1.0.0/16) VM-Spoke 使用远程网关 ✓ 允许转发流量 ✓ VNet Peering 私有 IP 直连 · 非传递 本地数据中心 192.168.0.0/16 经 VPN / ExpressRoute 接入 混合连接 经网关传输访问本地 对等链路 网关/混合连接 网关传输路径

最后提醒一点:对等互连的计费按入站和出站流量分别计算,区域内与全局对等的单价不同。设计拓扑时,除了连通性,还应结合流量走向、费用和故障域来权衡 Hub-Spoke 与全网状(Mesh)结构。对于 Spoke 数量较多的场景,Hub-Spoke 加网关传输通常比两两对等更易管理、成本更可控。