そんな状況で途方に暮れたことはないでしょうか。
VPC設計はセキュリティグループ・ネットワークACL・ルートテーブル・NATゲートウェイなど、確認箇所が多く、どこか1点でルールが欠けているだけで通信が止まります。手作業での確認は時間がかかるうえ、見落としも生じやすいものです。
この記事では、AWS VPC Reachability AnalyzerをAWS CLIから操作し、EC2インスタンス間の疎通問題を自動で特定する手順を解説します。ExplanationCodeを読むことで「どのSGルールが遮断しているか」「ルートテーブルのどこが欠けているか」が一目でわかります。
この記事のポイント
・Reachability AnalyzerはVPN/Peering経由にも対応
・aws ec2 create-network-insights-pathでパス定義
・ExplanationCodeで遮断箇所を即座に特定できる
・マルチAZ冗長設計の事前検証にも活用できる
でも安心してください。プロのエンジニアはコマンドを暗記していません。
「現場で使える型」を効率よく使いこなしているだけです。
AWS VPC Reachability Analyzerとは何か
AWS VPC Reachability Analyzerは、VPC内の2つのエンドポイント間の接続経路をAWSが自動分析するサービスです。通常、疎通確認はEC2上でpingやcurlを実行して確かめます。しかし、インスタンスが起動していない状態でも、Reachability Analyzerは設定情報だけを使って経路を静的解析できます。
分析対象のネットワークコンポーネントは以下のとおりです。
・セキュリティグループ(インバウンド・アウトバウンドルール)
・ネットワークACL
・ルートテーブル
・インターネットゲートウェイ(IGW)
・NAT Gateway
・VPC Peering
・Transit Gateway
・VPNゲートウェイ
疎通が不可能な場合、
NetworkPathFound: falseと返り、さらに「どのコンポーネントが原因か」をExplanationCodeで示してくれます。VPC設計後の手作業確認が抱える問題
VPC設計が一通り完了した後の疎通確認を手作業で行うと、次のような問題が起きやすいです。・確認漏れ: セキュリティグループとネットワークACLの両方を確認し忘れるケース
・順序の見落とし: ルートテーブルの「最長一致」評価順を見落とすケース
・AZ間のルール差異: AZごとにサブネットのNACLが異なっていても気づきにくいケース
・Transit Gateway経由の複雑な経路: 中継が増えるほど確認箇所が指数的に増えるケース
Reachability Analyzerはこれらを1回の分析で一括検証し、ExplanationCodeで原因箇所を示してくれます。マルチAZ冗長設計のVPC構成では特に効果を発揮します。
CLIでReachability分析を実行する手順
実行環境: Amazon Linux 2023 / AWS CLI v2.15.x 動作確認済みReachability Analyzerの操作は3ステップです。
1. ネットワークインサイトパスを作成する
まず、分析する「送信元」と「送信先」を定義したパスを作成します。# EC2インスタンス間の疎通をTCP 443で検証するパスを作成 aws ec2 create-network-insights-path \ --source i-0a1b2c3d4e5f67890 \ --destination i-0f9e8d7c6b5a43210 \ --destination-port 443 \ --protocol TCP \ --region ap-northeast-1 \ --query 'NetworkInsightsPath.NetworkInsightsPathId' \ --output text
nip-0a1b2c3d4e5f67890a
--sourceと--destinationにはインスタンスIDだけでなく、ENI(ネットワークインターフェースID: eni-xxxxx)やサブネットID・IGWのIDも指定できます。2. 分析を開始する
作成したパスIDを指定して分析を実行します。# 分析を開始して分析IDを取得 aws ec2 start-network-insights-analysis \ --network-insights-path-id nip-0a1b2c3d4e5f67890a \ --region ap-northeast-1 \ --query 'NetworkInsightsAnalysis.NetworkInsightsAnalysisId' \ --output text
nia-04d5e6f7a8b9c0d1e
3. 分析結果を確認する
分析が完了したら、疎通の可否を確認します。# 疎通可否と状態を確認 aws ec2 describe-network-insights-analyses \ --network-insights-analysis-ids nia-04d5e6f7a8b9c0d1e \ --region ap-northeast-1 \ --query 'NetworkInsightsAnalyses[0].{Status:Status,NetworkPathFound:NetworkPathFound}'
{ "Status": "succeeded", "NetworkPathFound": false }
Status: succeededは「分析処理が正常完了した」意味であり、疎通可能を意味しません。疎通の可否はNetworkPathFoundで判断します。ExplanationCodeで設定ミスを特定する方法
NetworkPathFound: falseの場合、Explanationsフィールドに原因が記録されます。# 疎通不可の原因コードを取得 aws ec2 describe-network-insights-analyses \ --network-insights-analysis-ids nia-04d5e6f7a8b9c0d1e \ --region ap-northeast-1 \ --query 'NetworkInsightsAnalyses[0].Explanations[*].{Code:ExplanationCode,ComponentId:Component.Id,ComponentType:Component.ResourceType}'
[ { "Code": "SECURITY_GROUP_RULES_BLOCKED", "ComponentId": "sg-0a1b2c3d4e5f6789", "ComponentType": "AWS::EC2::SecurityGroup" } ]
| ExplanationCode | 意味 | 対処方法 |
|---|---|---|
| SECURITY_GROUP_RULES_BLOCKED | SGのインバウンド/アウトバウンドルールで遮断 | 対象SGのルールにポート・プロトコルを追加する |
| NETWORK_ACL_RULES_BLOCKED | ネットワークACLで遮断 | サブネットのNACLルールを確認・修正する |
| ROUTE_TABLE_CONFIGURED | ルートテーブルにルートが存在しない | サブネットのルートテーブルに不足ルートを追加する |
| IGW_NOT_ATTACHED | インターネットゲートウェイが接続されていない | VPCにIGWをアタッチする |
| NO_ROUTE_TO_DESTINATION | 宛先への経路がない | ルートテーブルに宛先サブネットへのルートを追加する |
| TRANSIT_GATEWAY_ATTACHMENT_ROUTING_ISSUES | Transit Gatewayのルートテーブルが不正 | TGWのルートテーブルとアタッチメントを確認する |
マルチAZ冗長設計での活用パターン
マルチAZ冗長構成を設計した場合、各AZのサブネット設定が同一かどうかを確認する必要があります。Reachability Analyzerを活用すれば、AZ-aとAZ-cで同じ疎通テストを実行して比較できます。例えば、ap-northeast-1aのEC2とap-northeast-1cのEC2間でポート8080の疎通を確認する場合:
# AZ-a -> AZ-c のパスを作成(ポート8080) aws ec2 create-network-insights-path \ --source i-0a1b2c3d4e5f67890 \ --destination i-0f9e8d7c6b5a43210 \ --destination-port 8080 \ --protocol TCP \ --region ap-northeast-1 \ --query 'NetworkInsightsPath.NetworkInsightsPathId' \ --output text # 分析を開始 aws ec2 start-network-insights-analysis \ --network-insights-path-id nip-xxxxxxxxxxxxxxxx \ --region ap-northeast-1 \ --query 'NetworkInsightsAnalysis.NetworkInsightsAnalysisId' \ --output text
NetworkPathFound: trueが返れば、マルチAZ間の疎通が設計どおりに構成されていることを確認できます。フェイルオーバー後のルーティングが正しく機能するかを事前に検証できるため、本番リリース前のチェックに有用です。AWSのマルチAZ冗長設計の実践的な手順は、AWSマスターセミナー上級編でハンズオン形式で学べます。
Transit Gateway・VPC Peering経由の疎通確認
Transit Gateway(TGW)やVPC Peeringを経由した複数VPC間の疎通確認にも対応しています。Transit Gatewayのルートテーブルが不正な場合は、
TRANSIT_GATEWAY_ATTACHMENT_ROUTING_ISSUESのExplanationCodeが返ります。VPCピアリングのルート設定ミスにはVPC_PEERING_DNS_RESOLUTION_ISSUEが返るケースがあります。複雑なマルチVPC構成でも、送信元と送信先のIDを指定するだけで自動的に経路全体を追跡してくれるため、手動確認では見落としがちな中間ルートの欠落を確実に検出できます。
Reachability Analyzerを使う上での注意点
・料金: 分析1件あたり0.10USD(東京リージョン、2026年9月時点)。設計変更のたびに何十回も実行すると費用がかさむため、変更後に1度実行する運用を推奨します。・IPv6非対応: IPv4のみ対応。IPv6デュアルスタック構成の疎通確認には対応していません。
・OSレベルのFWは非対象: あくまでAWSネットワーク設定の静的解析です。EC2内のfirewalldやiptablesで落とされているケースは検出できません。OSレベルのポート確認はLinux ポート確認の全コマンドで別途行ってください。
・エンドポイントの制限: 送信元・送信先に指定できるのはAWSのリソース(EC2・ENI・IGW・NAT GW等)のみ。オンプレミスサーバーのIPアドレスを直接指定することはできません(Site-to-Site VPN接続経由の場合はVGW IDを起点として分析可能)。
AWSサーバーの基本的なセットアップを含む入門的な内容は、AWSサーバー構築入門(Amazon Linux)で確認できます。
本記事のまとめ
| やりたいこと | コマンド |
|---|---|
| 疎通確認パスを作成 | aws ec2 create-network-insights-path --source i-xxx --destination i-yyy --destination-port 443 --protocol TCP |
| 分析を開始 | aws ec2 start-network-insights-analysis --network-insights-path-id nip-xxxx |
| 疎通可否を確認 | aws ec2 describe-network-insights-analyses --network-insights-analysis-ids nia-xxxx --query '..{Status:Status,NetworkPathFound:NetworkPathFound}' |
| 障害箇所のコードを取得 | aws ec2 describe-network-insights-analyses --network-insights-analysis-ids nia-xxxx --query '..Explanations[*].{Code:ExplanationCode}' |
| 作成済みパスの一覧表示 | aws ec2 describe-network-insights-paths --region ap-northeast-1 |
| パスの削除(費用抑制) | aws ec2 delete-network-insights-path --network-insights-path-id nip-xxxx |
ただし、OSレベルのfirewalldやiptablesの設定ミスは検出できないため、AWSのネットワーク層と合わせてLinux側のポート確認も行いましょう。
「Linuxサーバー構築入門マニュアル(図解60P)」を無料でお渡ししています。
AWSの構築手順からセキュリティ設定まで体系的に学べます。
>>無料マニュアルを受け取る
3,100名以上が実践した「型」を無料で公開中
プロのエンジニアはコマンドを暗記していません。
「現場で使える型」を効率よく使いこなしているだけです。
その「型」を図解60Pにまとめた入門マニュアルを、完全無料でプレゼントしています。
姓・名・メールの3つだけ/30秒/解除は3秒 / 詳細はこちら
- 前のページへ:Amazon MSKのマルチAZ設計入門|aws kafkaコマンドで実装するブローカー分散配置とVPCサブネット設計
- この記事の属するカテゴリ:AWS(Amazon Linux)へ戻る

無料メルマガで学習を続ける
Linuxの実践スキルをメールで毎週お届け。
登録は30秒、解除もいつでも可。
登録無料・いつでも解除できます