セキュリティグループを正しく設定したつもりなのに、なぜか通信ができない... そんなときはVPC Flow Logsをチェックしましょう。
VPC Flow LogsをONにしておけば、VPC内を流れるパケットのログを取ることができます。 また、セキュリティグループかNACLで許可あるいは拒否された場合の結果も、ログに残ります。 VPC FLow Logsを設定する方法は、下記のURLの手順の通りです。
参考: https://docs.aws.amazon.com/ja_jp/AmazonVPC/latest/UserGuide/flow-logs.html#working-with-flow-logs
上記の設定が完了すれば、あとはCloudWatch LogsのログストリームにVPC Flow Logsが出力されます。 そのレコードには、以下の情報が含まれています。
version, account, eni, source, destination, srcport, destport, protocol, packets, bytes, windowstart, windowend, action, flowlogstatus
CloudWatch Logsのコンソール画面でVPC Flow Logsを確認したときのスクリーンショット しかし、出力される情報は数分間で何百行にも及ぶでしょう。以下の通り、フィルタを利用して必要な情報を絞り込みましょう。
- CloudWatchの画面へ遷移
- 左部メニューから「ログ」を選択
- VPC FLow Logsのロググループを選択
- ENI IDごとにログストリームがあるため見たいENIを選択
- 検索フィルタに以下の文法で入力し、絞り込む
宛先ポート22 かつ プロトコルがTCP かつ SGかNACLでREJECTされているパケット
[version, account, eni, source, destination, srcport, destport="22", protocol="6", packets, bytes, windowstart, windowend, action="REJECT", flowlogstatus]
接続元IPが10.0.0.10のパケット
[version, account, eni, source="10.0.0.10", destination, srcport, destport, protocol, packets, bytes, windowstart, windowend, action, flowlogstatus]
宛先IPが10.0.0.10のパケット
[version, account, eni, source, destination="10.0.0.10", srcport, destport, protocol, packets, bytes, windowstart, windowend, action, flowlogstatus]
ちょっとフィルタリングのルール(文法)が独特なので、いつも忘れてしまいます。 備忘的なブログでした。
杉村 勇馬 (記事一覧)
サーバーワークス → 株式会社G-gen 執行役員CTO
2021 Japan APN Ambassadors / 2021 APN All AWS Certifications Engineers
マルチAWSアカウント管理運用やネットワーク関係のAWSサービスに関するブログ記事を過去に執筆。
2021年09月から株式会社G-genに出向、Google Cloud(GCP)が専門に。G-genでもGoogle Cloud (GCP) の技術ブログを執筆中。