はじめに
本記事では、
Azure 仮想マシン(VM) から AWS S3 インターフェイス型エンドポイントに VPN 経由でアクセスする構成で12
発生したタイムアウト問題と、その解決方法について整理します。
記事のまとめ
- Azure → AWS VPC EndpointへVPN経由アクセス時のタイムアウトエラー解決手順
- VPN接続でのトラブルシューティングのポイント
問題の詳細
発生状況
Azure 仮想マシン(VM)から AWS S3 インターフェイス型エンドポイントに
VPN 経由でアクセスしようとした際に、以下の問題が発生
- S3 Endpointへのアクセスコマンドがタイムアウト
- インターネット経由アクセスコマンドは正常
- DNS 解決は成功するが、実際の通信で失敗
- VPN接続自体は確立されている状況
エラーメッセージ
# 以下コマンドでタイムアウトが発生
aws s3 ls s3://example-bucket \
--endpoint-url https://bucket.vpce-XXXXXXXXXXXXXXXXX-XXXXXXXXX.s3.ap-northeast-1.vpce.amazonaws.com \
--region ap-northeast-1
# タイムアウトエラーが発生(具体的なエラーメッセージは環境により異なる)
調査手順
解決するまでにチェックした点と、その手順をまとめます。
調査方法
環境情報
問題が発生した際の環境は以下です。
システム環境
- Azure VM OS: Linux (Ubuntu)
- AWS CLI バージョン: 最新版
- ネットワーク構成: Azure VNetプライベートサブネット内のVM → Azure VPN Gateway → AWS Site-to-Site VPN → AWS VPC → S3 Interface Endpoint → S3
設定情報
Azure 側設定
- 仮想ネットワーク CIDR: 10.0.1.0/24
- Azure VPN Gateway: VpnGw1AZ
- プライベートサブネット: 10.0.1.0/28
- ゲートウェイサブネット: 10.0.1.224/27
AWS 側設定
- VPC CIDR: 10.0.8.0/24
- プライベートサブネット: 10.0.8.0/28
- S3 Interface Endpoint: com.amazonaws.ap-northeast-1.s3
- エンドポイント DNS: vpce-XXXXXXXXXXXXXXXXX-XXXXXXXXX.s3.ap-northeast-1.vpce.amazonaws.com
調査1:AWS S3 Endpoint設定の確認
1-1:エンドポイントタイプの確認
実行内容
実行場所: ローカルPC(Windows コマンドプロンプトまたはPowerShell)
前提条件: AWS CLI がインストール済み、適切な IAM 権限で aws configure 設定済み
# VPC エンドポイントの詳細情報を取得
aws ec2 describe-vpc-endpoints --vpc-endpoint-ids vpce-XXXXXXXXXXXXXXXXX --region ap-northeast-1
実行結果
-
エンドポイントタイプ:
"Interface"→ VPN経由でのアクセスが可能な構成 -
エンドポイント状態:
"available"→ 正常に動作中 -
サービス名:
com.amazonaws.ap-northeast-1.s3→ S3 Interface Endpointとして正しく設定済み -
Private DNS設定:
"PrivateDnsEnabled": false→ エンドポイント固有のDNS名使用(後のDNS解決テストで正常動作確認済み) -
セキュリティグループ:
sg-XXXXXXXXXXXXXXXXX→ 設定済み
確認の結果、問題はありませんでした。
1-2:DNS名解決の確認
実行内容
実行場所: Azure VM 内(SSH接続後のLinuxターミナル)
# DNS 解決の確認(Azure VM内から実行)
nslookup vpce-XXXXXXXXXXXXXXXXX-XXXXXXXXX.s3.ap-northeast-1.vpce.amazonaws.com
実行結果
azure-user@azure-vm:~$ nslookup vpce-XXXXXXXXXXXXXXXXX-XXXXXXXXX.s3.ap-northeast-1.vpce.amazonaws.com
Server: 127.0.0.53
Address: 127.0.0.53#53
Non-authoritative answer:
Name: vpce-XXXXXXXXXXXXXXXXX-XXXXXXXXX.s3.ap-northeast-1.vpce.amazonaws.com
Address: 10.0.8.8
良好な設定項目:
- DNS解決成功: エンドポイントのDNS名が正常に解決されている
-
適切なIPアドレス: 返されたIP
10.0.8.8がAWS VPC CIDR(10.0.8.0/24)の範囲内 - Interface Endpoint ENI: このIPはInterface EndpointのENI(Elastic Network Interface)のプライベートIPアドレス
確認の結果、問題はありませんでした。
調査1結果まとめ
問題なし
調査2:ネットワーク設定とルーティングの確認
2-1:AWSセキュリティグループ設定確認
実行内容
実行場所: ローカルPC(Windows コマンドプロンプトまたはPowerShell)
# エンドポイントのセキュリティグループ確認
aws ec2 describe-vpc-endpoints \
--vpc-endpoint-ids vpce-XXXXXXXXXXXXXXXXX \
--query 'VpcEndpoints[0].Groups' \
--region ap-northeast-1
# セキュリティグループの詳細ルール確認
aws ec2 describe-security-groups \
--group-ids sg-XXXXXXXXXXXXXXXXX \
--region ap-northeast-1
実行結果
セキュリティグループ インバウンドルール (IpPermissions):
-
プロトコル: すべて (
-1) -
Azure CIDR:
10.0.1.0/24から許可 -
AWS CIDR:
10.0.8.0/24から許可
セキュリティグループ アウトバウンドルール (IpPermissionsEgress):
-
プロトコル: すべて (
-1) -
宛先:
0.0.0.0/0(すべて) への送信許可
確認の結果、問題はありませんでした。
※Azure VMからInterface EndpointへのHTTPS通信は正常に許可されている。
2-2:Azureネットワークセキュリティグループ確認
実行内容
実行場所: ローカルPC(Windows コマンドプロンプトまたはPowerShell)
# Azure CLI での NSG ルール確認
az network nsg rule list \
--resource-group example-resource-group \
--nsg-name example-vm-nsg \
--output table
実行結果
Azure NSGの設定状況:
- SSH インバウンドルール: TCP 22番ポートを許可(正常)
- AWS VPN アクセスルール: TCP 443番ポート(HTTPS)のアウトバウンドを全宛先(*)に許可
確認の結果、問題はありませんでした。
※Azure VMからのHTTPS(443)通信は、NSGレベルでも正常に許可されている。
2-3:Azure側ルーティング設定の詳細確認
実行内容
# サブネットのルートテーブル確認
az network vnet subnet show \
--resource-group example-resource-group \
--vnet-name example-vnet \
--name example-subnet \
--query 'routeTable'
# VPN Gateway関連確認
az network vpn-connection show \
--name example-aws-vpn \
--resource-group example-resource-group \
--query 'routingConfiguration'
実行結果
# 出力なし(null)
要チェック!
- カスタムルートテーブル未設定: サブネットにカスタムルートテーブルが関連付けられていない
- ルーティング設定なし: VPN接続にルーティング設定が存在しない
- BGPピアなし: VPN Gateway にBGPピアが設定されていない
問題点
Azure システムルートでは、AWS VPC CIDR(10.0.8.0/24)への明示的なルートが存在しない。
そのため、Azure VM からのトラフィックが VPN Gateway に正しく向かわず、AWS S3 Interface Endpoint への通信が失敗している。
2-4:AWS側ルーティング設定の詳細確認
実行内容
# AWS ルートテーブルの確認
aws ec2 describe-route-tables \
--filters "Name=tag:Name,Values=example-routetable" \
--region ap-northeast-1
実行結果
ルート設定:
"Routes": [
{
"DestinationCidrBlock": "10.0.1.0/24",
"GatewayId": "vgw-XXXXXXXXXXXXXXXXX",
"Origin": "CreateRoute",
"State": "active"
}
]
確認の結果、問題はありませんでした。
※Azure VNet CIDR(10.0.1.0/24)からのトラフィックが Virtual Private Gateway 経由で正しく処理される設定になっている。
調査2結果まとめ
問題なし
- AWSセキュリティグループ:適切に設定済み
- Azure NSG:適切に設定済み
- AWS側ルーティング:正常に設定済み
要対応!
- Azure側サブネットにカスタムルートテーブルが未設定で、AWS VPC CIDR(10.0.8.0/24)への明示的なルートが存在しない
調査2結果の対応
対応内容
Azure側カスタムルートテーブルの作成と設定を行います。
# 1. カスタムルートテーブルの作成
az network route-table create \
--resource-group example-resource-group \
--name example-vpn-route-table
# 2. AWS VPC CIDR への静的ルート追加
az network route-table route create \
--resource-group example-resource-group \
--route-table-name example-vpn-route-table \
--name aws-vpc-route \
--address-prefix 10.0.8.0/24 \
--next-hop-type VirtualNetworkGateway
# 3. サブネットへのルートテーブル関連付け
az network vnet subnet update \
--resource-group example-resource-group \
--vnet-name example-vnet \
--name example-subnet \
--route-table example-vpn-route-table
対応結果
以下の通り設定を変更しました:
-
カスタムルートテーブル:
provisioningState: "Succeeded" -
静的ルート:
addressPrefix: "10.0.8.0/24"→nextHopType: "VirtualNetworkGateway" - サブネット: カスタムルートテーブルを関連付け
Azure側ルーティング問題の結果、カスタムルート設定が完了しました!
これにより、
Azure VM からのトラフィックが、AWS VPC CIDR(10.0.8.0/24)宛の場合、 VPN Gateway 経由でルーティングされるようになりました
ただし、この時点ではまだ問題が完全に解決されていない可能性があるため、次の調査に進みます。
調査3:VPN接続状態とトンネル設定の確認
3-1:Azure VPN Gateway接続状態確認
実行内容
実行場所: ローカルPC(Windows コマンドプロンプトまたはPowerShell)
# Azure VPN 接続状態の確認
az network vpn-connection show \
--name example-aws-vpn \
--resource-group example-resource-group
実行結果
VPN接続基本情報:
{
"connectionStatus": "Connected",
"connectionProtocol": "IKEv2",
"connectionType": "IPsec",
"provisioningState": "Succeeded",
"egressBytesTransferred": 275516,
"ingressBytesTransferred": 0,
"enableBgp": false
}
問題なし
-
VPN接続状態:
"Connected"- VPNトンネル正常確立 -
プロビジョニング状態:
"Succeeded"- 設定適用成功 -
データ送信:
egressBytesTransferred: 275516- Azure→AWS方向にデータ送信中
要チェック!
-
データ受信:
ingressBytesTransferred: 0- AWS→Azure方向のデータ受信がない -
BGP無効:
enableBgp: false- 動的ルーティングが無効(静的ルート使用中)
3-2:AWS Site-to-Site VPN状態確認
実行内容
# VPN接続状態とトンネル状態を同時に確認
aws ec2 describe-vpn-connections \
--filters "Name=tag:Name,Values=example-azure-vpn" \
--query 'VpnConnections[0].{State:State,VgwTelemetry:VgwTelemetry[*].{Status:Status,StatusMessage:StatusMessage,OutsideIpAddress:OutsideIpAddress,AcceptedRouteCount:AcceptedRouteCount}}' \
--region ap-northeast-1
実行結果
{
"State": "available",
"VgwTelemetry": [
{
"Status": "UP",
"StatusMessage": "",
"OutsideIpAddress": "Y.Y.Y.Y",
"AcceptedRouteCount": 0
},
{
"Status": "DOWN",
"StatusMessage": "",
"OutsideIpAddress": "Z.Z.Z.Z",
"AcceptedRouteCount": 0
}
]
}
要チェック!
-
トンネル1:
Status: "UP"だがAcceptedRouteCount: 0(ルート受信なし) - トンネル2:
Status: "DOWN"(冗長性に問題があるが、検証のため今回は対応しない) -
ルート伝播問題: 両トンネルで
AcceptedRouteCount: 0(Azure側ルート(10.0.1.0/24)を受信していない)
3-3:VPN静的ルート設定確認
実行内容
# VPN接続の静的ルート設定確認
aws ec2 describe-vpn-connections \
--filters "Name=tag:Name,Values=example-azure-vpn" \
--query 'VpnConnections[0].Routes[*].{DestinationCidrBlock:DestinationCidrBlock,State:State,Source:Source}' \
--region ap-northeast-1
実行結果
[]
要チェック!
静的ルートが設定されていない。
空の配列 [] は、VPN接続に静的ルートが全く設定されていないことを示している。
これがAcceptedRouteCount: 0の直接的な原因
問題点
- 静的ルート未設定: Azure CIDR(10.0.1.0/24)の静的ルートが存在しない
- ルート情報なし: AWS側でAzure側のネットワーク情報を認識できない状態
調査3結果まとめ
問題なし
- Azure VPN Gateway:接続確立、データ送信中
- AWS VPN接続:基本的に利用可能状態
要対応!
- AWS側VPN静的ルート未設定:Azure CIDR(10.0.1.0/24)への静的ルートが存在しない
- ルート受信なし:AWS側でAzure側ネットワークを認識できていない
調査3結果の対応
対応内容
AWS側静的ルートの追加を行います。
# Azure CIDR用の静的ルート追加
aws ec2 create-vpn-connection-route \
--vpn-connection-id vpn-XXXXXXXXXXXXXXXXX \
--destination-cidr-block 10.0.1.0/24 \
--region ap-northeast-1
対応結果
# VPN状態の再確認
aws ec2 describe-vpn-connections \
--filters "Name=tag:Name,Values=example-azure-vpn" \
--query 'VpnConnections[0].{State:State,VgwTelemetry:VgwTelemetry[*].{Status:Status,AcceptedRouteCount:AcceptedRouteCount,StatusMessage:StatusMessage}}' \
--region ap-northeast-1
{
"State": "available",
"VgwTelemetry": [
{
"Status": "UP",
"AcceptedRouteCount": 1,
"StatusMessage": ""
},
{
"Status": "DOWN",
"AcceptedRouteCount": 1,
"StatusMessage": ""
}
]
}
以下の通りAWS側の設定を変更しました:
-
ルート受信成功:
AcceptedRouteCount: 1- Azure側ルート(10.0.1.0/24)を受信 -
VPN接続状態:
State: "available"- VPN接続は利用可能
AWS側VPN静的ルート設定の結果、ルート伝播問題が解決しました!
これにより、AWS側でAzure側ネットワーク(10.0.1.0/24)を認識できるようになった。
最終確認
テスト内容
# Azure VM内から実行
# 1. HTTPS 接続テスト
nc -zv 10.0.8.8 443
# 2. 実際のS3アクセステスト
aws s3 ls s3://example-bucket \
--endpoint-url https://bucket.vpce-XXXXXXXXXXXXXXXXX-XXXXXXXXX.s3.ap-northeast-1.vpce.amazonaws.com \
--region ap-northeast-1
テスト結果
# 1. HTTPS 接続テスト結果
azure-user@azure-vm:~$ nc -zv 10.0.8.8 443
Connection to 10.0.8.8 443 port [tcp/https] succeeded!
# 2. S3アクセステスト結果
azure-user@azure-vm:~$ aws s3 ls s3://example-bucket \
--endpoint-url https://bucket.vpce-XXXXXXXXXXXXXXXXX-XXXXXXXXX.s3.ap-northeast-1.vpce.amazonaws.com \
--region ap-northeast-1
2025-10-17 02:24:41 6 sample.txt
解決完了!
テストまとめ:
-
HTTPS接続成功:
Connection to 10.0.8.8 443 port [tcp/https] succeeded! -
S3アクセス成功: タイムアウトせず、バケット一覧表示成功(S3に格納されている
sample.txtファイルが表示された)
調査結果と対応まとめ
原因分析
調査の結果、今回の問題が発生した根本的な原因を整理します。
技術的な原因
主要な原因(2つ):
- Azure側ルーティング問題: サブネットにカスタムルートテーブルが未設定で、AWS VPC CIDR(10.0.8.0/24)への明示的なルートが存在しなかった
- AWS側VPN静的ルート未設定: VPN接続にAzure CIDR(10.0.1.0/24)の静的ルートが設定されていなかった
設定ミスの詳細
Azure側の設定不備:
- デフォルトルートテーブルではAWS VPC宛のトラフィックがインターネットゲートウェイに向かってしまう
- カスタムルートテーブルの設定とサブネットへの関連付けが未実施
AWS側の設定不備:
- Site-to-Site VPN接続での静的ルート定義の漏れ
- BGP無効のため動的ルート学習ができず手動設定が必要
チェック項目
今後同様の事象が発生した場合の確認すべき項目を整理します。
環境別
Azure側:
- サブネットにカスタムルートテーブルが関連付けられているか
- AWS VPC CIDRへの静的ルート(next-hop: VirtualNetworkGateway)が設定されているか
- VPN Gateway が正常に動作しているか
- AWS VPN接続のトンネル状態(Status: UP/DOWN)
AWS側:
- VPN接続にオンプレミス(Azure)CIDRの静的ルートが設定されているか
- AcceptedRouteCount が0でないか
- Interface EndpointのセキュリティグループがオンプレミスCIDRからのアクセスを許可しているか
今回の解決アプローチ
- Azure側ルーティング問題:カスタムルートテーブルの作成と設定
- AWS側VPN静的ルート未設定:静的ルートの追加設定
参考情報
この記事で参考にした情報です。
-
Azure Site-to-Site VPN Gateway 設定
https://docs.microsoft.com/en-us/azure/vpn-gateway/tutorial-site-to-site-portal ↩ -
AWS Site-to-Site VPN でのルーティング
https://docs.aws.amazon.com/vpn/latest/s2svpn/VPNRoutingTypes.html ↩ -
AWS PrivateLink for Amazon S3
https://docs.aws.amazon.com/AmazonS3/latest/userguide/privatelink-interface-endpoints.html ↩ -
AWS Gateway endpoints for Amazon S3
https://docs.aws.amazon.com/vpc/latest/privatelink/vpc-endpoints-s3.html ↩