连接Azure OpenVPN虚拟机后无法访问子网内存储账户求助
解决Azure VPN连接后无法访问子网B存储账户的问题
核心问题是DNS解析错误:你的本地机器连VPN后,还是把存储账户的域名解析成了公网IP,而不是子网B里的专用端点IP,所以访问失败。下面是一步步的简单解决方法:
第一步:确认问题根源
打开命令提示符(Windows)或终端(Mac/Linux),输入:
nslookup 你的存储账户名.blob.core.windows.net
(如果是文件存储,把blob换成file;表存储换成table,以此类推)
- 如果返回的IP不是Azure存储账户专用终结点的内网IP,而是一串公网IP,那确实是DNS的问题,直接看后面的解决步骤。
第二步:临时测试(快速验证)
先通过本地hosts文件强制解析,验证是不是DNS导致的:
- 去Azure门户找到你的存储账户,进入「专用终结点」页面,复制它的专用IP地址
- 编辑本地hosts文件:
- Windows:打开记事本(右键选「以管理员身份运行」),打开
C:\Windows\System32\drivers\etc\hosts - Mac/Linux:用终端输入
sudo nano /etc/hosts
- Windows:打开记事本(右键选「以管理员身份运行」),打开
- 在文件末尾加一行:
(比如存储账户专用IP 你的存储账户名.blob.core.windows.net10.0.1.5 mystorage.blob.core.windows.net) - 保存文件后,再用
nslookup测试,确认解析到了专用IP,然后试试访问存储账户(比如用Azure存储 Explorer 或你的代码)。如果能访问,就坐实了是DNS的问题。
第三步:永久解决(让VPN自动获取正确DNS)
方法1:配置VPN推送VNet的DNS地址
- 去Azure门户找到你的OpenVPN VM,进入「网络」>「网络接口」>「DNS服务器」
- 选择「自定义」,输入Azure VNet的DNS服务器地址(默认是Azure提供的专用DNS,你可以在VNet的「DNS服务器」页面查到)
- 调整OpenVPN的配置,让它在连接时把这个DNS地址推送给本地机器(具体操作可以在OpenVPN的配置文件里添加
push "dhcp-option DNS VNet的DNS服务器IP")
方法2:确保VNet已链接专用DNS区域
Azure的专用端点需要配合专用DNS区域才能正确解析:
- 去Azure门户搜索「专用DNS区域」,看看有没有对应存储服务的区域(比如
privatelink.blob.core.windows.net) - 如果没有,新建一个对应类型的专用DNS区域,然后在区域的「虚拟网络链接」里,把你的VNet加进去
- 这样VNet内的所有机器(包括VPN连接进来的设备)都能自动把存储账户域名解析到专用IP
第四步:排除其他小概率问题
如果上面的方法都不行,再检查:
- 从你的OpenVPN VM ping存储账户的专用IP,如果ping不通,去子网B的网络安全组(NSG)确认入站规则允许来自子网A的流量(默认是允许的,除非你手动改了)
- 确认存储账户的专用终结点状态是「已批准」,没有处于未审批状态
内容的提问来源于stack exchange,提问作者Andrew Duffy
相关产品推荐
相关产品推荐

