Azure存储账户IP例外规则在VPN下失效问题求助
Azure存储账户VPN连接下选定IP访问失败问题排查与解决
问题场景
- 存储账户配置:
Public network access设置为Enabled from selected virtual networks and IP addresses,添加了VPN客户端公网IP(23.111.111.111),容器为私有访问级别 - 异常现象:笔记本断网重启重连VPN后,通过Azure门户或Azure Storage Explorer访问容器时报错:
This request is not authorized to perform this operation. This storage account's 'Firewalls and virtual networks' settings may be blocking access to storage services.
- 验证结果:VPN下公网IP显示未变,移除并重新添加该IP至允许列表无效;断开VPN后添加本地公网IP(174.222.222.222)可正常访问;将存储账户网络设置改为
Enabled from all networks时,VPN下也能正常访问容器
可能原因
- VPN出站IP实际转换差异:部分企业VPN重启后,客户端显示的公网IP与实际访问Azure存储时的出站IP不一致(VPN网关做了二次SNAT转换),导致请求IP不在允许列表内
- Azure存储规则缓存未失效:存储账户的防火墙规则存在缓存,即使重新添加IP,缓存未及时更新导致规则未生效
- 本地DNS解析异常:VPN重连后,本地DNS缓存未刷新,解析存储账户域名时指向了未匹配IP规则的节点
无需复杂配置的解决办法
- 确认真实出站IP:在VPN连接状态下,通过命令行执行
curl ifconfig.me(或访问对应网页)获取实际访问公网的IP,将该IP(若有多组出站IP则全部添加)加入存储账户的防火墙允许列表 - 强制刷新存储账户规则:
- 临时将
Public network access切换为Enabled from all networks并保存 - 等待1-2分钟后改回
Enabled from selected virtual networks and IP addresses,并确保已添加正确的出站IP
- 临时将
- 清除本地DNS缓存:
- Windows:打开命令提示符执行
ipconfig /flushdns - macOS:打开终端执行
sudo dscacheutil -flushcache; sudo killall -HUP mDNSResponder
- Windows:打开命令提示符执行
- 检查VPN路由模式:确认企业VPN是否开启「强制隧道」,若开启需将VPN网关的所有出站IP加入允许列表;若为「拆分隧道」,需确保存储账户域名被纳入VPN路由范围
内容的提问来源于stack exchange,提问作者Zac Truelove
相关产品推荐
相关产品推荐

