Sql-Server

為安全域防火牆後面的 sql server 打開哪些埠

  • August 27, 2022

我們正在嘗試解決其中一個應用程序的連接問題,該應用程序試圖從防火牆後面的非常安全的 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,12345MySecureServer.am2.co,12345。同樣,在應用程序連接字元串中,您將使用相同的Server參數格式,例如Server=MySecureServer,12345;Database=myDataBase;Trusted_Connection=Yes.

可用性組

如果您連接到可用性組偵聽器而不是(或除了)伺服器名稱,那麼您需要讓防火牆允許訪問偵聽器 IP 和埠而不是(或除了)伺服器名稱,並且您將在連接字元串中使用偵聽器名稱和埠。

作為 DBA,我通常需要連接到實例本身AG 偵聽器,因此我將為實例 IP 及其埠以及 AG IP 和關聯埠配置防火牆規則。但是,根據您的環境和安全限制,您可能不需要/不想兩者都做。

您可以使用以下查詢確定 AG 偵聽器使用的 IP 和埠的完整列表:

SELECT l.dns_name, l.port, i.ip_address
FROM sys.availability_group_listeners AS l
JOIN sys.availability_group_listener_ip_addresses AS i
   ON i.listener_id = l.listener_id

引用自:https://dba.stackexchange.com/questions/316082