Amazon VPC トラフィックミラーリング × tcpdumpでVXLANパケットをキャプチャする

に公開

AWSのAmazon VPC トラフィックミラーリングを使えば、あるEC2インスタンスのネットワークトラフィックを別のインスタンスへコピーして監視ができる。
このとき内部的に使われているのが VXLAN(Virtual Extensible LAN) というトンネリングプロトコル。
今回はVXLANトラフィック(UDPポート4789)を tcpdump でキャプチャして確認する方法紹介する。

🔍 この記事でわかること

  • トラフィックミラーリングの構成
  • VXLANパケットをキャプチャする tcpdump コマンド
  • 出力の見方とポイント

🧱 構成イメージ

+------------------+     VXLAN     +------------------+
|   EC2-A (送信元)  | ------------> |   EC2-B (受信側)  |
|   通常トラフィック  |               |  ミラーターゲット   |
+------------------+               +------------------+
- EC2-A:監視対象の本番インスタンスなど
- EC2-B:tcpdump でミラートラフィックを受ける解析用インスタンス

⚙️ VPCトラフィックミラーリングの簡単な設定手順

  1. ミラーターゲットの作成
  • VPC コンソール → [トラフィックミラーリング] → [Mirror Targets] → 作成
  • ターゲットタイプ:ネットワークインターフェース
  • 対象:EC2-BのENI
  1. ミラーセッションの作成
  • Mirror Source:EC2-AのENI
  • Mirror Target:先ほど作成したターゲット
  • Traffic Filter:All traffic(全トラフィック)

🧪 tcpdumpでVXLANをキャプチャする

  1. EC2-Bにtcpdumpをインストール
    Amazon Linux
sudo yum install -y tcpdump
  1. VXLANパケットのキャプチャコマンド
sudo tcpdump -nni eth0 -vvv udp dst port 4789

🔍 コマンド解説

パラメータ 意味
sudo 管理者権限で実行
tcpdump パケットキャプチャツール
-nni eth0 -n: 名前解決をしない、-i eth0: eth0インターフェースを指定
-vvv 超詳細モードで出力
udp dst port 4789 宛先ポート4789(VXLAN)へのUDPパケットだけを表示

🧾 実行例

22:46:16.479260 IP (tos 0x0, ttl 255, id 0, offset 0, flags [none], proto UDP (17), length 134)
    10.0.0.20.65450 > 10.0.0.30.4789: [no cksum] VXLAN, flags [I] (0x08), vni 100
IP (tos 0x0, ttl 255, id 52364, offset 0, flags [DF], proto ICMP (1), length 84)
    10.0.0.10 > 10.0.0.20: ICMP echo request, id 31495, seq 1, length 64

🔍 出力の解説

  1. VXLANカプセル化の外側パケット(UDP)
10.0.0.20.65450 > 10.0.0.30.4789: [no cksum] VXLAN, flags [I], vni 100
  • 10.0.0.20: ミラー元(送信元ENI)
  • 10.0.0.30: ミラーターゲット(受信側ENI)
  • dst port 4789: VXLAN用の標準ポート
  • vni 100: VXLANネットワーク識別子(仮想ネットワークID)

このパケットはVXLANヘッダーを使ってカプセル化されたUDPパケット。

  1. VXLANの中身:ICMPリクエスト(ping)
10.0.0.10 > 10.0.0.20: ICMP echo request, id 31495, seq 1, length 64
  • 10.0.0.10: pingの送信元(ユーザーがpingを実行したインスタンス)
  • 10.0.0.20: pingの宛先(つまり、ミラー対象となったインスタンス)

これは ping コマンドのICMP Echo Requestで、正常にVXLANの中に入ってターゲットまで届いていることが確認できる。

ここで確認できるポイント

  • VXLANトンネルの宛先ポート:4789
  • トラフィックのコピー元・コピー先IP
  • VXLANフレームの詳細(VNIなど)

💡 VXLANとは?

VXLAN(Virtual eXtensible LAN)は、レイヤー2フレームをUDPパケットにカプセル化してレイヤー3ネットワーク上で送信する技術。
AWSのトラフィックミラーリングでもこのVXLANが内部的に使われている。

  • VXLANポート番号:UDP/4789
  • VXLANヘッダーにはVNI(仮想ネットワーク識別子) などの情報が含まれる

📝 まとめ

項目 内容
技術 Amazon VPC トラフィックミラーリング
通信形式 VXLAN(UDP/4789)を利用
可視化方法 tcpdump を使用して VXLAN パケットをキャプチャ
活用用途 セキュリティ監視、トラブル調査、パフォーマンス分析

トラフィックミラーリングを使えば、本番環境に影響を与えることなく、詳細なネットワーク解析が可能。tcpdumpと組み合わせることで、AWS上でもローレベルなパケット解析ができるようになる。

Discussion