インターネット経由で ApsaraDB RDS for MySQL または ApsaraDB RDS for MariaDB インスタンスに接続する前に、クライアントのパブリック IP アドレスをインスタンスの IP アドレスホワイトリストに追加する必要があります。このトピックでは、正しいパブリック IP アドレスを特定する方法について説明します。
問題の説明
クライアントの IP アドレスを IP アドレスホワイトリストに追加しましたが、インスタンスに接続できません。
この問題は、追加したパブリック IP アドレスが正しくないか、クライアントのパブリック IP アドレスが変更されたために発生することがよくあります。
このトピックは、ECS 以外のクライアントから ApsaraDB RDS インスタンスに接続する場合にのみ適用されます。ECS インスタンスから接続する場合、パブリック IP アドレスとプライベート IP アドレスは ECS コンソールのインスタンス詳細ページで確認できます。
前提条件
インターネット経由で RDS インスタンスに接続する前に、次のことを確認してください:
-
パブリックエンドポイントの有効化: RDS インスタンスでパブリックエンドポイント (例:
rm-bp1xxxxx.mysql.rds.aliyuncs.com) が有効になっている必要があります。インターネット接続にプライベートエンドポイントは使用できません。パブリックエンドポイントがない場合は、ApsaraDB RDS コンソールの [データベース接続] ページでリクエストできます。 -
ホワイトリストに登録する IP アドレス: IP アドレスホワイトリストには、RDS インスタンスのエンドポイントや IP アドレスではなく、クライアントのパブリック送信元 IP アドレスを含める必要があります。
推奨事項
クライアントのパブリック IP アドレスが動的に変更される場合、本番環境では、接続の切断を防ぐために、内部接続を使用するか、IP アドレスの範囲を IP アドレスホワイトリストに追加することを推奨します。
クライアントのパブリック IP アドレスの特定
-
一時的なホワイトリストエントリの追加
会社のパブリック CIDR ブロックまたは
0.0.0.0/0をインスタンスの IP アドレスホワイトリストに追加します。警告0.0.0.0/0エントリは、どのデバイスからでも RDS インスタンスへのアクセスを許可するため、セキュリティリスクが生じます。このエントリは慎重に使用し、テスト後すぐに削除してください。 -
パブリック IP アドレスの取得 (いずれかの方法を選択)
-
方法 1 (推奨):curl コマンドの使用。クライアントのパブリック IP アドレスを取得するには、
curl ipinfo.io/ipコマンドを実行します。説明問題が解決しない場合は、代わりに
curl ifconfig.meコマンドを実行してください。 -
方法 2:Web ブラウザーの使用。この方法は、Windows のような GUI ベースのオペレーティングシステムに最適です。
Web ブラウザーで、次のいずれかの Web サイトにアクセスします。これらのサイトには、クライアントのパブリック送信元 IP アドレスが表示されます:
表示された IP アドレスを RDS インスタンスの IP アドレスホワイトリストに追加します。
-
方法 3:SQL クエリの使用。これは、データベースサーバーから見た送信元 IP アドレスを特定するための最も信頼性の高い方法です。
次の手順を実行します:
-
IP アドレスホワイトリストを一時的に
0.0.0.0/0に設定し、設定が有効になるまで約 1 分間待ちます。 -
ローカルデバイスから MySQL クライアントを使用して RDS インスタンスに接続します:
mysql -h<endpoint> -u<username> -p<password> -P3306 -
接続後、次のコマンドを実行します:
SHOW FULL PROCESSLIST; -
結果の中から、現在の接続セッション (Info 列に
SHOW FULL PROCESSLISTが表示されている行、または User に対応する行) を見つけます。[Host] 列に、クライアントの実際のパブリック IP アドレスがIP:Portの形式 (例:120.xx.xx.xx:52861) で表示されます。 -
IP アドレスを抽出し、RDS インスタンスの IP アドレスホワイトリストに追加し、
0.0.0.0/0エントリを削除 します。 -
切断してから再接続し、IP アドレスホワイトリストが正しく設定されていることを確認します。
-
-
-
IP アドレスホワイトリストの最終設定
-
一時的な
0.0.0.0/0エントリを削除します。 -
取得した正しいパブリック IP アドレスを追加して確認します。
-
よくある質問
-
接続の失敗がクライアントのパブリック IP アドレスの変更によって引き起こされたかどうかは、どのように判断できますか?
ApsaraDB RDS for MySQL または ApsaraDB RDS for MariaDB インスタンスの IP アドレスホワイトリストに
0.0.0.0/0を追加し、設定が有効になるまで約 1 分間待ちます。これにより、どのデバイスからでもインスタンスにアクセスできるようになります。これでデータベースに接続できるようになった場合、問題は IP アドレスホワイトリストにある可能性が高いです。確認するには、0.0.0.0/0エントリを削除し、現在の IP アドレスと思われるものを追加して、再度テストします。接続に失敗した場合、クライアントのパブリック IP アドレスが追加したものと異なることが確認されます。 -
IP アドレスホワイトリストを設定した後も接続が失敗するのはなぜですか?
ホワイトリストを更新した後、変更が適用されるまでに約 1 分かかることにご注意ください。接続を再試行する前に待機してください。
IP アドレスホワイトリスト以外にも、多くの要因が接続の失敗を引き起こす可能性があります。詳細については、「インスタンスへの接続失敗のトラブルシューティング」をご参照ください。
-
RDS エンドポイントへの ping やポートへの telnet は成功しますが、データベースクライアント (Navicat など) が接続できないのはなぜですか?
-
ping の成功はデータベースの許可を意味しない。ApsaraDB RDS はデフォルトで ping リクエストをブロックしません。ping の成功は、データベースがお客様の IP アドレスを許可したことではなく、ネットワークレベルでの到達可能性を示しているにすぎません。
-
telnet の成功は TCP ポートの接続性を示すだけ。ポート 3306 への接続が成功することは、ネットワークパスとポートが開いていることを確認するだけです。IP アドレスホワイトリストのデータベースレベルでの検証は、別途必要なステップです。
-
根本原因: クライアントの IP アドレスが IP アドレスホワイトリストに含まれていないか、ホワイトリスト内の IP アドレスがクライアントの実際のパブリック送信元 IP アドレスではないためです。
-
解決策:
-
SHOW FULL PROCESSLISTを実行して、データベースが認識している実際の接続 IP アドレスを取得します (上記の「方法 3」を参照)。 -
この IP アドレスを IP アドレスホワイトリストに追加します。
-
データベースクライアント (Navicat など) の接続パラメーター (パブリックエンドポイント、ポート (デフォルトは 3306) 、ユーザー名、パスワードなど) が正しいことを確認します。
-
-
-
ApsaraDB RDS の接続ログまたは
SHOW FULL PROCESSLISTに表示される IP アドレスが、ローカル IP を確認したときに表示されるものと異なるのはなぜですか?理由: ローカルネットワークのトラフィックが企業のゲートウェイ (NAT) を経由する場合、データベースサーバーは、個々のマシンの IP アドレスではなく、ゲートウェイのパブリック IP アドレスを認識します。
解決策: IP アドレスホワイトリストには、常に
SHOW FULL PROCESSLISTコマンドの出力に表示されるHostの IP アドレスを使用してください。ローカルマシンでのクエリから得られた IP アドレスに依存しないでください。
クロスボーダーおよびクロスリージョンアクセス
-
ApsaraDB RDS インスタンスには、パブリックエンドポイントと正しく設定された IP アドレスホワイトリストを使用することで、世界中のどこからでも接続できます。
-
低レイテンシー、高セキュリティの接続、またはリージョン間でのデータ共有には、次のソリューションを使用してください:
-
Cloud Enterprise Network (CEN) を使用して VPC 間に内部ネットワーク接続を確立し、データベースがパブリックインターネットに公開されるのを回避します。
-
クロスリージョンのデータ同期には Data Transmission Service (DTS) を使用してください。
-
-
パブリックインターネットアクセスは、クロスボーダーネットワークの変動の影響を受けます。本番環境では、内部ネットワークソリューションを使用することを推奨します。