我们正在尝试解决其中一个应用程序的连接问题,该应用程序试图从防火墙后面的非常安全的 sql 服务器中提取数据。我不是安全方面的专家,但需要有关如何继续为该应用程序打开端口以从安全域后面的 sql server 中提取数据的帮助。
我们已经打开了 sql server 正在侦听的端口,比如说 12345,但仍然没有运气。
我怎么知道可能需要打开哪些额外的端口,如 udp 1434 默认 1433 或镜像 5022?有没有办法找到这些信息?
我们正在尝试解决其中一个应用程序的连接问题,该应用程序试图从防火墙后面的非常安全的 sql 服务器中提取数据。我不是安全方面的专家,但需要有关如何继续为该应用程序打开端口以从安全域后面的 sql server 中提取数据的帮助。
我们已经打开了 sql server 正在侦听的端口,比如说 12345,但仍然没有运气。
我怎么知道可能需要打开哪些额外的端口,如 udp 1434 默认 1433 或镜像 5022?有没有办法找到这些信息?
如果您使用的是独立的 SQL Server 实例,答案非常简单。如果您有一个可用性组,并且正在使用 AG 侦听器进行连接,那么您需要为 AG 侦听器执行额外的防火墙规则。
独立 SQL Server
如果 SQL Server 在 1433 以外的端口上运行,则需要告诉应用程序要连接到哪个端口。
一种方法是让SQL Server Browser 服务广播该信息。鉴于您将其描述为“非常安全”的环境,此选项可能不是最好的。但是,如果您确实希望采用这种方法,则需要允许 UDP 1434。
第二种选择只是在连接字符串中包含端口号。在 SSMS 中,您只需输入格式为 的服务器名称
ServerName,port
,例如MySecureServer,12345
或MySecureServer.am2.co,12345
。同样,在应用程序连接字符串中,您将使用相同的Server
参数格式,例如Server=MySecureServer,12345;Database=myDataBase;Trusted_Connection=Yes
.可用性组
如果您连接到可用性组侦听器而不是(或除了)服务器名称,那么您需要让防火墙允许访问侦听器 IP 和端口而不是(或除了)服务器名称,并且您将在连接字符串中使用侦听器名称和端口。
作为 DBA,我通常需要连接到实例本身和AG 侦听器,因此我将为实例 IP 及其端口以及 AG IP 和关联端口配置防火墙规则。但是,根据您的环境和安全限制,您可能不需要/不想两者都做。
您可以使用以下查询确定 AG 侦听器使用的 IP 和端口的完整列表:
虽然我第二次回答其他答案,但该应用程序与 port# 5022无关,它用于从 AG 的主副本到辅助副本的数据库复制。对于应用程序,只需要客户端端口,默认为1433或任何自定义端口。
此外,您可以使用基准验证和/或确保安全地维护 SQL Server。