見出し画像

【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接続ユーザ)@[EC2IPv6アドレス] -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

接続できなければ、セキュリティグループなどの設定を見直してみてください。


もし参考になりましたら、♡(スキ)をクリックしてもらえると励みになります。


この記事が気に入ったらサポートをしてみませんか?