2
3

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 3 years have passed since last update.

VPCピアリングを設定してみた

Posted at

VPCピアリングのおさらい

VPCピアリングとは 異なるVPCを接続する ことができます。
CIDRブロックの重複や異なるリージョン間でのVPCピアリングはIPv6非対応です。

構成図

今回構築する構成図はこちらになります。

10.0.0.0/16 と 192.168.0.0/24 の構成図があります。
こちらをVPCピアリング設定して内部のインスタンス同士でping接続出来るか確認してみます。

2021-01-20 VPCピアリング.png

構築しながら書いてるので、順序がバラバラでわかりにくくてすみません

構築

VPC・subnetの構築 : 10.0.0.0/16

  • VPCの作成します

VPC > VPCでこの画面になります

2021-01-20 VPC構築お使いの VPC _ VPC Management Console - Google Chrome.png

  • 10.0.0系のVPCの構築

名前とIPv4 CIDRのブロックだけ変更しています

2021-01-20  10系VPC構築VPC Management Console - Google Chrome 2021-01-20.png

  • VPCが構築できました

2021-01-20 10系VPCOKお使いの VPC _ VPC Management Console - Google Chrome.png

  • subnet構築します

VPC > サブネットから構築します

2021-01-20  subnet作成1サブネット _ VPC Management Console - Google Chrome 202.png

  • subnetの設定を行います

VPC IDは、↑で作ったVPC IDを打ち込みます。
サブネット名はわかりやすいように記載。
またIPv4 CIDRブロックはVPCの範囲フルフルに使っています

2VPC Management Console - Google Chrome 2021-01-20.png

  • subnet構築できました

2サブネット _ VPC Management Console - Google Chrome 202.png

VPC・subnetの構築 : 192.168.0.0/24

  • VPCの作成します

こちらも10.0.0系と同じように構築

3お使いの VPC _ VPC Management Console - Google Chrome.png

  • 192.168系のVPCの構築

4VPC Management Console - Google Chrome 2021-01-20.png

  • VPCが構築できました

4お使いの VPC _ VPC Management Console - Google Chrome.png

  • subnet構築します

3VPC Management Console - Google Chrome 2021-01-20.png

  • subnetの設定を行います

こちらも↑で作った、192.168系のVPC IDを打ち込みます。
IPv4 CIDRも同じようにフルフルでVPCの範囲と同じように使います。

5VPC Management Console - Google Chrome 2021-01-20.png

  • subnet構築できました

6VPC Management Console - Google Chrome 2021-01-20.png

ここで、10.0.0.0/16 と 192.168.0.0/24 のVPCとサブネットは完成しました。

EC2インスタンスの構築 : 10.0.0.0/16

  • EC2インスタンスの構築を行います

EC2 > インスタンス でEC2インスタンスの構築をしていきます。

1インスタンス _ EC2 Management Console - Google Chrome 20.png

  • AMIの設定

確認用のインスタンスなので適当なのを選びます。

2インスタンスウィザードを起動 _ EC2 Management Console - Google C.png

  • インスタンスタイプの設定

3インスタンスウィザードを起動 _ EC2 Management Console - Google C.png

  • インスタンスの詳細設定

以下をここでは変更します

ネットワーク : 10.0.0系VPCを選択
サブネット : 10.0.0系subnet を選択
自動割り当てパブリックIP : 有効

4インスタンスウィザードを起動 _ EC2 Management Console - Google C.png

  • ストレージの設定

終了したときにストレージも一緒に消えるように 終了時に削除 にチェックを入れます。

5インスタンスウィザードを起動 _ EC2 Management Console - Google C.png

  • セキュリティグループの設定

セキュリティグループは新しいのを作成します。
中身は一旦自分のPCのIPアドレスを開けておきます。
※後で追加します

6インスタンスウィザードを起動 _ EC2 Management Console - Google C.png

  • 最終確認

7インスタンスウィザードを起動 _ EC2 Management Console - Google C.png

  • キーペアの作成

ここでは今回用に qiita_vpc_test というキーペアを作成します。
192.168.0.0/24 のサーバにも同じキーペアを選択するので、キーペアは無くさないようにしてください

8インスタンスウィザードを起動 _ EC2 Management Console - Google C.png

  • 構築完了

9インスタンス _ EC2 Management Console - Google Chrome 20.png

EC2インスタンスの構築 : 192.168.0.0/24

  • EC2インスタンスの構築を行います

10.0.0.0/16 のサーバと同じように構築していきます

10インスタンス _ EC2 Management Console - Google Chrome 20.png

  • AMIの設定

11インスタンスウィザードを起動 _ EC2 Management Console - Google C.png

  • インスタンスタイプの設定

12インスタンスウィザードを起動 _ EC2 Management Console - Google C.png

  • インスタンスの詳細設定

こちらも以下を変更します

ネットワーク : 192.168系VPC
サブネット : 192.168系subnet
自動割り当てパブリックIP : 有効

13インスタンスウィザードを起動 _ EC2 Management Console - Google C.png

  • ストレージの設定

同じように 終了時に削除 にチェックを入れます。

14インスタンスウィザードを起動 _ EC2 Management Console - Google C.png

  • セキュリティグループの設定

10.0.0.0/16 のサーバと同じようにセキュリティグループを作ります。
同じセキュリティグループ名ですが、VPCが違うので中身はかぶりません。
今回も自分のPCのIPアドレスだけ設定しておきます。

15インスタンスウィザードを起動 _ EC2 Management Console - Google C.png

  • 最終確認

16インスタンスウィザードを起動 _ EC2 Management Console - Google C.png

  • キーペアの作成

先ほど作成したキーペアをこちらでも使いますので、既存のキーペアを選択します。
管理がややこしいのでこの対処にしていますが、実際は別のキーペアの方が望ましいです。

17インスタンスウィザードを起動 _ EC2 Management Console - Google C.png

  • 構築完了

18インスタンス _ EC2 Management Console - Google Chrome 20.png

VPCピアリング設定

  • VPCピアリングの作成

VPCが構築できたので、VPCピアリングの設定を行います。
VPC > ピアリング接続 でこの画面に来れます。
ここからピアリング接続の作成を行います。

1ピアリング接続 _ VPC Management Console - Google Chrome 2.png

  • ピアリング接続の設定

以下を変更しました

ピアリング接続ネームタグ : 10.0.0 to 192.168 (わかりやすければ何でもOK)

以下は接続する自分と相手側の設定を行います。
今回はどちらも自分のアカウント内なのでどちらでも良いですが、
別アカウントともピアリング接続は出来るので、その際は自分のローカルVPCを設定してください。

ピアリング接続するローカルVPC
    VPC : 10.0.0系VPC の VPC IDを選択

ピアリング接続するもうひとつのVPCを選択
    アカウント : 自分のアカウント
    リージョン : このリージョン
    VPC : 192.168系VPC の VPC IDを選択

2ピアリング接続の作成 _ VPC Management Console - Google Chrom.png

  • ピアリング接続の承認

10.0.0系でピアリング接続の設定を行ったら、192.168系でリクエストの承認を行います。
同じ画面なのでややこしいかもしれませんが、
別アカウントなら勝手にVPCピアリング接続をされないために、相手側の承認が必要になります。

4ピアリング接続 _ VPC Management Console - Google Chrome 2.png

5ピアリング接続 _ VPC Management Console - Google Chrome 2.png

  • 設定の完了

相手の承認がされたので、ステータスがアクティブになりました

6ピアリング接続 _ VPC Management Console - Google Chrome 2.png

ルーティングの設定 : 10.0.0.0/16

  • ルートテーブルの編集

ルーティングの設定を行います。

1ルートテーブル _ VPC Management Console - Google Chrome 2.png

  • ルートテーブルに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を使用します。

2ルートの編集 _ VPC Management Console - Google Chrome 20.png

  • 追加されていることを確認

3ルートテーブル _ VPC Management Console - Google Chrome 2.png

ルーティングの設定 : 192.168.0.0/24

  • ルートテーブルの編集

先ほどと同じように編集を行います。

4ルートテーブル _ VPC Management Console - Google Chrome 2.png

  • ルートテーブルに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を使用しました

5ルートの編集 _ VPC Management Console - Google Chrome 20.png

  • 追加されていることを確認

6ルートテーブル _ VPC Management Console - Google Chrome 2.png

セキュリティグループの変更 : 10.0.0.0/16

  • セキュリティグループの変更

次にセキュリティグループの変更を行います。
何をするかというと、EC2インスタンスは今自分のPCからしか接続できないので
192.168系からのアクセスを許可しないと接続できないので、その設定を行います。

1セキュリティグループEC2 Management Console - Google Chrome 2021-01-20.png

  • インバウンドルールの変更

今回はガバガバですが、192.168.0.0/24からすべてのトラフィックを許可します。

2セキュリティグループEC2 Management Console - Google Chrome 2021-01-20.png

  • 変更完了

許可できました。

3セキュリティグループの変更EC2 Management Console - Google Chrome 2021-01-20.png

セキュリティグループの変更 : 192.168.0.0/24

  • セキュリティグループの変更

こちらも10.0.0系からのアクセスを受けれないので、その設定を行います。

4セキュリティグループEC2 Management Console - Google Chrome 2021-01-20.png

  • インバウンドルールの変更

同じようにガバガバですが、10.0.0.0/16からのすべてのトラフィックを許可します。

5セキュリティグループEC2 Management Console - Google Chrome 2021-01-20.png

  • 変更完了

6セキュリティグループEC2 Management Console - Google Chrome 2021-01-20.png

インターネットゲートウェイを作成・アタッチ・ルートテーブルに追加 : 10.0.0.0/16

ここでEC2インスタンスに接続できなかったので、
インターネットゲートウェイを作ってVPCにアタッチ、
またルートテーブルにデフォルトゲートウェイの宛先をインターネットゲートウェイに設定します。

  • インターネットゲートウェイの作成

VPC > インターネットゲートウェイ でインターネットゲートウェイを作成します

1VPC Management Console - Google Chrome 2021-01-20.png

  • インターネットゲートウェイの設定

名前をわかりやすいように、10.0.0系のインターネットゲートウェイとします

2インターネットゲートウェイの作成 _ VPC Management Console - Google.png

  • インターネットゲートウェイの構築完了

3インターネットゲートウェイ _ VPC Management Console - Google Ch.png

  • VPCにアタッチ

先程作成したインターネットゲートウェイを10.0.0系VPCにアタッチします

4インターネットゲートウェイ _ VPC Management Console - Google Ch.png

こちらで指定するVPCは 10.0.0系VPCの VPC ID を指定します

5インターネットゲートウェイのアタッチ _ VPC Management Console - Goog.png

  • VPCにアタッチ完了

状態がアタッチになったので、アタッチできました。

6インターネットゲートウェイ _ VPC Management Console - Google Ch.png

  • ルートテーブルの変更

アタッチしただけでは使えないので、ルートテーブルでデフォルトゲートウェイはインターネットゲートウェイを向くようにします。

7ルートテーブル _ VPC Management Console - Google Chrome 2.png

  • デフォルトゲートウェイにインターネットゲートウェイを追加

以下を追加します

送信先 : 0.0.0.0/0
ターゲット : 10.0.0系のインターネットゲートウェイ の インターネットゲートウェイIDを指定

8ルートの編集 _ VPC Management Console - Google Chrome 20.png

  • 追加されたことを確認

こちらで、10.0.0.0/16でもなく・192.168.0.0/24 でもないときはインターネットゲートウェイを向くようになりました。

9ルートテーブル _ VPC Management Console - Google Chrome 2.png

インターネットゲートウェイを作成・アタッチ・ルートテーブルに追加 : 192.168.0.0/24

  • インターネットゲートウェイの作成

↑と同じように、インターネットゲートウェイを作ってVPCにアタッチしていきます。

10ルートテーブル _ VPC Management Console - Google Chrome 2.png

  • インターネットゲートウェイの設定

こちらも同じように 192.168系のインターネットゲートウェイとしました

11インターネットゲートウェイの作成 _ VPC Management Console - Google.png

  • インターネットゲートウェイの構築完了

12インターネットゲートウェイ _ VPC Management Console - Google Ch.png

  • VPCにアタッチ

192.168系VPCにアタッチします

13インターネットゲートウェイ _ VPC Management Console - Google Ch.png

指定するのは 192.168系VPCの VPC ID をここで指定します

14インターネットゲートウェイのアタッチ _ VPC Management Console - Goog.png

  • VPCにアタッチ完了

こちらもアタッチできました。

15インターネットゲートウェイ _ VPC Management Console - Google Ch.png

  • ルートテーブルの変更

まだ使えないので、ルートテーブルに追加していきます。

16ルートテーブル _ VPC Management Console - Google Chrome 2.png

  • デフォルトゲートウェイにインターネットゲートウェイを追加
送信先 : 0.0.0.0/0
ターゲット : 192.168系のインターネットゲートウェイ の インターネットゲートウェイIDを指定

こちらを追加することで、 192.168.0.0/24でもなく・10.0.0.0/16でもないときはインターネットゲートウェイを向くようになりました

17ルートの編集 _ VPC Management Console - Google Chrome 20.png

  • 追加されたことを確認

18ルートテーブル _ VPC Management Console - Google Chrome 2.png

接続試してみる : 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諸々の設定が足りていなかった印象です。

2021-01-20 結局の構成図 VPCピアリング構築してみた - diagrams.net - Google.png

この手順で良くないところ

  • 10.0.0系と記載していますが/16 なので、10.0系です。
  • EC2インスタンスはピアリング接続している相手側のサーバからのアクセスは許可されているが、自分のVPC内のサーバ(2つ以上ある場合は)からはアクセスは許可されていない
  • セキュリティグループガバガバ。pingだけならICMPでよかったかな
  • 最初に構成図にIPアドレス書いてあったけど、プライベートIPをスタティック設定ではないので勝手に割り振られる

勉強後イメージ

実際のVPCピアリングの設定としては、
結構わかりやすいしすぐ出来る。
ただ、今回はどっちかというとただ単にVPC周りの設定で躓いたので変な順序になっちゃった。
↑にも書きましたが、良くないところを書いてて見つけましたので記載してます。
今回はピアリング接続を確認するためだけなので適当に作ってしまいました....
力尽きたので、今回はここまでにします。

参考

2
3
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
2
3

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?