VPCフローログの各種フィールドの意味をまとめてみた

2024.04.19

はじめに

こんにちは。AWS事業本部コンサルティング部に所属している和田響です。

今回はVPCフローログの各種フィールドの意味についてまとめてみました。

VPCフローログは文量が多いのでついつい目を背けてしまいがちですが、一つ一つの意味を理解することで活用の仕方がわかってきます。

先にまとめ

フィールド 意味 備考
version フローログのバージョン デフォルトの形式だと2
account-id AWSアカウントID VPCエンドポイントやNLBなどunknownになる場合も
interface-id ネットワークインターフェースのID
srcaddr 送信元のアドレス
dstaddr 送信先のアドレス
srcport 送信元のポート番号
dstport 送信先のポート番号
protocol IANAプロトコル番号 IPv4なら4、TCPなら6、IPv6なら41 ...etc
packets パケット数
bytes バイト数
start 通信開始時間 UNIX秒で表示
end 通信終了時間 UNIX秒で表示
action 承認された場合にはACCEPT
拒否された場合にはREJECT
log-status 正常に生成されたらOK
トラフィックがなかったらNODATA
ログの生成がスキップされたらSKIPDATA

VPCフローログとは?

VPC フローログは、VPC のネットワークインターフェイスとの間で行き来する IP トラフィックに関する情報をキャプチャできるようにする機能です。フローログデータは、Amazon CloudWatch Logs、Amazon S3、または Amazon Data Firehose の場所に発行できます。フローログを作成したら、設定したロググループ、バケット、または配信ストリームのフローログレコードを取得して表示できます。

VPCフローログの中身

VPCフローログな中身をみると以下のようなフォーマットでログが表示されています。
何も知らない状態でログをみても、何が何だかわかりませんね。

version account-id interface-id srcaddr dstaddr srcport dstport protocol packets bytes start end action log-status
2 123456789012 eni-abcdefghijk xx.xx.xx.xx xx.xx.xx.xx 22 31587 6 4 333 1708481969 1708481969 ACCEPT OK
2 123456789012 eni-abcdefghijk xx.xx.xx.xx xx.xx.xx.xx 28525 27868 6 1 44 1708481970 1708481970 REJECT OK

本題とはそれますが、こちらのブログをもとにスプレッドシートでみてみると少しだけみやすくなります。

各種フィールドの意味

先ほどのログの1行目に表示されているのがフィールドと呼ばれるものです。
VPCフローログはデフォルトの形式では、以下の14個のフィールドで構成されています。

version

VPCフローログのバージョンを意味します。 デフォルトの形式を使用する場合、バージョンは2になります。
VPCフローログの形式をカスタム形式で作成すると、それに対応したバージョンが表示されます。

account-id

12桁の数字のAWSアカウントIDが表示されます。
トラフィックが記録されるソースネットワークインターフェイスの所有者のAWSアカウントIDを示すので、 VPCエンドポイントやNetwork Load Balancerなど、AWSサービスによって作成されている場合unknownが表示されることがあります。

interface-id

トラフィックが記録されるネットワークインターフェイスのIDeni-xxxxxxxxxが表示されます。

srcaddr

受信トラフィックの送信元アドレスか、ネットワークインターフェイスにおける送信トラフィックのネットワークインターフェイスのIPv4またはIPv6アドレスが表示されます。

dstaddr

送信トラフィックの送信先アドレスか、ネットワークインターフェイスにおける受信トラフィックのネットワークインターフェイスのIPv4またはIPv6アドレスが表示されます。

srcport

トラフィックの送信元ポートが表示されます。

dstport

トラフィックの送信先ポートが表示されます。

protocol

トラフィックのIANAプロトコル番号が表示されます。

※IANAプロトコル番号とは、インターネット割り当て番号機構(IANA)によって割り当てられるプロトコルの識別番号です。 代表的なものでは、IPv4には4、TCPには6、IPv6には41が割り当てられています。

packets

フロー中に転送されたパケットの数が表示されます。

bytes

フロー中に転送されたバイト数が表示されます。

start

集約間隔内にフローの最初のパケットが受信された時間がUNIX秒で表示されます。
UNIX秒で表示されるため、日本時間に直すためにはエクセルのDATEVALUEのような関数が役に立ちます。

end

集約間隔内にフローの最後のパケットが受信された時間がUNIX秒で表示されます。
UNIX秒で表示されるため、日本時間に直すためにはエクセルのDATEVALUEのような関数が役に立ちます。

action

トラフィックが承認された場合にはACCEPTが表示されます。
トラフィックが拒否された場合にはREJECTが表示されます。

log-status

トラフィックがありログが正常に生成された場合OKが表示されます。 トラフィックがなかった場合NODATAが表示されます。 トラフィックがあったがログの生成がスキップされた場合SKIPDATAが表示されます。

簡単に表にまとめました。

フィールド 意味 備考
version フローログのバージョン デフォルトの形式だと2
account-id AWSアカウントID VPCエンドポイントやNLBなどunknownになる場合も
interface-id ネットワークインターフェースのID
srcaddr 送信元のアドレス
dstaddr 送信先のアドレス
srcport 送信元のポート番号
dstport 送信先のポート番号
protocol IANAプロトコル番号 IPv4なら4、TCPなら6、IPv6なら41 ...etc
packets パケット数
bytes バイト数
start 通信開始時間 UNIX秒で表示
end 通信終了時間 UNIX秒で表示
action 承認された場合にはACCEPT
拒否された場合にはREJECT
log-status 正常に生成されたらOK
トラフィックがなかったらNODATA
ログの生成がスキップされたらSKIPDATA

具体的な内容は公式ドキュメントを参照ください。

最後に

改めてVPCフローログを見てみると、先ほどよりすんなり頭に入ってきませんか?

version account-id interface-id srcaddr dstaddr srcport dstport protocol packets bytes start end action log-status
2 123456789012 eni-abcdefghijk xx.xx.xx.xx xx.xx.xx.xx 22 31587 6 4 333 1708481969 1708481969 ACCEPT OK
2 123456789012 eni-abcdefghijk xx.xx.xx.xx xx.xx.xx.xx 28525 27868 6 1 44 1708481970 1708481970 REJECT OK

この記事がどなたかのお役に立てれば幸いです。