VPC Reachability Analyzer で AWS 外の IP 宛経路を検証してみた
はじめに
かつまたです。
ハイブリッドクラウド構成やサードパーティ製のリモートアクセス基盤(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 で疎通不可の理由を確認できます。
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月 アノテーション㈱から社名変更しました






