本文介紹使用者的公網IP不固定時,如何定位真實的公網IP地址。
情境一
問題描述
使用者的公網IP不固定,使用本地IP查看工具定位到的IP不準確,即使將查詢到的本地IP加入了RDS的白名單中,串連RDS的時候也會報錯。因此,使用者需要查詢到準確的用戶端IP才能訪問RDS。
注意事項
如果您在生產環境中發現本地裝置的公網IP地址會變化,建議您改為使用內網串連,或者在白名單中配置合理的公網IP段,確保不會因為IP地址改變而斷連。
擷取用戶端IP
將IP地址
0.0.0.0/0
加入RDS執行個體的白名單中。具體操作,請參見設定白名單。重要0.0.0.0/0
表示允許任何IP訪問RDS執行個體,測試完成後請立即修改。使用用戶端串連RDS SQL Server資料庫。具體操作,請參見串連SQL Server執行個體。
執行如下命令,查詢用戶端IP。
SELECT CONNECTIONPROPERTY('PROTOCOL_TYPE') AS PROTOCOL_TYPE, CONNECTIONPROPERTY('CLIENT_NET_ADDRESS') AS CLIENT_NET_ADDRESS
如下表示已查詢成功:
將步驟1在白名單中添加的0.0.0.0/0條目刪除,添加上真實的出口IP。
情境二
問題描述
若您需要統計已串連到RDS SQL Server資料庫的所有IP,或定位一些安全問題(如連結泄露等),可以使用以下方法擷取已串連到資料庫的所有IP。
擷取所有串連到資料庫的IP
將IP地址
0.0.0.0/0
加入RDS執行個體的白名單中。具體操作,請參見設定白名單。重要0.0.0.0/0
表示允許任何IP訪問RDS執行個體,測試完成後請立即修改。使用用戶端串連RDS SQL Server資料庫。具體操作,請參見串連SQL Server執行個體。
執行如下命令,查詢所有串連到資料庫的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'
如下表示已查詢成功:
將在步驟1中添加的0.0.0.0/0或您公司的IP段從白名單中刪除。
查看更詳細的串連參數配置
在查詢到已串連到資料庫的所有IP後,若您需要查看單個串連更詳細的參數配置,請執行如下命令:
SELECT * FROM SYS.DM_EXEC_SESSIONS WHERE SESSION_ID=<之前擷取的SPID>
如下表示已查詢成功: