VPC Reachability Analyzer で AWS 外の IP 宛経路を検証してみた

VPC Reachability Analyzer で AWS 外の IP 宛経路を検証してみた

2026.05.31

はじめに

かつまたです。

ハイブリッドクラウド構成やサードパーティ製のリモートアクセス基盤(SD-WAN、SASE、VPN 等)を AWS と接続していると、「AWS の外側にいるホスト宛のパケットが、自分の VPC のルートテーブルや Security Group を正しく通過するか」を事前に・パケットを送らずに検証したくなることがあります。

VPC Reachability Analyzer は通常、Source と Destination の両方に AWS リソース ID を指定して使う前提で紹介されていますが、--destination-ip オプションを使うと「AWS の外側にある任意の IP アドレス」を宛先としたシミュレーションが可能です。今回はこのオプションを試して、オンプレ等の外部 IP 宛の送信経路を確認してみました。

検証する経路の概念図

[ Source EC2 ]
   10.0.x.x


[ サブネット RT: 198.51.100.0/24 → tgw-xxxx ]


[ TGW ]──→(AWS 外)→ 198.51.100.1

「ルートテーブルが 198.51.100.0/24 を TGW に向けているか」「途中の SG / NACL で阻害されていないか」を、宛先 IP 198.51.100.1 への送信をシミュレーションして確認します。

ポイントは aws ec2 create-network-insights-path--destination(終点リソース ID)を省略し、--destination-ip だけを指定することです。Source のサブネットのルートテーブルを基に VPC を抜ける先のリソース(IGW / NAT GW / TGW Attachment 等)が自動判定され、外部 IP 宛の経路が想定どおりかを評価できます。

やってみた

1. パスを作成

REGION=ap-northeast-1
SOURCE_EC2=i-0123456789abcdef0
DEST_IP=198.51.100.1

PATH_ID=$(aws ec2 create-network-insights-path \
  --source $SOURCE_EC2 \
  --destination-ip $DEST_IP \
  --protocol tcp \
  --destination-port 443 \
  --region $REGION \
  --tag-specifications "ResourceType=network-insights-path,Tags=[{Key=Name,Value=external-cidr-verify}]" \
  --query "NetworkInsightsPath.NetworkInsightsPathId" \
  --output text)

echo "Path ID: $PATH_ID"

出力例

Path ID: nip-0123456789abcdef0

--destination-ip で外部 IP 宛のパス定義が成立します。

2. 解析を実行

ANALYSIS_ID=$(aws ec2 start-network-insights-analysis \
  --network-insights-path-id $PATH_ID \
  --region $REGION \
  --query "NetworkInsightsAnalysis.NetworkInsightsAnalysisId" \
  --output text)

echo "Analysis ID: $ANALYSIS_ID"

出力例

Analysis ID: nia-0123456789abcdef0

3. 結果を確認

ForwardPathComponents から「どの宛先 CIDR がどのターゲットに向けられたか」を取り出します。今回検証したい「198.51.100.0/24 が想定の TGW に向いているか」をルート決定があったホップだけに絞ります。

aws ec2 describe-network-insights-analyses \
  --network-insights-analysis-ids $ANALYSIS_ID \
  --region $REGION \
  --query "NetworkInsightsAnalyses[0].ForwardPathComponents[?RouteTableRoute].{
    RouteCidr:RouteTableRoute.DestinationCidr,
    TGW:RouteTableRoute.TransitGatewayId
  }" \
  --output table

出力例(経路が成立している場合)

-----------------------------------------------------
|         DescribeNetworkInsightsAnalyses           |
+-------------------+-------------------------------+
|     RouteCidr     |             TGW               |
+-------------------+-------------------------------+
|  198.51.100.0/24  |  tgw-0123456789abcdef0        |
+-------------------+-------------------------------+

198.51.100.0/24 → tgw-0123456789abcdef0 が選択されたことが ID レベルで確認できます。

一方、ルートテーブルに該当 CIDR への経路を追加する前に同じコマンドを実行すると、結果は空になります。

出力例(経路が成立していない場合)

(出力なし)

解析自体は完了しているのに ForwardPathComponents が空のときは、経路が見つからなかったことを意味します。

ExplanationCode で疎通不可の理由を確認できます。
https://docs.aws.amazon.com/ja_jp/vpc/latest/reachability/explanation-codes.html

aws ec2 describe-network-insights-analyses \
  --network-insights-analysis-ids $ANALYSIS_ID \
  --region $REGION \
  --query "NetworkInsightsAnalyses[0].Explanations" \
  --output json

出力例

[
  {
    "Direction": "egress",
    "ExplanationCode": "NO_POSSIBLE_DESTINATION",
    "RouteTable": {
      "Id": "rtb-0123456789abcdef0"
    },
    "Subnet": {
      "Id": "subnet-0123456789abcdef0"
    },
    "Vpc": {
      "Id": "vpc-0123456789abcdef0"
    }
  }
]

おわりに

ご覧いただきありがとうございました。

--destination-ip を使うと VPC Reachability Analyzer の用途が一段広がり、「外部 CIDR 宛の経路設定が正しいか」を確認できるのが便利でした。
Reachability Analyzer は AWS リソース ID 同士でしか使えないツールという印象を持たれている方も多いと思いますが、本記事をきっかけに「AWS 外 IP 宛の経路検証」にも活用してみていただければ幸いです。

クラスメソッドオペレーションズ株式会社について

クラスメソッドグループのオペレーション企業です。
運用・保守開発・サポート・情シス・バックオフィスの専門チームが、IT・AIをフル活用した「しくみ」を通じて、お客様の業務代行から課題解決や高付加価値サービスまでを提供するエキスパート集団です。
当社は様々な職種でメンバーを募集しています。
「オペレーション・エクセレンス」と「らしく働く、らしく生きる」を共に実現するカルチャー・しくみ・働き方にご興味がある方は、クラスメソッドオペレーションズ株式会社 コーポレートサイト をぜひご覧ください。
※2026年1月 アノテーション㈱から社名変更しました

この記事をシェアする

関連記事