こんにちは
Webの開発者だけどインフラも知りたいお年頃のイイオです
やりたいこと
- とあるEC2たちを別AWSアカウントに移し、そっち側からssh接続したい
- このEC2たちは生まれては消えるさだめなので、セキュリティグループのソースにIPアドレスとかいちいち設定できない
- というわけでセキュリティグループのソースに別AWSアカウントのセキュリティグループ指定したい
手順
いいからVPCピアリングだ!
0. 前提
アカウントA
- VPC CIDR 10.0.0.0/16
- サブネット 10.0.10.0/24, 10.0.20.0/24
アカウントB
- VPC CIDR 172.30.0.0/16
- サブネット 172.30.10.0/24, 172.30.20.0/2
VPCのCIDRが被っているとピアリングできないよ
最初てきとうにVPC切ってしまってたいへん後悔したよ
このあたりをちゃんとべんきょうしてからやるべきだったよ
リージョンも同じじゃないといろんな制限をくらうよ
1. アカウントAでVPCピアリングの申請
VPC > ピアリング接続 > ピアリング接続の作成
AWSのアカウントIDはアカウント設定画面からみれる
2. アカウントBでVPCピアリングの許可
VPC > ピアリング接続
3. アカウントBでルートテーブルを指定
VPC > ルートテーブル
送信先は相手のVPC全体にもできるし、もっと小さくサブネットとかIP単位にも絞れる、ゴイス〜
4. アカウントAでルートテーブルを指定
VPC > ルートテーブル
こちらでもルートを追加、これ忘れてて詰まってたことは内緒
5. アカウントAのセキュリティグループの設定
EC2 > セキュリティグループ
向こうのアカウントのセキュリティグループを入力できるようになっている!
アカウントBのサーバーから接続確認だ〜〜〜
ssh ec2-user@ec2-54-xxx-xxx-xxx.ap-northeast-1.compute.amazonaws.com(パブリックDNS)
沈黙
ssh ec2-user@54.xxx.xxx.xxx(パブリックIP)
繋がらないよ〜〜〜〜
はい
セキュリティグループでセキュリティグループを許可する(セキュリティグループのソースにセキュリティグループ指定する)方法は、プライベートネットワーク内でのみ有効…!!!
VPC Aの中でディグる
dig ec2-54-xxx-xxx-xxx.ap-northeast-1.compute.amazonaws.com ; <<>> DiG 9.8.2rc1-RedHat-9.8.2-0.62.rc1.55.amzn1 <<>> ec2-54-xxx-xxx-xxx.ap-northeast-1.compute.amazonaws.com ;; global options: +cmd ;; Got answer: ;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 37867 ;; flags: qr rd ra; QUERY: 1, ANSWER: 1, AUTHORITY: 0, ADDITIONAL: 0 ;; QUESTION SECTION: ;ec2-54-xxx-xxx-xxx.ap-northeast-1.compute.amazonaws.com. IN A ;; ANSWER SECTION: ec2-54-xxx-xxx-xxx.ap-northeast-1.compute.amazonaws.com. 20 IN A 10.0.10.123
VPC Aの外でディグる
dig ec2-54-xxx-xxx-xxx.ap-northeast-1.compute.amazonaws.com ; <<>> DiG 9.10.6 <<>> ec2-54-xxx-xxx-xxx.ap-northeast-1.compute.amazonaws.com ;; global options: +cmd ;; Got answer: ;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 8580 ;; flags: qr rd ra; QUERY: 1, ANSWER: 1, AUTHORITY: 13, ADDITIONAL: 1 ;; OPT PSEUDOSECTION: ; EDNS: version: 0, flags:; udp: 4096 ;; QUESTION SECTION: ;ec2-54-xxx-xxx-xxx.ap-northeast-1.compute.amazonaws.com. IN A ;; ANSWER SECTION: ec2-54-xxx-xxx-xxx.ap-northeast-1.compute.amazonaws.com. 589434 IN A 54.xxx.xxx.xxx
ピアリングしたVPC Bの中でディグる
dig ec2-54-xxx-xxx-xxx.ap-northeast-1.compute.amazonaws.com ; <<>> DiG 9.8.2rc1-RedHat-9.8.2-0.62.rc1.57.amzn1 <<>> ec2-54-xxx-xxx-xxx.ap-northeast-1.compute.amazonaws.com ;; global options: +cmd ;; Got answer: ;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 34546 ;; flags: qr rd ra; QUERY: 1, ANSWER: 1, AUTHORITY: 0, ADDITIONAL: 0 ;; QUESTION SECTION: ;ec2-54-xxx-xxx-xxx.ap-northeast-1.compute.amazonaws.com. IN A ;; ANSWER SECTION: ec2-54-xxx-xxx-xxx.ap-northeast-1.compute.amazonaws.com. 60 IN A 54.xxx.xxx.xxx
今まで完全に同じVPC内でしか使ったことなかったから
接続先にパブリックDNSやパブリックIP指定しても、プライペートIPとして解決されていてたけど
VPCピアリングだとその解決できないから、プライペートIPを直指定しないとダメだったんだね、ハム太郎!へけ!
というわけで
アカウントBのサーバーから再度接続確認だ〜〜〜
ssh ec2-user@10.0.10.123
これでよろし〜〜〜なんだか全てにおいて己の知識不足って感じだ!へけ!