NATなしの1つのサブネットで実行されているRDSインスタンスと、インターネットゲートウェイが構成されている別のサブネットで実行されているEC2インスタンスがあり、どちらも同じVPCに配置されています。 RDSインスタンスをパブリックにアクセスできないように設定しました。
リモートEC2(2番目のサブネットで実行)で次のコマンドを使用して、RDSインスタンスに接続しています。
mysql -h xxxx.eu-central-1.rds.amazonaws.com -P 3306 -u root -p
RDSの構成時に設定した正しいパスワードを入力しましたが、次のエラーが発生します。
エラー2003(HY000): 'XXX.eu-central-1.rds.amazonaws.com'(110)のMySQLサーバーに接続できません
チェックしましたが、名前解決の問題ではありません。 ec2はエンドポイントを正しい内部IPに変換します。
[〜#〜] vpc [〜#〜]:EC2と同じ
利用可能ゾーン:eu-central-1b
[〜#〜] subnet [〜#〜]:RDSパネルですべてのサブネットを表示できますが、ゾーンbのプライベートサブネットで使用可能なIPが1つ少ないことがわかります
セキュリティグループ:プライベートセキュリティグループ(アウトバウンドルールなし、およびmysqlポートとパブリックセキュリティグループをソースとするインバウンドの単一ルール内)
パブリックアクセス可能:いいえ
マルチAZ:いいえ
[〜#〜] vpc [〜#〜]:RDSと同じ
利用可能ゾーン:eu-central-1b
[〜#〜] subnet [〜#〜]:ゾーンbのパブリックサブネット
セキュリティグループ:パブリックセキュリティグループ(任意のソースからのすべてのポートを受信規則として、任意のソースからのssh、httpおよびhttpsポートを送信規則として)
httpとsshを使用してEC2インスタンスにアクセスできます。期待どおりに動作します。
[〜#〜] vpc [〜#〜]:RDSとEC2の両方が同じものを使用します
[〜#〜] subnets [〜#〜]:各AZに対して1つのパブリックと1つのプライベート、合計4つ
[〜#〜] dhcp [〜#〜]:デフォルトのもの(domain-name = eu-central-1.compute.internal
domain-name-servers = AmazonProvidedDNS
)
ルートテーブル:パブリックサブネットの場合はlocal
(自動)に、インターネットゲートウェイにルーティングし、プライベートの場合はlocal
のみ(自動)にルーティングします。
ACLs:public:allow all
インバウンドとアウトバウンドの両方。プライベート:allow all
インバウンドのみ。また、インバウンドとアウトバウンドの両方のACLに、IDが*
の行とdeny all
の行があります。 。
何が悪いのですか?何か不足していますか?
セキュリティグループを確認してください。これが原因の可能性があります。 DNS名を使用するVPC内のホストは常にリモートリソースのプライベートIPを使用するため、NAT/IGの部分は重要ではありません。
VPC/EC2セキュリティグループとNACLが適切なアクセスを許可することを確認する必要があります。
私は EC2/RDSセキュリティグループのセットアップをカバーするチュートリアル があると便利です。
SOに関するこの回答 でも確認する必要があります。