AWS Client VPN のトラブルシューティング: VPC へのトンネル接続の問題 - AWS Client VPN

AWS Client VPN のトラブルシューティング: VPC へのトンネル接続の問題

AWS Client VPN 接続で接続の問題が発生した場合は、この体系的なトラブルシューティングアプローチに従って問題を特定し、解決してください。このセクションでは、リモートクライアントと Amazon VPC リソース間の一般的なクライアント VPN 接続の問題を診断する手順について説明します。

ネットワーク接続の前提条件

クライアント VPN 接続をトラブルシューティングする前に、次のネットワークの前提条件を確認してください。

  • クライアント VPN エンドポイントサブネットが、(インターネットゲートウェイまたは NAT ゲートウェイ経由で) インターネットに接続されていることを確認します 。

  • 高可用性のために、クライアント VPN エンドポイントが異なるアベイラビリティーゾーンのサブネットに関連付けられていることを確認します。

  • VPC に十分な IP アドレススペースがあり、クライアント CIDR ブロックと競合していないことを確認します。

  • ターゲットサブネットに適切なルートテーブルが関連付けられていることを確認します。

クライアント VPN エンドポイントのステータスを確認する

まず、クライアント VPN エンドポイントが正しい状態であることを確認します。

  1. AWS CLI を使用して、クライアント VPN エンドポイントのステータスを確認します。

    aws ec2 describe-client-vpn-endpoints --region your-region
  2. 出力でエンドポイントの状態を探します。状態は available である必要があります。

  3. エンドポイントにターゲットネットワーク (サブネット) が関連付けられていることを確認します。

  4. 状態が available でない場合は、設定の問題を示すエラーメッセージや保留中の状態がないか確認します。

クライアント接続を確認する

クライアント VPN エンドポイントへのクライアント接続のステータスを確認します。

  1. 以下のアクティブなクライアント接続を確認します。

    aws ec2 describe-client-vpn-connections --client-vpn-endpoint-id cvpn-endpoint-id --region your-region
  2. 出力の接続ステータスとエラーメッセージを確認します。

  3. クライアント認証ログで失敗した認証の試行を確認します。

  4. クライアントが設定されたクライアント CIDR ブロックから IP アドレスを受信していることを確認します。

注記

クライアントが接続できない場合は、認証設定、承認ルール、またはネットワーク接続に問題がある可能性があります。

クライアント認証を確認する

認証の問題は、クライアント VPN 接続の問題の一般的な原因です。

  • 相互認証では、クライアント証明書が有効であり、有効期限が切れていないことを確認します。

  • Active Directory 認証の場合は、ユーザー認証情報とドメイン接続を確認します。

  • SAML ベースのフェデレーション認証の場合は、IdP 設定とユーザーのアクセス許可を確認してください。

  • 詳細なエラー情報については、CloudWatch の認証ログを確認してください。

  • エンドポイントで設定された認証方法がクライアント設定と一致していることを確認します。

承認ルールを確認する

承認ルールは、クライアントがアクセスできるネットワークリソースを制御します。

  1. 現在の承認ルールを一覧表示します。

    aws ec2 describe-client-vpn-authorization-rules --client-vpn-endpoint-id cvpn-endpoint-id --region your-region
  2. クライアントがアクセスする必要があるターゲットネットワークにルールが存在することを確認します。

  3. ルールで正しい Active Directory グループが指定されていることを確認します (AD 認証を使用している場合)。

  4. 承認ルールが active の状態であることを確認します。

クライアント VPN ルートを検証する

適切なルーティング設定は、クライアント VPN 接続に不可欠です。

  1. クライアント VPN エンドポイントルートを確認する

    aws ec2 describe-client-vpn-routes --client-vpn-endpoint-id cvpn-endpoint-id --region your-region
  2. クライアントがアクセスする必要があるターゲットネットワークにルートが存在することを確認します。

  3. Amazon VPC ルートテーブルをチェックして、リターントラフィックがクライアント VPN エンドポイントに到達できることを確認します。

    aws ec2 describe-route-tables --filters "Name=vpc-id,Values=vpc-id" --region your-region
  4. ターゲットネットワークの関連付けが正しく設定されていることを確認します。

セキュリティグループとネットワーク ACL を確認する

セキュリティグループとネットワーク ACL は、クライアント VPN トラフィックをブロックできます。

  1. ターゲット EC2 インスタンスのセキュリティグループを確認する

    aws ec2 describe-security-groups --group-ids sg-xxxxxxxxx --region your-region
  2. インバウンドルールでクライアント VPN CIDR ブロックからのトラフィックが許可されていることを確認します。

    • クライアント VPN CIDR からの SSH (ポート 22): 10.0.0.0/16

    • クライアント VPN CIDR からの HTTP (ポート 80): 10.0.0.0/16

    • クライアント VPN CIDR からの HTTPS (ポート 443): 10.0.0.0/16

    • カスタムアプリケーションポート (必要に応じて)

  3. クライアント VPN エンドポイントセキュリティグループ (該当する場合) では、以下が許可されていることを確認します。

    • 0.0.0.0/0 からの UDP ポート 443 (OpenVPN)

    • VPC CIDR ブロックへのすべてのアウトバウンドトラフィック

  4. ネットワーク ACL がトラフィックをブロックしていないことを確認します。ネットワーク ACL はステートレスであるため、インバウンドルールとアウトバウンドルールの両方を設定する必要があります。

  5. 送信しようとしている特定のトラフィックのインバウンドルールとアウトバウンドルールの両方を確認します。

クライアント接続をテストする

クライアント VPN クライアントから Amazon VPC リソースへの接続をテストします。

  1. 接続されたクライアント VPN クライアントから、Amazon VPC リソースへの接続をテストします。

    ping vpc-resource-ip traceroute vpc-resource-ip
  2. 特定のアプリケーションの接続性をテストします。

    telnet vpc-resource-ip port
  3. プライベート DNS 名を使用する場合は、DNS 解決を検証します。

    nslookup private-dns-name
  4. スプリットトンネリングが有効になっている場合は、インターネットリソースへの接続をテストします。

クライアントデバイスを診断する

クライアントデバイスで次のチェックを実行します。

  1. クライアント設定ファイル (.ovpn) に正しい設定が含まれていることを確認します。

    • 正しいサーバーエンドポイント URL

    • 有効なクライアント証明書とプライベートキー

    • 適切な認証方法の設定

  2. クライアントログで接続エラーを確認します。

    • Windows: [イベント ビューワー] → [アプリケーションとサービス ログ] → [OpenVPN]

    • macOS: [コンソール] アプリで「Tunnelblick」または「OpenVPN」を検索する

    • Linux: /var/log/openvpn/ または systemd ジャーナル

  3. クライアントからの基本的なネットワーク接続をテストします。

    ping 8.8.8.8 nslookup cvpn-endpoint-id.cvpn.region.amazonaws.com

DNS 解決のトラブルシューティング

DNS の問題により、プライベート DNS 名を使用したリソースへのアクセスが妨げられる可能性があります。

  1. DNS サーバーがクライアント VPN エンドポイントで設定されているかどうかを確認します。

    aws ec2 describe-client-vpn-endpoints --client-vpn-endpoint-ids cvpn-endpoint-id --query 'ClientVpnEndpoints[0].DnsServers'
  2. クライアントから DNS 解決をテストします。

    nslookup private-resource.internal dig private-resource.internal
  3. カスタム DNS 解決を使用する場合は、Route 53 Resolver ルールを確認します。

  4. セキュリティグループがクライアント VPN CIDR から DNS サーバーへの DNS トラフィック (UDP/TCP ポート 53) を許可していることを確認します。

パフォーマンスのトラブルシューティング

クライアント VPN 接続のパフォーマンス問題に対処します。

  • 受信バイト/送信バイトの CloudWatch メトリクスを使用して帯域幅使用率をモニタリングします。

  • クライアントから継続的な ping テストを実施してパケット損失をチェックします。

  • クライアント VPN エンドポイントが接続制限に達していないことを確認します。

  • 負荷分散のため、複数のクライアント VPN エンドポイントを使用することを検討します。

  • さまざまなクライアントロケーションでテストを実施して、リージョンのパフォーマンスの問題を特定します。

クライアント VPN メトリクスのモニタリング

CloudWatch を使用してクライアント VPN エンドポイントメトリクスをモニタリングします。

  1. アクティブな接続メトリクスを確認します。

    aws cloudwatch get-metric-statistics \ --namespace AWS/ClientVPN \ --metric-name ActiveConnectionsCount \ --dimensions Name=Endpoint,Value=cvpn-endpoint-id \ --start-time start-time \ --end-time end-time \ --period 300 \ --statistics Average
  2. 認証失敗のメトリクスを確認します。

    aws cloudwatch get-metric-statistics \ --namespace AWS/ClientVPN \ --metric-name AuthenticationFailures \ --dimensions Name=Endpoint,Value=cvpn-endpoint-id \ --start-time start-time \ --end-time end-time \ --period 300 \ --statistics Sum
  3. 受信バイトや送信バイト、受信パケットや送信パケットなど、他の利用可能なメトリクスを確認します。

クライアント VPN ログを確認する

クライアント VPN 接続ログは、接続の試行とエラーに関する詳細情報を提供します。

  • クライアント VPN 接続のログ記録がまだ設定されていない場合は有効にします。

  • CloudWatch ログで、接続の試行、認証の失敗、承認エラーを確認します。

  • 接続の問題の根本原因を示す特定のエラーコードとメッセージを探します。

  • 失敗した接続で、設定の問題を示すパターンがないか確認します。

一般的な問題と解決策

クライアント VPN 接続に影響する可能性がある一般的な問題:

認証の失敗

クライアント証明書が有効期限切れまたは無効になっているか、Active Directory 認証情報が正しくありません。認証設定と認証情報が有効であることを確認してください。

承認ルールがない

承認ルールがないか、正しくないため、クライアントはターゲットネットワークにアクセスできません。必要なネットワークに適切な承認ルールを追加してください。

スプリットトンネリングの問題

スプリットトンネリング設定により、トラフィックが誤ってルーティングされています。スプリットトンネリング設定を確認し、必要に応じて調整してください。

クライアント IP プールの枯渇

クライアント CIDR ブロックに使用可能な IP アドレスがありません。クライアント CIDR 範囲を拡張するか、未使用のクライアントを切断してください。

MTU の問題

MTU のサイズ制限により、大きなパケットがドロップされています。MTU を 1436 バイトに設定するか、クライアントデバイスで Path MTU Discovery を有効にしてください。

DNS 解決の問題

クライアントがプライベート DNS 名を解決できません。DNS サーバー設定を確認し、DNS トラフィックがセキュリティグループを通じて許可されるようにしてください。

IP 範囲の重複

クライアント CIDR ブロックがローカルネットワーク範囲と競合しています。クライアント CIDR とローカルネットワーク間の重複する IP アドレス範囲を確認して解決してください。

TLS ハンドシェイクの失敗

TLS ネゴシエーション中に接続が失敗します。証明書が有効であることと、暗号スイートが正しいことを確認し、クライアント証明書とサーバー証明書が正しく設定されていることを確認してください。

ルート伝播の遅延

クライアントは新しいルートをすぐには利用できません。クライアント VPN ルートの変更後、ルートの伝播に 1~2 分かかります。

接続の切断/不安定な接続

接続が頻繁に切断されるか、不安定になっています。クライアントデバイスのネットワーク輻輳、ファイアウォールの干渉、または電源管理設定を確認してください。