【入門編】 VPCフローログ(VPC Flow Logs)を用いたパケットメタデータのキャプチャ – クラウドインフラと仮想化ネットワーク実践ガイド

AWSの「見えないトラフィック」を可視化せよ!VPCフローログ入門:パケットの足跡を追う冒険

こんにちは!クラウドの海を泳ぐSREの現場から、今日は皆さんに「ネットワークの可視化」というワクワクするお話を届けます。

AWSでインフラを構築し始めると、必ず耳にするのが「パブリックサブネット」や「プライベートサブネット」という言葉。そして、「なぜか通信が繋がらない」「誰がこのサーバーにアクセスしているの?」という泥沼のトラブル……。そんな時、私たちの頼れる相棒となるのがVPCフローログです。

今日は、小難しい理論は一旦横に置いて、VPCフローログを「郵便配達の記録簿」に例えながら、その仕組みを紐解いていきましょう。

—

1. VPCフローログは「郵便の配達記録簿」

皆さんのAWS環境を一つの巨大な「巨大ビル」だと想像してみてください。

  • パブリックサブネット: 誰でも入れるビルのロビー。
  • プライベートサブネット: セキュリティゲートの奥にある、従業員専用のオフィスエリア。
  • インターネットゲートウェイ(IGW): ビルの出入り口にある受付。

さて、このビルの中で「誰が、いつ、どこへ手紙(パケット)を送ったか」を記録するのがVPCフローログです。

パケットの中身(手紙の本文)を覗き見るわけではありません。あくまで「誰が、どこ宛に、いつ、何通送って、届いたのか届かなかったのか」というメタデータ(宛先や差出人の情報)だけを記録する「配達ログ」なのです。

—

2. なぜフローログが必要なのか?

「動いているからいいじゃん」と思うかもしれません。でも、現場ではこんなことが起きます。

  • 「拒否」の嵐: 実はセキュリティグループの設定ミスで、大切な通信が門前払いされていることに気づかない。
  • 「謎の通信」: 知らないIPアドレスから猛烈な勢いでアクセスが来ている。

フローログがあれば、管理画面(CloudWatch Logsなど)を覗くだけで、「あ、このパケットは受付(IGW)で弾かれているな」とか「このサーバー同士、不自然なほど通信しているぞ」といった状況が一目瞭然になるんです。

—

3. フローログの読み方:パケットの足跡を追う

VPCフローログを有効にすると、以下のようなフォーマットでデータが届きます。最初は暗号のように見えるかもしれませんが、分解すると簡単です。

# バージョン アカウントID インターフェースID 送信元IP 宛先IP 送信元ポート 宛先ポート プロトコル パケット数 バイト数 開始時間 終了時間 アクション ステータス
2 123456789012 eni-0a1b2c3d4e5f6g7h8 192.168.1.5 10.0.0.10 443 54321 6 1 60 1620000000 1620000060 ACCEPT OK
  • ACCEPT:通信が許可された(無事配達完了!)
  • REJECT:通信が拒否された(門前払い!)
  • 6:TCPプロトコル(手紙の種類)のこと。

このように、ACTIONの項目を見るだけで、通信が成功したのか失敗したのかが瞬時にわかります。

—

4. さあ、やってみよう!VPCフローログの設定

実際にAWS CLIを使って、VPCのトラフィックを記録する設定を入れてみましょう。以下のコマンドを叩くだけで、あなたのVPCは「全通信を記録する監視網」に変わります。

# 特定のVPCに対してフローログを作成し、CloudWatch Logsに送信する設定です
aws ec2 create-flow-logs \
    --resource-type VPC \
    --resource-ids vpc-0123456789abcdef0 \
    --traffic-type ALL \
    --log-destination-type cloud-watch-logs \
    --log-group-name /aws/vpc/my-flow-logs \
    --deliver-logs-permission-arn arn:aws:iam::123456789012:role/FlowLogRole
  • --traffic-type ALL:許可された通信(ACCEPT)も拒否された通信(REJECT)も全部記録します。
  • --deliver-logs-permission-arn:ログをCloudWatchに書き込むための「許可証」を渡しているイメージですね。

—

5. SREからのアドバイス:分析の極意

フローログを眺めるだけで満足してはいけません。現場で重宝するのは、「REJECTだけを抽出して異常を見つける」という手法です。

例えば、CloudWatch Logs Insightsを使って、こんなクエリを投げることがあります。

# 拒否された通信(REJECT)の発生件数をIPアドレスごとに集計するクエリ
filter action="REJECT"
| stats count(*) as rejectCount by srcAddr
| sort rejectCount desc

これだけで、「どのIPアドレスがしつこく侵入を試みているか」がランキング形式で表示されます。まるで、ビルの受付で「あいつ、今日だけで10回も侵入しようとしてるぞ!」と警備員さんが報告してくれるようなものですね。

—

まとめ:ネットワークは「見える化」で愛せ!

ネットワークは、目に見えないからこそ怖いものです。でも、フローログという「ログのメガネ」をかければ、そこにはパケットたちが駆け巡る躍動感あふれる光景が見えてきます。

まずは小さなVPCでフローログを有効にして、どんな通信が流れているか眺めてみてください。それが、ネットワークエンジニアへの第一歩です。

何かトラブルが起きても大丈夫。「ログを見れば答えが書いてある」、そう信じて一歩ずつ進んでいきましょうね!

それでは、良いクラウドライフを!

コメント

タイトルとURLをコピーしました