AnyConnect 开启时 Azure Ubuntu VM 出现 MSSQL 超时错误

MSSQL Timeout error on Azure Ubuntu VM when AnyConnect is on

希望你能帮我解决这个问题:

我写了一个 NodeJS 应用程序,它连接到 Azure MSSQL 并接收来自 VPN AnyConnect 客户端的请求,当我 运行 我的开发机器上的整个系统是 Ubuntu 时,它运行良好服务器 18.04,当我尝试在 Azure VM 上部署它时(Ubuntu 服务器 18.04 也是),当 vpn 客户端连接时,NodeJS 会向 azure MSSQL 抛出超时,如果我断开 vpn,NodeJS 再次运行良好。

我已经配置了 azure VM 端口以允许 vpn、ssh 和 https 连接,我使用的 NodeJS 库是 node-msql

任何使 MSSQL 连接成为 AnyConnect 客户端的建议?

面对没有人遇到过的麻烦真是太好了,我想分享一下我是如何解决这个问题的。如果有人遇到同样的麻烦,我希望这对您有所帮助。

我的问题是 SQL 服务器上的连接策略,在我的例子中,数据库托管在 Azure 上,因此,使用 az 命令行工具(您可以安装它或在 Azure 门户上使用)我修复了这个:

//Check policy connection
$ az sql server conn-policy show -g myResourceGroup -s mySQLServer

//This displayed next:

{
    "connectionType": "Default",

    "id": "/subscriptions/{mySusbcriptionId}",

    "kind": null,

    "location": "East US",

    "name": "default",

    "resourceGroup": "MyresourceGroup",

    "type": "Microsoft.Sql/servers/connectionPolicies"

}

AZ docs sais 中有 3 种类型的策略:默认、重定向和代理 我确实尝试了所有这些,但对我有用的是代理,你可以改变 此命令的策略:

$ az sql server conn-policy update -g myResourceGroup -s mySQLServer -t Proxy

在此之后,VM 可以与 SQL 服务器建立连接并且现有连接不受影响。