次の方法で共有


仮想ネットワークに関する問題のトラブルシューティング

この記事では、Microsoft Power Platform の 仮想ネットワーク の一般的なシナリオをトラブルシューティングするためのガイダンスを提供します。 ここでは、 Microsoft.PowerPlatform.EnterprisePolicies PowerShell モジュールを使用して、仮想ネットワーク構成に関連する問題を特定して解決することに重点を置いています。

診断 PowerShell モジュールを使用する

Microsoft.PowerPlatform.EnterprisePolicies PowerShell モジュールは、Power Platform の仮想ネットワーク構成に関連する問題の診断とトラブルシューティングに役立ちます。 このツールを使用して、Power Platform 環境と仮想ネットワークの間の接続を確認できます。 また、これを使用して、問題の原因となっている可能性のある構成の誤りを特定することもできます。 この診断 PowerShell モジュールは、PowerShell ギャラリーとその GitHub リポジトリ である PowerPlatform-EnterprisePolicies から入手できます。

モジュールをインストールする

診断 PowerShell モジュールをインストールするには、次の PowerShell コマンドを実行します。

Install-Module -Name Microsoft.PowerPlatform.EnterprisePolicies

診断関数を実行する

モジュールをインストールしたら、次のコマンドを実行して PowerShell セッションにインポートします。

Import-Module Microsoft.PowerPlatform.EnterprisePolicies

このモジュールには、仮想ネットワーク構成に関連する問題を診断およびトラブルシューティングするためのいくつかの機能が含まれています。 主な機能の一部を次に示します。

  • Get-EnvironmentRegion: 指定された Power Platform 環境のリージョンを取得します。
  • Get-EnvironmentUsage: 指定された Power Platform 環境の使用状況に関する情報を提供します。
  • Test-DnsResolution: 指定されたドメイン名の DNS 解決をテストします。
  • Test-NetworkConnectivity: Power Platform 環境とターゲット リソースの間のネットワーク接続をテストします。
  • Test-TLSHandshake: Power Platform 環境と宛先リソースの間で TLS ハンドシェイクを確立できるかどうかをテストします。

診断モジュール内で使用可能な関数の完全な一覧については、 Microsoft.PowerPlatform.EnterprisePolicies モジュールを参照してください。

診断モジュールの問題を報告する

診断モジュールの実行時に問題が発生した場合は、モジュールがホストされている GitHub リポジトリを通じて報告します。 リポジトリは PowerPlatform-EnterprisePolicies にあります。

問題を報告するには、リポジトリの [問題 ] セクションに移動し、 新しい問題を開きます。 問題の調査に役立つ可能性のあるエラー メッセージやログ エントリなど、発生した問題に関する詳細情報を提供します。 レポートに機密情報を含めないでください。

一般的な問題のトラブルシューティング

1 つの環境は機能しますが、別の環境では動作しません

すべてが正しく構成されていても問題が引き続き発生する場合は、診断 PowerShell モジュールの Get-EnvironmentRegion 関数を使用して、Power Platform 環境のリージョンが同じかどうかを確認します。 次のコマンドを実行します。

Get-EnvironmentRegion -EnvironmentId "<EnvironmentId>"

環境が異なるリージョンにあり、1 つが機能しても動作しない場合、問題は障害が発生したリージョンの仮想ネットワークのセットアップにあります。 完全セットアップが正しく構成されていることを確認するには、両方のリージョンに対してさらに診断コマンドを実行します。 リージョンを指定するには、 -Region パラメーターを含めます。 例えば次が挙げられます。

Test-DnsResolution -EnvironmentId "<EnvironmentId>" -HostName "<HostName>" -Region "<AzureRegion>"

環境は特定の Power Platform 地域に属しています。 ただし、Power Platform リージョンは 2 つの Azure リージョンにまたがる場合があります。 環境はどちらのリージョンにも配置でき、それらの間で自動的にフェールオーバーすることもできます。 そのため、高可用性と接続性を確保するには、Power Platform リージョンに関連付けられている両方の Azure リージョンで仮想ネットワークを構成する必要があります。 仮想ネットワーク機能をサポートする Azure リージョンに Power Platform リージョンをマップする方法については、「 Power Platform リージョン」を参照してください。

ホスト名が見つかりません

ホスト名の解決に影響する問題が発生した場合は、診断 PowerShell モジュールの Test-DnsResolution 関数を使用して、ホスト名が正しく解決されているかどうかを確認します。 次のコマンドを実行します。

Test-DnsResolution -EnvironmentId "<EnvironmentId>" -HostName "<HostName>"

このコマンドは、Power Platform 環境のコンテキストで、指定されたホスト名の DNS 解決をテストします。 要求は委任されたサブネットから開始され、仮想ネットワーク用に構成された DNS サーバーを使用してホスト名の解決を試みます。 ホスト名が正しく解決されない場合は、DNS 設定を確認して、ホスト名が正しく構成されていることを確認する必要があります。

Important

DNS のセットアップが正しくなくて、仮想ネットワークの DNS サーバー設定を更新する必要がある場合は、「 Microsoft.PowerPlatform/enterprisePolicies」に委任された後に仮想ネットワークの DNS アドレスを更新できますか?

要求では、プライベート IP アドレスではなくパブリック IP アドレスが使用されます

リソースへの要求がプライベート IP アドレスではなくパブリック IP アドレスを使用する問題が発生した場合、リソース ホスト名の DNS 解決によってパブリック IP アドレスが返される可能性があります。 この問題は、Azure リソースと Azure 以外のリソースの両方に影響する可能性があります。

プライベート エンドポイントのない Azure 以外のリソース

Azure 以外のリソースにプライベート エンドポイントはありませんが、仮想ネットワークからアクセスできる場合は、リソースのホスト名をプライベート IP アドレスに解決するように DNS サーバーを構成する必要があります。 リソースのホスト名をプライベート IP アドレスにマップする DNS A レコードを DNS サーバーに追加します。

  • カスタム DNS サーバーを使用している場合は、A レコードをサーバーに直接追加します。
  • Azure 提供の DNS を使用している場合は、 Azure プライベート DNS ゾーンを作成し、仮想ネットワークにリンクします。 次に、A レコードをプライベート DNS ゾーンに追加します。

このマッピングにより、そのプライベート IP アドレスを使用してリソースにアクセスできるようになります。

プライベート エンドポイントを持つ Azure リソース

Azure リソースにプライベート エンドポイントがある場合、リソースのホスト名の DNS 解決は、プライベート エンドポイントに関連付けられているプライベート IP アドレスを返す必要があります。 DNS 解決が代わりにパブリック IP アドレスを返す場合は、DNS 構成にレコードがない可能性があります。 次の手順に従います。

  1. リソースの種類に対してプライベート DNS ゾーンが存在することを確認します。 たとえば、Azure SQL Database の場合、privatelink.database.windows.net です。 プライベート DNS ゾーンが存在しない場合は、 作成します
  2. プライベート DNS ゾーンが仮想ネットワークにリンクされていることを確認します。 プライベート DNS ゾーンが仮想ネットワークにリンクされていない場合は、 リンクします

プライベート DNS ゾーンを仮想ネットワークにリンクすると、リソースホスト名はプライベート エンドポイントに関連付けられているプライベート IP アドレスに解決されます。

DNS 構成の変更をテストする

DNS 構成を更新した後、診断 PowerShell モジュールの Test-DnsResolution 関数を使用して、ホスト名が正しいプライベート IP アドレスに解決されることを確認します。 次のコマンドを実行します。

Test-DnsResolution -EnvironmentId "<EnvironmentId>" -HostName "<HostName>"

リソースに接続できない

リソースへの接続に影響する問題が発生した場合は、診断 PowerShell モジュールの Test-NetworkConnectivity 関数を使用して接続を確認します。 次のコマンドを実行します。

Test-NetworkConnectivity -EnvironmentId "<EnvironmentId>" -Destination "<ResourceAddress>" -Port 1433

このコマンドは、Power Platform 環境のコンテキストで、指定された宛先とポートへの TCP 接続を確立しようとします。 要求は委任されたサブネットから開始され、仮想ネットワークからのネットワーク構成を使用して、指定された宛先への接続を試みます。 接続に失敗した場合は、ネットワーク設定を確認して、仮想ネットワークから宛先に到達できることを確認する必要がある場合があります。 正常な接続は、Power Platform 環境と指定されたリソースの間にネットワーク接続が存在することを示します。

このコマンドは、指定された宛先とポートへの TCP 接続を確立できるかどうかをテストします。 リソースが使用可能かどうか、またはアプリケーション レベルの問題がリソースへのアクセスを妨げている可能性があるかどうかをテストしません。

TLS ハンドシェイクを確立できない

一部のファイアウォールでは TCP 接続を確立できますが、リソースへの実際のトラフィック (HTTPS など) はブロックされます。 したがって、 Test-NetworkConnectivity 関数がネットワーク接続を示している場合でも、その状態ではリソースが完全にアクセス可能であることが保証されません。

Test-TLSHandshake 関数を使用して、ハンドシェイクを確立できない理由を診断します。 次のコマンドを実行します。

Test-TLSHandshake -EnvironmentId "<EnvironmentId>" -Destination "<ResourceAddress>" -Port 1433

このコマンドは、ハンドシェイクが失敗した理由をデバッグするのに役立つ情報を返します。 出力には、サーバーが提示した証明書、暗号スイート、プロトコル、SSL エラーの説明が含まれます。

Important

パブリックに信頼された証明書のみがサポートされます。 詳細については、「不明な証明書をサポートしていますか?」を参照してください。

接続は成功したが、アプリケーションはまだ動作していない

接続テストが成功しても、アプリケーションで問題が発生している場合は、アプリケーション レベルの設定と構成を確認します。

  1. 委任されたサブネットからリソースへのアクセスがファイアウォールで許可されていることを確認します。
  2. リソースが提示する証明書がパブリックに信頼されていることを確認します。
  3. リソースへのアクセスを妨げる認証または承認の問題がないことを確認します。

診断 PowerShell モジュールを使用して問題を診断または解決できない場合があります。 この場合は、仮想ネットワークに委任なしでサブネットを作成し、そのサブネットに仮想マシン (VM) をデプロイします。 その後、VM を使用して、ネットワーク トラフィックのチェック、ログの分析、アプリケーション レベルの接続のテストなど、さらに診断とトラブルシューティングの手順を実行できます。