Hub-Spoke架构中跨VNet VM通过Azure门户访问存储账户Private Endpoint失败排查
问题:Hub-Spoke架构下跨VNet的VM无法通过Azure门户访问带Private Endpoint的存储账户
环境配置
- 采用Hub-Spoke架构,中心VNet部署Azure Firewall
- 3个独立VNet:分别承载Azure Firewall、业务VM、存储账户的Private Endpoint
- 已创建对应存储服务的Private DNS Zone(如
privatelink.blob.core.windows.net等),并关联至中心VNet - Azure Firewall配置了Private DNS Zone的条件转发规则,指向Azure DNS(168.63.129.16)
- 所有子网的路由表均配置默认路由,引导流量经过Azure Firewall
- VM可正常解析存储账户的私有IP
问题现象
VM通过Azure门户访问存储账户容器时,仍收到「需将公网IP添加至存储账户网络允许列表」的提示,无法正常访问。
排查思路及调整建议
1. 明确Azure门户的流量逻辑
通过Azure门户访问存储账户时,实际存储操作由Azure门户的后台服务发起,而非你的本地浏览器或VM。如果存储账户仅开放Private Endpoint访问,且未授权Microsoft服务访问,门户后台无法通过Private Endpoint连接存储,就会触发公网IP添加提示。
- 检查存储账户「网络」设置:在「选定的网络」模式下,是否勾选了允许受信任的Microsoft服务访问此存储账户?未勾选的话直接启用该选项。
2. 验证Private Endpoint与DNS配置
- 确认存储账户的Private Endpoint状态为「已连接」,且关联的VNet为指定的Private Endpoint承载VNet
- 检查Private DNS Zone是否关联至VM所在的Spoke VNet:虽然VM能解析私有IP,但仅关联中心VNet可能存在DNS传播延迟,补充关联Spoke VNet可避免解析异常
- 在VM上执行
nslookup <storage-account-name>.blob.core.windows.net,确认返回结果为Private Endpoint的私有IP,而非公网IP
3. 检查Azure Firewall规则
- 确认Firewall的应用规则允许VM所在VNet到存储账户Private Endpoint IP段的HTTPS(443端口)流量
- 查看Firewall日志,过滤VM到存储私有IP的443流量,排查是否存在被拒绝的条目
- 检查是否有NAT规则或自定义路由意外阻断了私有网络流量
4. 验证子网路由配置
- 确认VM所在子网的路由表中,存在指向Azure Firewall的、针对存储Private Endpoint IP段的具体路由(而非仅默认路由)
- 确认存储Private Endpoint所在子网的路由表,允许来自中心VNet(Firewall)的流量进入
5. 绕过门户直接测试存储连通性
在VM上执行以下命令,排除门户本身的权限问题,验证VM到存储的Private Endpoint路径是否通畅:
# 安装Azure CLI(若未安装) curl -sL https://aka.ms/InstallAzureCLIDeb | sudo bash # 以VM系统身份登录Azure az login --identity # 列出存储账户容器 az storage container list --account-name <你的存储账户名>
如果命令能正常返回容器列表,说明网络路径正常,问题仅出在门户权限配置;若命令失败,回到网络规则和路由的排查步骤。
内容的提问来源于stack exchange,提问作者Jcircuit
相关产品推荐
相关产品推荐

