同じCIDRの複数のVPCとピアリングして、片方の1ホストに静的ルーティングを設定する

もくじ

前書き

状況

1つのVPCが2つのVPCとピアリング接続をします。このとき、ピアリング先のVPCのCIDRが同じネットワーク範囲とします。

片方のピアリング先VPCには、ひとつだけ通信したいホストがあるとします。

このような状況を想定して、VPCピアリングの設定からルーティングまでを行ってみたいと思います。

図解

今回やることを図にすると以下のようになります。

使用するケース

既存のピアリング接続が存在するVPCに追加(例えば別のお客様やグループ会社)のVPCピアリングを追加するとき、それらの接続先VPCのネットワーク範囲(CIDR)が重なる場合に使用できます。

ピアリング接続するVPC間のCIDRは重複してはなりません。

プレフィックス最長一致が適用されるので、最も具体的なルートにルーティングできます。

今回の場合、172.16.2.0/24の中で「172.16.2.100」のみ異なるVPCへ送信します。このとき、ルーティングでは「172.16.2.100/32」を宛先とします。プレフィックスが最長一致となるので、送信したいVPCへ送信できます。

コンポーネント

使用するコンポーネントと設定値を記載します。

VPC・サブネット

VPC名CIDRサブネット備考
vpc-0010.0.0.0/1610.0.2.0/24中央VPC
vpc-01172.16.0.0/16172.16.2.0/24接続先VPC①
vpc-02172.16.0.0/16172.16.2.0/24接続先VPC②

EC2

名前IPアドレス所属VPC備考
Linux010.0.2.10vpc-00
Linux1-2172.16.2.50vpc-01セキュリティグループで、10.0.0.0/16からのICMPを許可。
Linux1-1172.16.2.150vpc-01セキュリティグループで、10.0.0.0/16からのICMPを許可。
Linux2172.16.2.100vpc-02セキュリティグループで、10.0.0.0/16からのICMPを許可。

ルートテーブル

VPC送信先ターゲット
vpc-0010.0.0.0/16local
vpc-00172.16.2.0/24vpc-01とのピアリングID
vpc-00172.16.2.100/32vpc-02とのピアリングID
vpc-01172.16.0.0/16local
vpc-0110.0.2.0/24vpc-00とのピアリングID
vpc-02172.16.0.0/16local
vpc-0210.0.2.0/24vpc-00とのピアリングID

やってみる

VPCピアリングの設定

vpc-00が配置されているAWSアカウント(中央VPC)にログインして、VPCダッシュボードから「ピアリング接続」をクリックして、「ピアリング接続を作成」をクリックします。

以下のように入力して、「ピアリング接続の作成」をクリック。

  • 名前:VPCピアリングにつける名前(任意)
  • ピアリング接続するローカルVPCを選択:接続元のVPCを選択(ここではvpc-00に存在する「vpc-00」を選ぶ)
  • アカウント:接続先VPCが「自分のアカウント」か「別のアカウント」か選択
  • アカウントID:接続先VPCが所属するAWSアカウントの番号を入力
  • リージョン:接続先VPCが所属するAWSリージョン
  • VPC ID(アクセプタ):接続先VPCのIDを入力(VPCダッシュボードで確認できる)

「”接続先VPCのID”の所有者は、ピアリング接続を承諾する必要があります。」と表示されますので、接続先VPCのAWSアカウントにログインします。

接続先VPCのVPCダッシュボードから「ピアリング接続」の画面に移動すると、「承諾の保留中」のピアリング接続を確認することができます。選択して、「リクエストを承諾」をクリックします。

最終的な内容を確認して、「リクエストを承諾」をクリックします。

ピアリング接続のステータスが「アクティブ」になれば完了です。

vpc-00とvpc-01のピアリング接続が完了しました。vpc-00とvpc-02のピアリング接続も同じ手順で作成します。(手順割愛)

ルートテーブルの設定

vpc-00

新規でルートテーブルを作成しました。デフォルトの状態だとlocalターゲットのみのルーティングが存在します。ここに新規のルーティングを追加します。

vpc-01に存在するLinux1-1とLinux1-2と接続できるようにするためのルーティングを追加します。
vpc-02に存在するLinux2インスタンスと接続できるようにするためのルーティングを追加します。
※vpc-02はLinux2インスタンスのみと接続できればよいので、「172.16.2.100/32」とします。(172.16.2.100以外はvpc-01と通信する)

vpc-01

vpc-01からvpc-00へ戻るためのルーティングを設定します。

vpc-01が所属するAWSアカウント上でルートテーブルを作成し、10.0.0.0/24への通信はvpc-00とのピアリング接続IDに送信するように指定します。(ルートテーブルとサブネットの関連付けを忘れずに)

vpc-02

vpc-02が所属するAWSアカウントでも同じ作業を行い、10.0.0.0/24へ通信する場合はvpc-00とのピアリング接続IDに送信するように指定します。(ルートテーブルとサブネットの関連付けを忘れずに)

pingで接続確認

中央VPCのEC2(Linux0、10.0.2.10)から接続先(ピアリング先)VPCのEC2インスタンスにpingを送信して、応答が返ってくることを確認します。

まず、vpc-01のLinux1-1(172.16.2.50)にpingを送信します。Linux1-1ではtcpdumpコマンドを使用して、Linux0(10.0.2.10)からのicmp要求であることを確認します。

Linux0からLinux1-1へping送信。

応答は返ってきています。

Linux1-1でtcpdumpで確認します。

10.0.2.10からicmpの要求が来て、172.16.2.50から応答を返していることが確認できました。

次は、Linux1-2(172.16.2.150)にping送信します。

応答は返ってきています。

Linux1-2でtcpdumpで確認します。

10.0.2.10と172.16.2.150の間でicmpのやり取りができています。

最後に、vpc-02に存在する、Linux2(172.16.2.100)にping送信します。

こちらもping応答は返ってきています。

Linux2でtcpdumpの結果を確認します。

問題ありませんでした。

参考サイト

1 つの VPC がプレフィックス最長一致を使用して 2 つの VPC とピアリング接続

この記事が気に入ったら
フォローしてね!

よかったらシェアしてね!

コメント

コメントする

コメントは日本語で入力してください。(スパム対策)

CAPTCHA

もくじ
閉じる