VPCピアリングのおさらい
VPCピアリングとは 異なるVPCを接続する
ことができます。
CIDRブロックの重複や異なるリージョン間でのVPCピアリングはIPv6非対応です。
構成図
今回構築する構成図はこちらになります。
10.0.0.0/16 と 192.168.0.0/24 の構成図があります。
こちらをVPCピアリング設定して内部のインスタンス同士でping接続出来るか確認してみます。
構築しながら書いてるので、順序がバラバラでわかりにくくてすみません
構築
VPC・subnetの構築 : 10.0.0.0/16
- VPCの作成します
VPC > VPCでこの画面になります
- 10.0.0系のVPCの構築
名前とIPv4 CIDRのブロックだけ変更しています
- VPCが構築できました
- subnet構築します
VPC > サブネットから構築します
- subnetの設定を行います
VPC IDは、↑で作ったVPC IDを打ち込みます。
サブネット名はわかりやすいように記載。
またIPv4 CIDRブロックはVPCの範囲フルフルに使っています
- subnet構築できました
VPC・subnetの構築 : 192.168.0.0/24
- VPCの作成します
こちらも10.0.0系と同じように構築
- 192.168系のVPCの構築
- VPCが構築できました
- subnet構築します
- subnetの設定を行います
こちらも↑で作った、192.168系のVPC IDを打ち込みます。
IPv4 CIDRも同じようにフルフルでVPCの範囲と同じように使います。
- subnet構築できました
ここで、10.0.0.0/16 と 192.168.0.0/24 のVPCとサブネットは完成しました。
EC2インスタンスの構築 : 10.0.0.0/16
- EC2インスタンスの構築を行います
EC2 > インスタンス でEC2インスタンスの構築をしていきます。
- AMIの設定
確認用のインスタンスなので適当なのを選びます。
- インスタンスタイプの設定
- インスタンスの詳細設定
以下をここでは変更します
ネットワーク : 10.0.0系VPCを選択
サブネット : 10.0.0系subnet を選択
自動割り当てパブリックIP : 有効
- ストレージの設定
終了したときにストレージも一緒に消えるように 終了時に削除
にチェックを入れます。
- セキュリティグループの設定
セキュリティグループは新しいのを作成します。
中身は一旦自分のPCのIPアドレスを開けておきます。
※後で追加します
- 最終確認
- キーペアの作成
ここでは今回用に qiita_vpc_test
というキーペアを作成します。
192.168.0.0/24 のサーバにも同じキーペアを選択するので、キーペアは無くさないようにしてください
- 構築完了
EC2インスタンスの構築 : 192.168.0.0/24
- EC2インスタンスの構築を行います
10.0.0.0/16 のサーバと同じように構築していきます
- AMIの設定
- インスタンスタイプの設定
- インスタンスの詳細設定
こちらも以下を変更します
ネットワーク : 192.168系VPC
サブネット : 192.168系subnet
自動割り当てパブリックIP : 有効
- ストレージの設定
同じように 終了時に削除
にチェックを入れます。
- セキュリティグループの設定
10.0.0.0/16 のサーバと同じようにセキュリティグループを作ります。
同じセキュリティグループ名ですが、VPCが違うので中身はかぶりません。
今回も自分のPCのIPアドレスだけ設定しておきます。
- 最終確認
- キーペアの作成
先ほど作成したキーペアをこちらでも使いますので、既存のキーペアを選択します。
管理がややこしいのでこの対処にしていますが、実際は別のキーペアの方が望ましいです。
- 構築完了
VPCピアリング設定
- VPCピアリングの作成
VPCが構築できたので、VPCピアリングの設定を行います。
VPC > ピアリング接続 でこの画面に来れます。
ここからピアリング接続の作成を行います。
- ピアリング接続の設定
以下を変更しました
ピアリング接続ネームタグ : 10.0.0 to 192.168 (わかりやすければ何でもOK)
以下は接続する自分と相手側の設定を行います。
今回はどちらも自分のアカウント内なのでどちらでも良いですが、
別アカウントともピアリング接続は出来るので、その際は自分のローカルVPCを設定してください。
ピアリング接続するローカルVPC
VPC : 10.0.0系VPC の VPC IDを選択
ピアリング接続するもうひとつのVPCを選択
アカウント : 自分のアカウント
リージョン : このリージョン
VPC : 192.168系VPC の VPC IDを選択
- ピアリング接続の承認
10.0.0系でピアリング接続の設定を行ったら、192.168系でリクエストの承認を行います。
同じ画面なのでややこしいかもしれませんが、
別アカウントなら勝手にVPCピアリング接続をされないために、相手側の承認が必要になります。
- 設定の完了
相手の承認がされたので、ステータスがアクティブになりました
ルーティングの設定 : 10.0.0.0/16
- ルートテーブルの編集
ルーティングの設定を行います。
- ルートテーブルに192.168.0.0のときの設定を追加
10.0.0系 → 192.168.0.0/24 の際の設定です。
送信先 : 192.168.0.0/24
ターゲット : ピアリング接続(10.0.0 to 192.168) のIDになります。
※こちらは192.168.0.0/24の際も同じIDを使用します。
- 追加されていることを確認
ルーティングの設定 : 192.168.0.0/24
- ルートテーブルの編集
先ほどと同じように編集を行います。
- ルートテーブルに10.0.0.0のときの設定を追加
192.168.0.0/24 → 10.0.0.0/26 の際の設定です。
送信先 : 10.0.0.0/26
ターゲット : ピアリング接続(10.0.0 to 192.168) のIDになります。
※こちらは10.0.0.0/26の際も同じIDを使用しました
- 追加されていることを確認
セキュリティグループの変更 : 10.0.0.0/16
- セキュリティグループの変更
次にセキュリティグループの変更を行います。
何をするかというと、EC2インスタンスは今自分のPCからしか接続できないので
192.168系からのアクセスを許可しないと接続できないので、その設定を行います。
- インバウンドルールの変更
今回はガバガバですが、192.168.0.0/24からすべてのトラフィックを許可します。
- 変更完了
許可できました。
セキュリティグループの変更 : 192.168.0.0/24
- セキュリティグループの変更
こちらも10.0.0系からのアクセスを受けれないので、その設定を行います。
- インバウンドルールの変更
同じようにガバガバですが、10.0.0.0/16からのすべてのトラフィックを許可します。
- 変更完了
インターネットゲートウェイを作成・アタッチ・ルートテーブルに追加 : 10.0.0.0/16
ここでEC2インスタンスに接続できなかったので、
インターネットゲートウェイを作ってVPCにアタッチ、
またルートテーブルにデフォルトゲートウェイの宛先をインターネットゲートウェイに設定します。
- インターネットゲートウェイの作成
VPC > インターネットゲートウェイ でインターネットゲートウェイを作成します
- インターネットゲートウェイの設定
名前をわかりやすいように、10.0.0系のインターネットゲートウェイとします
- インターネットゲートウェイの構築完了
- VPCにアタッチ
先程作成したインターネットゲートウェイを10.0.0系VPCにアタッチします
こちらで指定するVPCは 10.0.0系VPCの VPC ID を指定します
- VPCにアタッチ完了
状態がアタッチになったので、アタッチできました。
- ルートテーブルの変更
アタッチしただけでは使えないので、ルートテーブルでデフォルトゲートウェイはインターネットゲートウェイを向くようにします。
- デフォルトゲートウェイにインターネットゲートウェイを追加
以下を追加します
送信先 : 0.0.0.0/0
ターゲット : 10.0.0系のインターネットゲートウェイ の インターネットゲートウェイIDを指定
- 追加されたことを確認
こちらで、10.0.0.0/16でもなく・192.168.0.0/24 でもないときはインターネットゲートウェイを向くようになりました。
インターネットゲートウェイを作成・アタッチ・ルートテーブルに追加 : 192.168.0.0/24
- インターネットゲートウェイの作成
↑と同じように、インターネットゲートウェイを作ってVPCにアタッチしていきます。
- インターネットゲートウェイの設定
こちらも同じように 192.168系のインターネットゲートウェイとしました
- インターネットゲートウェイの構築完了
- VPCにアタッチ
192.168系VPCにアタッチします
指定するのは 192.168系VPCの VPC ID をここで指定します
- VPCにアタッチ完了
こちらもアタッチできました。
- ルートテーブルの変更
まだ使えないので、ルートテーブルに追加していきます。
- デフォルトゲートウェイにインターネットゲートウェイを追加
送信先 : 0.0.0.0/0
ターゲット : 192.168系のインターネットゲートウェイ の インターネットゲートウェイIDを指定
こちらを追加することで、 192.168.0.0/24でもなく・10.0.0.0/16でもないときはインターネットゲートウェイを向くようになりました
- 追加されたことを確認
接続試してみる : 10.0.0.0/16
- ログイン
10.0.0系のEC2インスタンスにログインします
ssh -i .ssh/qiita_vpc_test centos@[グローバルIP]
- IPアドレスの確認
プライベートIPは 10.0.46.97
でした
[root@ip-10-0-46-97 ~]# ip a
1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN group default qlen 1000
link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
inet 127.0.0.1/8 scope host lo
valid_lft forever preferred_lft forever
inet6 ::1/128 scope host
valid_lft forever preferred_lft forever
2: eth0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 9001 qdisc pfifo_fast state UP group default qlen 1000
link/ether 06:62:35:d9:24:48 brd ff:ff:ff:ff:ff:ff
inet 10.0.46.97/16 brd 10.0.255.255 scope global dynamic eth0
valid_lft 3183sec preferred_lft 3183sec
inet6 fe80::462:35ff:fed9:2448/64 scope link
valid_lft forever preferred_lft forever
10.0.0系のサーバであることを確認できました
- 192.168系のサーバにpingを飛ばしてみる
192.168系のEC2インスタンスのプライベートIPアドレスは 192.168.0.254
[root@ip-10-0-46-97 ~]# ping 192.168.0.254
PING 192.168.0.254 (192.168.0.254) 56(84) bytes of data.
64 bytes from 192.168.0.254: icmp_seq=1 ttl=64 time=1.90 ms
64 bytes from 192.168.0.254: icmp_seq=2 ttl=64 time=1.93 ms
64 bytes from 192.168.0.254: icmp_seq=3 ttl=64 time=1.94 ms
^C
--- 192.168.0.254 ping statistics ---
3 packets transmitted, 3 received, 0% packet loss, time 2003ms
rtt min/avg/max/mdev = 1.902/1.926/1.940/0.053 ms
接続できました!
接続試してみる : 192.168.0.0/24
- ログイン
ssh -i .ssh/qiita_vpc_test centos@[グローバルIP]
- IPアドレスの確認
こちらも192.168.0.254 であることを確認できました
[root@ip-192-168-0-254 ~]# ip a
1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN group default qlen 1000
link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
inet 127.0.0.1/8 scope host lo
valid_lft forever preferred_lft forever
inet6 ::1/128 scope host
valid_lft forever preferred_lft forever
2: eth0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 9001 qdisc pfifo_fast state UP group default qlen 1000
link/ether 0a:f3:76:a2:ed:38 brd ff:ff:ff:ff:ff:ff
inet 192.168.0.254/24 brd 192.168.0.255 scope global dynamic eth0
valid_lft 3067sec preferred_lft 3067sec
inet6 fe80::8f3:76ff:fea2:ed38/64 scope link
valid_lft forever preferred_lft forever
192.168系のサーバであることを確認できました
- 10.0.0系のサーバにpingを飛ばしてみる
10.0系のEC2インスタンスのプライベートIPアドレスは 10.0.46.97
[root@ip-192-168-0-254 ~]# ping 10.0.46.97
PING 10.0.46.97 (10.0.46.97) 56(84) bytes of data.
64 bytes from 10.0.46.97: icmp_seq=1 ttl=64 time=2.15 ms
64 bytes from 10.0.46.97: icmp_seq=2 ttl=64 time=1.98 ms
64 bytes from 10.0.46.97: icmp_seq=3 ttl=64 time=1.96 ms
^C
--- 10.0.46.97 ping statistics ---
3 packets transmitted, 3 received, 0% packet loss, time 2002ms
rtt min/avg/max/mdev = 1.966/2.034/2.153/0.084 ms
接続できました!
結局の構成図
EC2の名前とか変更したものを修正しています。
IPアドレスは当初書いてあったものとは変更しています。
元々のイメージとしては良かったのですが、VPC諸々の設定が足りていなかった印象です。
この手順で良くないところ
- 10.0.0系と記載していますが/16 なので、10.0系です。
- EC2インスタンスはピアリング接続している相手側のサーバからのアクセスは許可されているが、自分のVPC内のサーバ(2つ以上ある場合は)からはアクセスは許可されていない
- セキュリティグループガバガバ。pingだけならICMPでよかったかな
- 最初に構成図にIPアドレス書いてあったけど、プライベートIPをスタティック設定ではないので勝手に割り振られる
勉強後イメージ
実際のVPCピアリングの設定としては、
結構わかりやすいしすぐ出来る。
ただ、今回はどっちかというとただ単にVPC周りの設定で躓いたので変な順序になっちゃった。
↑にも書きましたが、良くないところを書いてて見つけましたので記載してます。
今回はピアリング接続を確認するためだけなので適当に作ってしまいました....
力尽きたので、今回はここまでにします。