Amazon-VPC

VPCトラフィックミラーリングを使ってみた(VPC異なる編)

はじめに

こんにちは、ディーネットの山田です。

AWS Summit Tokyo 2023は、久しぶりのオフラインイベントで盛り上がりましたね。
当社のブースや各ブースを巡った際にお会いできた方、その節は大変お世話になりました。
今後も機会がございましたら是非ともよろしくお願いいたします。

(一番、印象に残っているのは、AWS OutpostsとSnowball Edgeの現物です)

さて、少し話しが逸れてしまいましたが、前回お伝えしていたVPCトラフィックミラーリングのVPCが異なる編をお届けします。

前回のブログは、こちらをご覧ください。

VPCが異なる環境にミラーリングする場合について

異なるVPC環境でミラーリングする場合は、『VPC Peering 接続』もしくは『Transit Gateway』で接続されている必要があります。
※Gateway Load Balancerを使う場合は、今回含めておりません。

Traffic mirror source and target connectivity options

動作検証環境について

構成図

以下のような構成を構築して、『Web Server』のENIに流れるパケットを異なるVPCに配置した『Packet Monitor』にミラーします。

EC2の詳細

  • OS:Ubuntu
  • インスタンスタイプ:t3.small

設定方法

1. VPCピアリングを接続

『Web Server』サーバが所属するVPCと『Packet Monitor』サーバが所属するVPCをVPCピアリングで接続します。

2. VPC同士が違いに通信できるようにルートテーブルを調整

『Web Server』サーバが所属するVPCと『Packet Monitor』サーバが所属するVPCで疎通できるようにルートテーブルをそれぞれ調整します。

3. トラフィックミラーターゲットを作成

『Packet Monitor』サーバのENIをターゲットに設定します。

※AWSアカウントが異なる場合は、『Resource Access Manager』でトラフィックミラーターゲットを共有する必要があるので、ご注意ください。

4. トラフィックミラーフィルタを作成

『Web Server』のENIを流れる許可された全ての通信をフィルターします。

5. トラフィックミラーセッションを作成

『Web Server』のENIを流れるパケットをミラーするためにセッションを作成します。

6. トラフィックミラーターゲットのセキュリティグループでVXLANポート宛ての通信を許可

ミラーリングしたパケットの転送先を、別のENIもしくはNLBにした場合は、VXLAN(UDP:4789)でカプセル化されたパケットが転送されてくるので、こちらを受け取る形になります。
今回は、EC2で受け取るので、セキュリティグループでVXLANのパケットを許可しています。
『Web Server』サーバが所属するVPCのCIDR範囲内からVXLANパケットが転送されているので、許可する

動作検証(前回のブログと同様になります)

実際に、ミラー対象に設定したENIを持つEC2から通信を発生させて、パケットがミラーされるか検証します。

1. ミラーされたパケットを受け取るEC2でパケットキャプチャを実施

tcpdump -i any -n -n udp and port 4789

2. 外部宛ての通信を発生

curl http://ifconfig.me

3. パケットキャプチャされたか確認

03:18:48.395352 ens5  In  IP 10.10.10.252.65507 > 10.120.8.71.4789: VXLAN, flags [I] (0x08), vni 16398363
IP 10.10.10.252.45604 > 34.160.111.145.80: Flags [S], seq 1018303536, win 62727, options [mss 1460,sackOK,TS val 169071433 ecr 0,nop,wscale 7], length 0
03:18:48.396621 ens5  In  IP 10.10.10.252.65507 > 10.120.8.71.4789: VXLAN, flags [I] (0x08), vni 16398363
IP 34.160.111.145.80 > 10.10.10.252.45604: Flags [S.], seq 3070071967, ack 1018303537, win 65535, options [mss 1412,sackOK,TS val 603833672 ecr 169071433,nop,wscale 8], length 0
03:18:48.396666 ens5  In  IP 10.10.10.252.65507 > 10.120.8.71.4789: VXLAN, flags [I] (0x08), vni 16398363
IP 10.10.10.252.45604 > 34.160.111.145.80: Flags [.], ack 1, win 491, options [nop,nop,TS val 169071435 ecr 603833672], length 0
03:18:48.396706 ens5  In  IP 10.10.10.252.65507 > 10.120.8.71.4789: VXLAN, flags [I] (0x08), vni 16398363
IP 10.10.10.252.45604 > 34.160.111.145.80: Flags [P.], seq 1:76, ack 1, win 491, options [nop,nop,TS val 169071435 ecr 603833672], length 75: HTTP: GET / HTTP/1.1
03:18:48.398056 ens5  In  IP 10.10.10.252.65507 > 10.120.8.71.4789: VXLAN, flags [I] (0x08), vni 16398363
IP 34.160.111.145.80 > 10.10.10.252.45604: Flags [.], ack 76, win 256, options [nop,nop,TS val 603833673 ecr 169071435], length 0
03:18:48.546187 ens5  In  IP 10.10.10.252.65507 > 10.120.8.71.4789: VXLAN, flags [I] (0x08), vni 16398363
IP 34.160.111.145.80 > 10.10.10.252.45604: Flags [P.], seq 1:298, ack 76, win 256, options [nop,nop,TS val 603833821 ecr 169071435], length 297: HTTP: HTTP/1.1 200 OK
03:18:48.546237 ens5  In  IP 10.10.10.252.65507 > 10.120.8.71.4789: VXLAN, flags [I] (0x08), vni 16398363
IP 10.10.10.252.45604 > 34.160.111.145.80: Flags [.], ack 298, win 489, options [nop,nop,TS val 169071584 ecr 603833821], length 0
03:18:48.546374 ens5  In  IP 10.10.10.252.65507 > 10.120.8.71.4789: VXLAN, flags [I] (0x08), vni 16398363
IP 10.10.10.252.45604 > 34.160.111.145.80: Flags [F.], seq 76, ack 298, win 489, options [nop,nop,TS val 169071584 ecr 603833821], length 0
03:18:48.547668 ens5  In  IP 10.10.10.252.65507 > 10.120.8.71.4789: VXLAN, flags [I] (0x08), vni 16398363
IP 34.160.111.145.80 > 10.10.10.252.45604: Flags [F.], seq 298, ack 77, win 256, options [nop,nop,TS val 603833823 ecr 169071584], length 0
03:18:48.547697 ens5  In  IP 10.10.10.252.65507 > 10.120.8.71.4789: VXLAN, flags [I] (0x08), vni 16398363
IP 10.10.10.252.45604 > 34.160.111.145.80: Flags [.], ack 299, win 489, options [nop,nop,TS val 169071586 ecr 603833823], length 0

まとめ

  • VPCが異なっていても、VPCピアリングを接続することでパケットキャプチャすることができた。
  • ただし、ネットワーク的に接続されている必要がある。
  • VPCピアリングを接続することで、中央アカウントのVPCで集約することが可能になります。

返信を残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です

CAPTCHA