从具有动态外部 IP 的计算机连接到 Azure SQL 服务器

Connect to Azure SQL Server from computer with dynamic external IP

我正在尝试将具有动态外部 IP 的本地笔记本电脑连接到我们的 Azure SQL 服务器。为此,我创建了一个虚拟网络网关并将笔记本电脑连接到该网关。另外,我向 SQL 服务器添加了一个专用端点。在此之后,我可以使用 telnet 成功连接到 SQL 服务器 IP,如果我解析主机文件中的 SQL 服务器 FQDS,我可以通过 SSMS 连接到服务器。但是如果没有主机文件,笔记本电脑总是会尝试通过 public endpoint/address.

连接到 SQL 服务器

我找到了以下文章:https://techcommunity.microsoft.com/t5/azure-database-support-blog/azure-sql-db-private-link-private-endpoint-connectivity/ba-p/1235573这篇文章很棒。它建议使用您自己的 DNS 服务器将 SQL 服务器 FQDN 解析为本地 IP。不幸的是,笔记本电脑无法访问任何自定义 DNS,因此此解决方案不适合。 有两个问题:

  1. 是否有可能在具有动态 IP 的本地计算机与使用专用终结点但没有自己的 DNS 服务器的 Azure SQL 服务器之间建立连接?

  2. 如果第一个问题的答案是 "No",是否有另一种方法可以使用任何其他方法将具有动态 IP 的本地计算机连接到 Azure SQL 服务器Azure 应用程序?

首先,没有DNS服务就不能使用FQDN。因此,您确实需要一个自定义 DNS 服务器,在连接字符串中使用服务器的 FQDN,以便您的客户端从本地 VM 连接到 Azure SQL 服务器。

由于您使用的是笔记本电脑,因此您计算机使用的 DNS 服务器很可能是由您的 ISP 指定的。您无法再控制它或要求您的 ISP 配置 DNS 转发器。否则,您需要在内部网络中部署 DNS 服务器。目前,在这种情况下,最好的方法是使用本地计算机上的 HOSTS 文件来覆盖 Public DNS。

但是,如果您不喜欢使用 HOSTS 文件,您可以在与虚拟网络网关相同的 Azure 虚拟网络中提供一个 Azure VM 作为 DNS 服务器

主要步骤:

  1. 部署一个 Azure VM,RDP 到该 VM,运行PowerShell 命令安装 DNS 服务器角色。

    Install-WindowsFeature -Name DNS -IncludeManagementTools Get-WindowsFeature *DNS*

  2. 根据 this blog. If you do not want to use forwarder you can also create a forward lookup zone and added manually the host to match the FQDN. You could read On-premises workloads using a DNS forwarder 中的步骤 5,将 Azure DNS (168.63.129.16) 添加为自定义 DNS 服务器上的转发器更多细节。

  3. 在您配置好 DNS 服务器并设置 DNS 转发器之后。您可以将 Azure VNet 的 DNS 服务器更改为您的 Azure VM 的私有 IP 地址。

  4. 重新启动您的 Azure VM 并重新下载 VPN 客户端包并重新连接 VPN 连接以进行网络更新。检查本地 VPN 客户端机器上的 DNS 服务器,并将 DNS 服务器设置为 TCP/IP 设置中的自定义 DNS 服务器。然后您将通过 Azure 服务的默认 FQDN 查找您的私有 IP 地址。

    在我的示例中,我使用的是 Azure 存储帐户,但它与 Azure 的工作方式相同 SQL 在 Azure 和 P2S VPN 连接上使用专用端点时的数据库。 这样就要求除了 本地计算机上的 P2S VPN 连接。

然后您可以将 Azure SQL 服务器 FQDN 解析为专用端点的专用 IP 地址。但是,使用 VPN 连接到 Azure SQL 服务器的性能可能并不比通过 public Internet 和 public DNS 服务直接连接到它更好。