AWSネットワークの深淵を覗く:EIPとフローログの「裏側」を徹底解説
こんにちは!クラウドアーキテクトとして日々AWSと格闘しているSREです。
AWSのインフラを学び始めると、必ずと言っていいほどぶつかる壁が「VPCのネットワークの仕組み」ですよね。「パブリックサブネットに置いたインスタンスにEIP(エラスティックIP)を付けると何が起きるのか?」「フローログで記録されるIPアドレスは一体どれを指しているのか?」――これらは、現場のエンジニアでも意外とあやふやにしがちなポイントです。
今日は、そんなネットワークの「透明な壁」の向こう側を、郵便配達に例えながら紐解いていきましょう!
—
EIPは「魔法の住所転送サービス」
まず、EIP(Elastic IP)を理解するために、皆さんが住んでいるマンションの郵便受けを想像してみてください。
通常、EC2インスタンスがプライベートサブネットやパブリックサブネットに存在する場合、インスタンスには「プライベートIP」という、そのVPC内だけで通用する住所が割り当てられます。これだけでは、外部のインターネットという「広大な世界」からは手紙(パケット)を届けることができません。
そこで登場するのが EIP です。これは、「インターネットから見える世界共通の住所(パブリックIP)」を、特定のインスタンスの「プライベートな住所」に強制的に紐付ける魔法の転送サービスのようなものです。
- プライベートIP: マンションの部屋番号(101号室など)。同じマンション内では通じる。
- EIP: インターネット上で一意に特定できる「住所(郵便番号から番地まで含む)」のこと。
AWSのネットワーク層(ゲートウェイ)は、インターネットから届いた手紙の宛先が EIP だった場合、「お、これは101号室宛だな!」と瞬時に判断し、宛先をプライベートIPに書き換えて届けてくれるのです。
—
フローログが記録する「本当の姿」
さて、ここからが本題です。エンジニアの皆さんがトラブルシューティングで必ず見る「VPCフローログ」。ここには srcAddr(送信元)や dstAddr(送信先)が記録されますが、ここで不思議な現象が起きます。
「NATゲートウェイを通したはずなのに、IPアドレスが変換されていない気がする…?」
そう感じたことはありませんか?実は、フローログの記録仕様には明確なルールがあるんです。
フローログは「変換前の姿」を捉える
結論から言うと、AWSのフローログは、NATゲートウェイによる「IPアドレスの変換(NAT変換)」が発生する前の、インスタンスから見たそのままのIPアドレスを記録します。
- 送信時: インスタンスが外に手紙を出すとき、フローログには「送信元:プライベートIP」として記録されます。
- 受信時: 外から手紙が届くとき、フローログには「宛先:プライベートIP」として記録されます。
これは、インフラ担当者が「どのインスタンスが通信したのか」を特定しやすくするための配慮です。もしフローログに「NATゲートウェイのパブリックIP」ばかりが並んでいたら、どのインスタンスが通信元なのか分からなくなってしまいますよね?
—
現場で使えるフローログの確認コマンド
実際にフローログを有効にして、どのようなログが流れているかを確認するためのAWS CLIコマンド例を紹介します。
# 特定のネットワークインターフェース(ENI)に関連するフローログを取得する例
# 実際にはCloudWatch Logsにストリームされますが、確認のための構文です
aws ec2 describe-flow-logs \
--filter Name=resource-id,Values=eni-0123456789abcdef0 \
--query "FlowLogs[*].{LogGroupName:LogGroupName,FlowLogStatus:FlowLogStatus}"
もし、VPC内の通信をより詳細に監視したい場合は、以下のようなJSON形式でフローログをカスタマイズして出力することも可能です。
/*
フローログのフォーマット定義例
srcaddr (送信元), dstaddr (宛先), pkt-srcaddr (変換前の送信元)
を意識することで、NATの挙動も追いやすくなります
*/
{
"Version": 5,
"Format": "${version} ${srcaddr} ${dstaddr} ${pkt-srcaddr} ${pkt-dstaddr} ${action} ${log-status}"
}
—
今日のまとめ:一歩ずつ理解しよう
今日のポイントを整理しましょう!
1. EIPは住所の仲介役: インターネットという広い世界と、VPC内のプライベートな住所を繋ぐ「架け橋」である。
2. フローログは「素顔」を記録する: NAT変換などの小細工が行われる前の、インスタンスの「プライベートIP」を記録し続ける。
3. トラブルシューティングの肝: ネットワークのパケットは、AWSの魔法(ゲートウェイ)によって書き換えられているが、ログはその「魔法がかかる前(あるいは解けた後)」の姿を教えてくれる。
ネットワークは目に見えないからこそ、こうした「郵便配達の仕組み」に例えて考えると、グッと身近に感じられるはずです。
もし「NATゲートウェイの挙動が怪しいな」と思ったら、まずは「インスタンスのプライベートIP」でフローログを検索してみてください。そこには、パケットが駆け抜けたリアルな軌跡が刻まれていますよ。
それでは、また次回の深掘り記事でお会いしましょう!Happy Cloud Computing!
コメント