全部產品
Search
文件中心

ApsaraDB RDS:SQL Server如何確定外部伺服器/用戶端的公網IP地址

更新時間:Feb 28, 2024

本文介紹使用者的公網IP不固定時,如何定位真實的公網IP地址。

情境一

問題描述

使用者的公網IP不固定,使用本地IP查看工具定位到的IP不準確,即使將查詢到的本地IP加入了RDS的白名單中,串連RDS的時候也會報錯。因此,使用者需要查詢到準確的用戶端IP才能訪問RDS。

注意事項

如果您在生產環境中發現本地裝置的公網IP地址會變化,建議您改為使用內網串連,或者在白名單中配置合理的公網IP段,確保不會因為IP地址改變而斷連。

擷取用戶端IP

  1. 將IP地址0.0.0.0/0加入RDS執行個體的白名單中。具體操作,請參見設定白名單

    重要

    0.0.0.0/0表示允許任何IP訪問RDS執行個體,測試完成後請立即修改。

  2. 使用用戶端串連RDS SQL Server資料庫。具體操作,請參見串連SQL Server執行個體

  3. 執行如下命令,查詢用戶端IP。

    SELECT  CONNECTIONPROPERTY('PROTOCOL_TYPE') AS PROTOCOL_TYPE,
            CONNECTIONPROPERTY('CLIENT_NET_ADDRESS') AS CLIENT_NET_ADDRESS

    如下表示已查詢成功:

    image.png

  4. 將步驟1在白名單中添加的0.0.0.0/0條目刪除,添加上真實的出口IP。

情境二

問題描述

若您需要統計已串連到RDS SQL Server資料庫的所有IP,或定位一些安全問題(如連結泄露等),可以使用以下方法擷取已串連到資料庫的所有IP。

擷取所有串連到資料庫的IP

  1. 將IP地址0.0.0.0/0加入RDS執行個體的白名單中。具體操作,請參見設定白名單

    重要

    0.0.0.0/0表示允許任何IP訪問RDS執行個體,測試完成後請立即修改。

  2. 使用用戶端串連RDS SQL Server資料庫。具體操作,請參見串連SQL Server執行個體

  3. 執行如下命令,查詢所有串連到資料庫的IP。

    SELECT
    SP.SPID,
    SP.LOGINAME,
    SP.LOGIN_TIME,
    SP.HOSTNAME,
    SP.PROGRAM_NAME,
    DC.CLIENT_TCP_PORT,
    DC.CLIENT_NET_ADDRESS
    FROM SYS.SYSPROCESSES AS SP
    INNER JOIN SYS.DM_EXEC_CONNECTIONS AS DC
    ON SP.SPID = DC.SESSION_ID
    WHERE SP.SPID > 50
    AND DC.AUTH_SCHEME='SQL'

    如下表示已查詢成功:

    image.png

  4. 將在步驟1中添加的0.0.0.0/0或您公司的IP段從白名單中刪除。

查看更詳細的串連參數配置

在查詢到已串連到資料庫的所有IP後,若您需要查看單個串連更詳細的參數配置,請執行如下命令:

SELECT * FROM SYS.DM_EXEC_SESSIONS WHERE SESSION_ID=<之前擷取的SPID>

如下表示已查詢成功:

image.png