AWS VPCフローログの「深層」を覗く:パケットの配達記録からトラブルの正体を見抜こう
こんにちは!日々クラウドの海を渡り歩いているSREです。
AWSのVPCでネットワークを構築したとき、皆さんは「パケットがどこで弾かれたのか?」という謎に直面したことはありませんか?「セキュリティグループの設定は合っているはずなのに、なぜか通信できない……」。そんなとき、ネットワークエンジニアの最強の味方になるのが VPCフローログ です。
今回は、このVPCフローログが一体何を見ているのか、そしてなぜ「ログが出るまでに時間がかかることがあるのか」という現場のリアルな疑問を、郵便配達に例えて紐解いていきましょう。
—
1. VPCフローログは「郵便の配達記録」である
VPCフローログを理解する一番の近道は、それを「郵便局の配達記録簿」だと考えることです。
あなたが手紙(パケット)を送るとき、郵便局員さんは一つ一つの手紙をすべて記録するでしょうか?もし世界中のすべての手紙を1通ずつ詳細に記録していたら、郵便局はパンクしてしまいますよね。
AWSも同じです。数千万ものパケットをすべてリアルタイムでログに書き出すのは、コスト的にもパフォーマンス的にも現実的ではありません。そこで、ある一定期間の「通信のまとめ」を一つの記録として保存する手法をとっています。
集約ウィンドウ(Aggregation Window)の正体
AWSでは、この「まとめ期間」のことを 集約ウィンドウ と呼びます。最大で1分〜3分程度のインターバルがありますが、これは「この1分間に、AさんからBさんへ、同じルールで通信した郵便物がこれだけ届きましたよ」という報告書をまとめる時間だとイメージしてください。
- 注意点: ログは「リアルタイム」ではありません。通信が終了してから、この集約ウィンドウ分だけ待たないとログに表示されないことが多いんです。「今通信したはずなのにログに出ない!」と焦る必要はありません。少しだけ待ってみましょう。
—
2. 「REJECT」されたパケット:配達拒否の理由を探る
皆さんが一番知りたいのは、きっと「なぜ通信が届かなかったのか(REJECT)」というログですよね。
VPCフローログには、通信がどこで拒否されたかを教えてくれる重要なフィールドがあります。これらを見ることで、犯人が「セキュリティグループ(SG)」なのか「ネットワークACL(NACL)」なのかを切り分けることができます。
現場で見るべき主なフィールド
srcaddr/dstaddr: 送り主と届け先。action: ここが重要です。ACCEPTなら通過、REJECTなら拒否です。pkt-srcaddr/pkt-dstaddr: 実際に通信をブロックしたIP。log-status: ログが正常に取れているかのステータス。
もし action が REJECT になっていたら、それは「門前払い」を食らったことを意味します。郵便局の入り口(NACL)で止められたのか、あるいは家の玄関(SG)で鍵がかかっていたのか。これを見分けるのがプロのSREの腕の見せ所です。
—
3. 実践:VPCフローログを設定してみよう
では、実際にどのようにログを設定するか見てみましょう。AWS CLIを使って、特定のVPCに対してフローログを有効にする例です。
# VPCに対してフローログを作成するコマンドの例
aws ec2 create-flow-logs \
--resource-type VPC \
--resource-ids vpc-0123456789abcdef0 \
--traffic-type ALL \
--log-destination-type cloud-watch-logs \
--log-group-name "my-vpc-flow-logs" \
--max-aggregation-interval 60 # 集約ウィンドウを60秒に設定
--traffic-type ALL: 成功した通信も失敗した通信も全部記録します。トラブルシューティングには必須ですね。--max-aggregation-interval 60: 1分単位で集約します。もっと細かく見たい場合は短くできますが、ログの量とコストが増えるので注意が必要です。
—
4. トラブルシューティングの極意
最後に、現場でよくある失敗談を一つ。
「REJECT ログが出ているのに、なぜか通信が通っているように見える」というケースがあります。これは、VPCフローログが「キャプチャした時点」での記録であることと、OSレベルのファイアウォール(iptables や firewalld)の存在を忘れていることが原因かもしれません。
VPCフローログはあくまで 「AWSのネットワーク層(ゲートウェイやサブネット境界)」 の記録です。OSの中で行われている処理までは関知しません。
1. まずはAWS層を疑う: REJECT ならセキュリティグループやNACLを確認。
2. 次にOS層を疑う: ACCEPT なのに通信できないなら、EC2インスタンス内部のOS設定を確認。
この切り分けができるだけで、あなたのトラブルシューティング能力は格段にアップします。
—
最後に:ログは「未来の自分への手紙」
VPCフローログは、一見すると無機質な数字の羅列です。しかし、そこにはネットワークを駆け巡るパケットたちのドラマが詰まっています。
「今、何が起きているのか?」を想像しながらログを眺める。その積み重ねが、いつか皆さんのインフラ構築をより強固で美しいものにしてくれるはずです。
それでは、また次回の記事でお会いしましょう!快適なクラウドライフを!
コメント