このトピックでは、クライアントの IP アドレスが動的に変更される場合に、実際のパブリック IP アドレスを特定する方法について説明します。
シナリオ 1
問題
クライアントのパブリック IP アドレスが動的である場合、ローカル IP 検索ツールが不正確な IP アドレスを報告する可能性があります。この IP アドレスを RDS インスタンスのホワイトリストに追加しても、接続エラーが発生することがあります。RDS インスタンスに接続するには、正確なクライアント IP アドレスを特定する必要があります。
注意事項
本番環境でローカルデバイスのパブリック IP アドレスが変更される場合は、内部ネットワーク接続を使用するか、ホワイトリストに適切な CIDR ブロックを設定することを推奨します。これにより、IP アドレスの変更による切断を防ぐことができます。
クライアント IP の特定
-
RDS インスタンスのホワイトリストに
0.0.0.0/0を追加します。詳細については、「ホワイトリストの設定」をご参照ください。重要0.0.0.0/0エントリは、すべての IP アドレスからのアクセスを許可します。テスト完了後は、このエントリを速やかに削除してください。 -
クライアントを使用して ApsaraDB RDS for SQL Server インスタンスに接続します。詳細については、「ApsaraDB RDS for SQL Server インスタンスへの接続」をご参照ください。
-
次のコマンドを実行して、クライアント IP アドレスを特定します。
SELECT CONNECTIONPROPERTY('PROTOCOL_TYPE') AS PROTOCOL_TYPE, CONNECTIONPROPERTY('CLIENT_NET_ADDRESS') AS CLIENT_NET_ADDRESS結果セット内の
CLIENT_NET_ADDRESSの値が、クライアントの実際の IP アドレスです。 -
ホワイトリストから
0.0.0.0/0エントリを削除し、実際のエグレス IP アドレスを追加します。
シナリオ 2
問題
次の方法を使用して、ApsaraDB RDS for SQL Server インスタンスに接続されているすべての IP アドレスを特定するか、コネクションリークなどのセキュリティ問題のトラブルシューティングを行います。
接続されているすべての IP の特定
-
RDS インスタンスのホワイトリストに
0.0.0.0/0を追加します。詳細については、「ホワイトリストの設定」をご参照ください。重要0.0.0.0/0エントリは、すべての IP アドレスからのアクセスを許可します。テスト完了後は、このエントリを速やかに削除してください。 -
クライアントを使用して ApsaraDB RDS for SQL Server インスタンスに接続します。詳細については、「ApsaraDB RDS for 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' -
ホワイトリストから
0.0.0.0/0エントリを削除します。
詳細な接続パラメータの表示
接続されているすべての IP アドレスをクエリした後、次のコマンドを実行して、特定の接続の詳細なパラメータを表示します。
SELECT * FROM SYS.DM_EXEC_SESSIONS WHERE SESSION_ID=<the previously obtained SPID>
クエリが成功すると、セッションの詳細なパラメータを含む結果セットが返されます。主要な列には、session_id、login_time、host_name、program_name、host_process_id、client_version、client_interface_name、security_id、login_name、nt_domain、nt_user_name、status があります。