我正在尝试配置从不同对等网络对 CosmosDB for MongoDB 数据库的 Azure 专用链接访问,但这对我不起作用。我对 SQL Server 数据库有完全相同的配置,并且效果很好。
我完全按照此链接的指示为位于 vnet1 中的 CosmosDB 数据库配置专用端点,并使用专用 DNS 区域 https://learn.microsoft.com/en-us/azure/cosmos-db/how-to-configure -private-endpoints?tabs=arm-bicep
在 vnet2 中,我配置了与 vnet1 的对等互连,并检查了所有可能的选项,包括网关传输。我也将私有 DNS 区域链接到此 vnet2。
使用此配置,我无法从位于 vm2 中的虚拟机连接到 CosmosDB。如果我远程登录到我的 CosmosDB 私有 IP,它工作正常,但使用 Mongo Shell,我会收到“请求被网络防火墙阻止”错误,无论是使用 CosmosDB 名称还是其 IP。
如果我配置对 vnet2 的 CosmosDB 公共访问,连接就可以工作,但我知道这样我就没有按照我想要的方式使用专用链接。
解决这个问题后,我还想允许Point-to-Site VPN客户端访问这个CosmosDB。此 VPN 客户端正在连接到在 vnet2 中的虚拟网络网关中配置的点到站点 VPN。当我尝试连接到 SQL Server 时,这对我来说工作正常,但对于 CosmosDB 则不然。我的 SQL Server 已禁用公共访问,因此我相信它确实在使用其专用链接。
有人知道这里会发生什么吗?这个配置可以吗
我尝试在禁用公共访问的情况下从 vnet2 中的虚拟机使用 Mongo Shell 连接到我的 CosmosDB 数据库,但这不起作用,发生了“请求被网络防火墙阻止”错误。
如果我启用仅允许 vnet2 的公共访问,它可以正常工作,但这不是我想要的,我想使用专用链接,并且我认为允许任何公共访问我无法实现这一点。
我还尝试从连接到点到站点 VPN 的客户端连接到 CosmosDB。即使配置了 vnet2 的公共访问,我也无法从此客户端进行连接。只有当我允许我的特定公共演讲时我才会工作,这是我想避免的事情。这个 VPN 客户端实际上是我的开发工作站,我真的希望它们能够连接到这个 CosmosDB,而不必总是允许每个特定的 IP。
问题解决了。最终这只是 DNS 问题。
我的 vnet2(VPN vnet)中有一个 Windows Server,我在其中配置了 DNS 服务来解析 VPN 客户端的名称。此 DNS 服务配置了条件转发器,将特定域的请求转发到 vnet1 中的另一个 DNS 服务器,并使用默认转发器转发到 Azure DNS。我记得我在互联网上的某个地方看到过这个配置,它最初是有效的。
但是我找到了另一种方法来进行此配置,它更容易并且工作完美:
这更容易并解决了我的问题。