我的设置涉及一个运行 Server 2012 的 Microsoft Azure VM 实例,该实例连接到另一个实例上的 Azure SQL 数据库 V12 服务器。
我在服务器上设置了 SSTP VPN,它可以正常工作。连接到它的客户端不使用服务器网关,因为它的目的是托管网络共享而不是代理流量。数据库服务器设置为拒绝除 VPN 服务器之外的任何连接。
我希望能够通过 VPN 访问数据库,但在将流量从 VPN 服务器路由到数据库时遇到了问题 — 具体来说,我希望能够通过 访问数据库192.168.26.1
。我已打开端口 1433,并添加了 TCP 端口转发:
netsh add v4tov4 listenaddress=192.168.26.1 listenport=1433 connectaddress=<database hostname> connectport=1433
192.168.26.1
当我尝试通过客户端计算机连接到数据库时, netstat
VPN 服务器上显示:
> netstat -an | findstr 1433
TCP 10.0.0.4:51056 <database ip>:1433 TIME_WAIT
TCP 192.168.26.1:1433 0.0.0.0:0 LISTENING
类似地,netstat
在客户端(Windows 10 机器)上显示了与的简短连接192.168.26.1:1433
。
由此,我相信与数据库的连接是通过 VPN 进行,但是当尝试通过代理连接到数据库时192.168.26.1
,SSMS 显示:
您的客户端 IP 地址无权访问服务器。登录 Azure 帐户并创建新的防火墙规则以启用访问。
按照说明操作后,Azure 会将我的客户端 IP 添加到允许的防火墙规则中。但是,连接不是应该通过 VPN 建立吗?netstat
似乎是这样,那么为什么要求我添加我的客户端 IP?
对于我的 SQL 凭据,我将其用作192.168.26.1
服务器名称和<username>@<database hostname>
登录名。这可以通过 VPN 服务器上的远程桌面连接来实现。
这是怎么回事?
答案1
您的客户端 IP 地址无权访问服务器。登录 Azure 帐户并创建新的防火墙规则以启用访问。
您需要允许 VPN 服务器的公共 IP 地址访问 Azure SQL 数据库。允许私有 IP 地址不起作用。
根据netstat的输出,您的VPN服务器有2个NIC,您需要允许连接到Azure SQL数据库的公共地址。