はじめに
RDSをそれぞれ違うVPC内にたてて、ec2インスタンスから接続する実験をしてみました。
構成は下の図のようになってます。
試したことは次の2つです。
- step serverからrds-b-0に接続しようしたらどうなるか
- step serverからrds-b(rds-aと同じプライベートIP)に接続しようとしたらどうなるのか
rds詳細
rds-a
host: rds-a.c93yeblz8r51.us-west-2.rds.amazonaws.com
プライベートIP: 10.0.0.9
db名: db_a
user名: aaa
security group: step serverからの接続のみ許可
rds-b-0
host: rds-b-0.c93yeblz8r51.us-west-2.rds.amazonaws.com
プライベートIP: 10.0.0.24
db名: db_b
user名: bbb
security group: どこからも許可しない
rds-b
host: rds-b.c93yeblz8r51.us-west-2.rds.amazonaws.com
プライベートIP: 10.0.0.9
db名: db_b
user名: bbb
security group: どこからも許可しない
step serverからrds-b-0に接続しようしたらどうなるか
まずrds-aとrds-b-0のプライベートIPを確認します。
2つのIPは違います。
次にrds-aに接続できることを確認します。
もちろん接続できます。
次にrds-b-0に接続してみます。
もちろん繋がりません。
ここで、user名とpasswordをrds-aの値で接続してみようと思います。
こちらも繋がりません。
step serverからrds-b(rds-aと同じプライベートIP)に接続しようとしたらどうなるのか
まずrds-aとrds-bのプライベートIPが同じことを確認します。
どちらもIPが10.0.0.9になっていることがわかると思います。
この状態で、まずrds-aに接続してみます。
当たり前ですが、繋がります。
次にrds-bに接続してみます。
こちらは接続できません。
ここで、user名とpasswordをrds-aの値で接続してみようと思います。
するとhostにrds-bを指定しているにも関わらずrds-aに繋がってしまっていることがわかります。
これは、rds-bの名前解決したときに割り出される10.0.0.9が、VPC内のrds-aのプライベートIPになっているため、rds-bのホストで接続しに行ってるにも関わらずrds-aに接続できてしまっているようです。
補足
今回サブネットの範囲を最小限にして、プライベートIPができるだけかぶるようにしました。
今回はたまたま2回目で同じになったので良かったです。。
かかったお金$0.5くらい