【IPv6】EC2経由でプライベートのAmazon RDSに接続
背景
2024年2月1日以降、Amazon RDSにIPv4アドレスを割り当てていると約500~550円/月かかるようになりました。
[お知らせ] 2024 年 2 月 1 日からのパブリック IPv4 アドレスに対する新しい料金体系
そこでRDSをパブリックアクセス(IPv4アドレス割り当て)せず、EC2を踏み台サーバとしてローカルPCから接続できるようにしました。
参考
設定完了後の構成
ローカルPC(IPv6)→Amazon EC2(IPv6のみ、パブリックIPv4割り当てなし)→Amazon RDS(パブリックアクセスなし)
※EC2とRDSは同一VPC内に存在します。
※後程図にします。
設定手順
1. VPCにIPv6 CIDRを追加します。(以下の記事を参考にしてください)
2. RDSの設定を変更します。
ネットワークタイプは「デュアルスタックモード」を選択し、DBサブネットグループは手順1で設定したVPCを選択し、「続行」を押します。
DBインスタンスの変更が完了すると、パブリックアクセス可能が「なし」に変更します。
3. RDSに関連付けているセキュリティグループのインバウンドルールにEC2のIPv6アドレスを追加します。
※「ポート範囲」にはRDSのポート番号を指定(MySQLのデフォルトなら3306)
以上でAWSの設定は完了です。
接続手順
1. ローカルPCから以下のコマンドを実行します。
※ローカルPCの3336ポートをRDSのポートに転送しています。
> ssh -i (EC2の秘密鍵).pem -L 3336:(RDSのエンドポイント).ap-northeast-1.rds.amazonaws.com:(RDSのポート) (EC2接続ユーザ)@[EC2のIPv6アドレス] -N -f
ポートフォワードされているかを確認するため、以下のコマンドを実行します。
※3336がLISTENINGされていればOK
> netstat -a -n | find "3336"
TCP 127.0.0.1:3336 0.0.0.0:0 LISTENING
TCP [::1]:3336 [::]:0 LISTENING
踏み台となっているEC2では、以下のようにローカル端末から踏み台サーバーにSSH接続していることが分かります。
$ netstat -pan | grep :22
tcp6 0 216 (EC2のIPv6):22 (ローカルPCのIPv6):52733 ESTABLISHED -
tcp6 0 0 (EC2のIPv6):22 (ローカルPCのIPv6):54239 ESTABLISHED -
2. RDSに接続します。(今回はMySQLを例にしています)
> mysql -h 127.0.0.1 -P 3336 -u (RDSの接続ユーザ) -p
接続できなければ、セキュリティグループなどの設定を見直してみてください。
もし参考になりましたら、♡(スキ)をクリックしてもらえると励みになります。
この記事が気に入ったらサポートをしてみませんか?