0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

AzureからAWSへのVPN接続タイムアウトのトラブルシュート

Last updated at Posted at 2025-10-29

はじめに

本記事では、
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

実行結果

  1. エンドポイントタイプ: "Interface" → VPN経由でのアクセスが可能な構成
  2. エンドポイント状態: "available" → 正常に動作中
  3. サービス名: com.amazonaws.ap-northeast-1.s3 → S3 Interface Endpointとして正しく設定済み
  4. Private DNS設定: "PrivateDnsEnabled": false → エンドポイント固有のDNS名使用(後のDNS解決テストで正常動作確認済み)
  5. セキュリティグループ: 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

良好な設定項目

  1. DNS解決成功: エンドポイントのDNS名が正常に解決されている
  2. 適切なIPアドレス: 返されたIP 10.0.8.8 がAWS VPC CIDR(10.0.8.0/24)の範囲内
  3. Interface Endpoint ENI: このIPはInterface EndpointのENI(Elastic Network Interface)のプライベートIPアドレス

確認の結果、問題はありませんでした。

調査1結果まとめ

問題なし

  • S3 Interface Endpointは正しく設定されている
  • DNS解決も正常に機能している
  • Gateway Endpointの制約(VPN経由アクセス不可)には該当しない34

調査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の設定状況

  1. SSH インバウンドルール: TCP 22番ポートを許可(正常)
  2. 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)

要チェック!

  1. カスタムルートテーブル未設定: サブネットにカスタムルートテーブルが関連付けられていない
  2. ルーティング設定なし: VPN接続にルーティング設定が存在しない
  3. 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

対応結果

以下の通り設定を変更しました:

  1. カスタムルートテーブル: provisioningState: "Succeeded"
  2. 静的ルート: addressPrefix: "10.0.8.0/24"nextHopType: "VirtualNetworkGateway"
  3. サブネット: カスタムルートテーブルを関連付け

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
}

問題なし

  1. VPN接続状態: "Connected" - VPNトンネル正常確立
  2. プロビジョニング状態: "Succeeded" - 設定適用成功
  3. データ送信: egressBytesTransferred: 275516 - Azure→AWS方向にデータ送信中

要チェック!

  1. データ受信: ingressBytesTransferred: 0 - AWS→Azure方向のデータ受信がない
  2. 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. トンネル1: Status: "UP" だが AcceptedRouteCount: 0 (ルート受信なし)
  2. トンネル2: Status: "DOWN" (冗長性に問題があるが、検証のため今回は対応しない)
  3. ルート伝播問題: 両トンネルで 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の直接的な原因

問題点

  1. 静的ルート未設定: Azure CIDR(10.0.1.0/24)の静的ルートが存在しない
  2. ルート情報なし: 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側の設定を変更しました:

  1. ルート受信成功: AcceptedRouteCount: 1 - Azure側ルート(10.0.1.0/24)を受信
  2. 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

解決完了!

テストまとめ:

  1. HTTPS接続成功: Connection to 10.0.8.8 443 port [tcp/https] succeeded!
  2. S3アクセス成功: タイムアウトせず、バケット一覧表示成功(S3に格納されているsample.txtファイルが表示された)

調査結果と対応まとめ

原因分析

調査の結果、今回の問題が発生した根本的な原因を整理します。

技術的な原因

主要な原因(2つ)

  1. Azure側ルーティング問題: サブネットにカスタムルートテーブルが未設定で、AWS VPC CIDR(10.0.8.0/24)への明示的なルートが存在しなかった
  2. 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静的ルート未設定:静的ルートの追加設定

参考情報

この記事で参考にした情報です。

  1. Azure Site-to-Site VPN Gateway 設定
    https://docs.microsoft.com/en-us/azure/vpn-gateway/tutorial-site-to-site-portal

  2. AWS Site-to-Site VPN でのルーティング
    https://docs.aws.amazon.com/vpn/latest/s2svpn/VPNRoutingTypes.html

  3. AWS PrivateLink for Amazon S3
    https://docs.aws.amazon.com/AmazonS3/latest/userguide/privatelink-interface-endpoints.html

  4. AWS Gateway endpoints for Amazon S3
    https://docs.aws.amazon.com/vpc/latest/privatelink/vpc-endpoints-s3.html

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?