本文介绍用户的公网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>
如下表示已查询成功: