我正在尝试登录到一个新创建的天蓝色sql服务器。在连接之前,我将使用azure-python以编程方式添加我的客户机ip。一旦我的客户端ip被添加,我尝试登录到数据库。
ProgrammingError: ('42000', "[42000] [Microsoft][ODBC Driver 17 for SQL Server][SQL Server]Cannot open server 'x' requested by the login. Client with IP address 'yyy.yy.yy.yy' is not allowed to access the server. To enable access, use the Windows Azure Management Portal or run sp_set_firewall_rule on the master database to create a firewall rule for this IP address or address range. It may take up to five minutes for this change to take effect. (40615) (SQLDriverConnect)")这个ip不同于我在我的机器中获得的公共ip。原因何在?我连接到我的公司vpn。
我用这个检索我的客户端ip - https://checkip.amazonaws.com/ - xxx.xx.xx.xx
另外,在azure中使用-这与xxx.xx的结果相同。

这里的ip yyy.yy.yy.yy是什么?如何检索它,以便能够以编程方式将其白化呢?
发布于 2021-10-12 02:31:43
我怀疑您正在通过VPN隧道连接到Azure服务,而不是您的主接口;因此,您将不会向Azure服务显示您的公共IP。您从签入URL中获取的IP是您的公共IP。
您可以通过检查route print终端中的route输出或在Linux中简单地检查route来验证这一点。当您的VPN处于活动状态时,您应该会看到Azure服务的子网列出了一个与您的LAN不匹配的接口。就像这样:
0.0.0.0 0.0.0.0 192.168.2.1 192.168.2.12 25
172.31.0.0 255.255.0.0 10.168.0.100 10.168.44.64 1在上面的示例中,第一行显示了我的LAN接口作为默认路由(192.168.2.12),它将用于所有东西(0.0.0.0);除非我试图达到172.31.0.0/16 (假设是我的“蔚蓝服务”)。在这种情况下,将使用10.168.44.64接口,在本例中,该接口是VPN接口。
使用192.168.2.12的默认接口将将我的公共IP呈现给不符合VPN规则的在线服务,例如,您的checkip。
如果是这样的话,那么您需要添加由VPN接口的路由命令或确切的IP指定的子网,这取决于您的需求。在本例中,为10.168.0.100。
如果您想以编程的方式执行此操作,则必须获取VPN接口的当前IP。
https://stackoverflow.com/questions/69534198
复制相似问题