概要
Microsoft Azure で仮想ネットワークまたはサブネットを削除または変更しようとすると、エラーが発生する場合があります。 ゲートウェイ、プライベート エンドポイント、サービス エンドポイント、サブネット委任、孤立したネットワーク インターフェイスなどのリソースは、削除や変更をブロックできます。 この記事では、これらの問題の解決に役立つトラブルシューティング手順について説明します。
仮想ネットワークとサブネットに関する問題のトラブルシューティング
仮想ネットワークの削除
- 仮想ネットワーク ゲートウェイが仮想ネットワークで実行されているかどうかを確認します。
- 仮想ネットワークでアプリケーション ゲートウェイが実行されていないか確認する
- Azureコンテナー インスタンスがまだ仮想ネットワークに存在するかどうかを確認します。
- 仮想ネットワークで Microsoft Entra Domain Services が有効になっているかどうかを確認します。
- 仮想ネットワークが他のリソースに接続されているかどうかを確認します。
- 仮想マシンがまだ仮想ネットワークで実行されているかどうかを確認します。
- 仮想ネットワークが移行中にスタックしているかどうかを確認します。
- 仮想ネットワークが仮想ネットワーク統合のために Web アプリによって使用されたかどうかを確認します。
サブネットの削除
- プライベート エンドポイントがサブネットに存在するかどうかを確認します。
- サービス エンドポイントがサブネットに構成されているかどうかを確認します。
- サブネットに委任があるかどうかを確認します。
- サービス関連付けリンクがサブネット上に存在するかどうかを確認します。
- 孤立したネットワーク インターフェイスがサブネットに残っているかどうかを確認します。
- サブネットが Azure Bastion または Azure Firewall で使用されているかどうかを確認します。
サブネットの変更
トラブルシューティングの手順
仮想ネットワーク ゲートウェイが仮想ネットワークで実行されているかどうかを確認する
仮想ネットワークを削除するには、まず仮想ネットワーク ゲートウェイを削除します。
クラシック仮想ネットワークの場合は、Azure portal のクラシック仮想ネットワークの [概要] ページに移動します。 [VPN 接続] セクションで、ゲートウェイが仮想ネットワークで実行されている場合は、ゲートウェイの IP アドレスが表示されます。
仮想ネットワークの場合は、仮想ネットワークの [概要 ] ページに移動します。 仮想ネットワーク ゲートウェイの 接続されているデバイス を確認します。
ゲートウェイを削除する前に、ゲートウェイ内の Connection オブジェクトを削除します。
アプリケーション ゲートウェイが仮想ネットワークで実行されているかどうかを確認する
仮想ネットワークの [概要 ] ページに移動します。 アプリケーション ゲートウェイの 接続済みデバイス を確認します。
アプリケーション ゲートウェイがある場合は、仮想ネットワークを削除する前に、ゲートウェイを削除する必要があります。
仮想ネットワークに Azure Container Instances がまだ存在するかどうかを確認する
注
Azure Container Instances API バージョン 2021-07-01以降、Azure Container Instances はネットワーク プロファイルを使用しなくなりました。 この API バージョンまたはより新しい API バージョンを使用する場合、ポータルではネットワーク プロファイルは作成されません。 次のガイダンスは、古い API バージョンを使用するレガシ デプロイにのみ適用されます。
Azure ポータルで、リソース グループの Overview ページに移動します。
リソース グループのリソースの一覧のヘッダーで、[非表示の種類の 表示] を選択します。 ポータルでは、ネットワーク プロファイルの種類が既定で非表示になります。
コンテナー グループに関連するネットワーク プロファイルを選択します。
を選択して、を削除します。
サブネットまたは仮想ネットワークをもう一度削除します。
これらの手順で問題が解決しない場合は、これらのAzure CLI コマンドを使用してリソースをクリーンアップします。
仮想ネットワークで Microsoft Entra Domain Services が有効になっているかどうかを確認する
Microsoft Entra Domain Services が有効になっており、仮想ネットワークに接続されている場合、この仮想ネットワークを削除することはできません。
マネージド ドメインを削除するには、「 Microsoft Entra Domain Services マネージド ドメインを削除する」を参照してください。
仮想ネットワークが他のリソースに接続されているかどうかを確認する
回線リンク、接続、および仮想ネットワーク ピアリングを確認します。 これらのリソースのいずれかが原因で、仮想ネットワークの削除が失敗する可能性があります。
次の推奨削除順序を使用します。
- ゲートウェイ接続
- ゲートウェイ
- IP
- 仮想ネットワーク ピアリング
- App Service Environment (ASE)
仮想マシンがまだ仮想ネットワークで実行されているかどうかを確認する
仮想ネットワークに仮想マシンがないことを確認します。
仮想ネットワークが移行中にスタックしているかどうかを確認する
仮想ネットワークが移行状態でスタックしている場合は、削除できません。 Azure PowerShell で次のコマンドを実行して移行を中止し、仮想ネットワークを削除します。
Move-AzureVirtualNetwork -VirtualNetworkName "Name" -Abort
仮想ネットワークが仮想ネットワーク統合のために Web アプリによって使用されたかどうかを確認する
過去に仮想ネットワークを Web アプリと統合したが、仮想ネットワーク統合を切断せずに Web アプリを削除した場合は、「仮想ネットワーク統合を切断 する前に App Service プランまたは Web アプリを削除する」を参照してください。
サブネットの削除エラーのトラブルシューティング
サブネットにプライベート エンドポイントが存在するかどうかを確認する
サブネットにプライベート エンドポイントがある場合、サブネットを削除することはできません。 サブネットを削除する前に、すべてのプライベート エンドポイントを削除する必要があります。
- Azure portal で仮想ネットワークに移動し、[ サブネット] を選択します。
- 削除するサブネットを選択し、[ プライベート エンドポイント ] 列を確認します。
- プライベート エンドポイントが存在する場合は、各プライベート エンドポイント リソースに移動して削除します。
または、Azure CLI を使用してサブネット内のプライベート エンドポイントを識別します。
az network vnet subnet show \
--resource-group <resource-group> \
--vnet-name <vnet-name> \
--name <subnet-name> \
--query "privateEndpoints[].id" \
--output tsv
各プライベート エンドポイントを削除します。
az network private-endpoint delete \
--resource-group <resource-group> \
--name <private-endpoint-name>
サービス エンドポイントがサブネットに構成されているかどうかを確認する
サービス エンドポイントはサブネット レベルの構成であり、サブネットの削除をブロックしません。 Azure Virtual Network の FAQ に記載されているように、サービス エンドポイントが有効になっている場合でもサブネットを削除できます。
ただし、より広範なクリーンアップまたは変更の一環としてサービス エンドポイントを削除する必要がある場合は、次の手順を使用します。
- Azure portal で仮想ネットワークに移動し、[ サブネット] を選択します。
- サブネットを選択し、[ サービス エンドポイント ] セクションを確認します。
- 構成済みのサービス エンドポイントを削除し、[ 保存] を選択します。
Azure CLI を使用して、サービス エンドポイントを確認および削除します。
az network vnet subnet show \
--resource-group <resource-group> \
--vnet-name <vnet-name> \
--name <subnet-name> \
--query "serviceEndpoints[].service" \
--output tsv
サブネットを更新してサービス エンドポイントを削除します。
az network vnet subnet update \
--resource-group <resource-group> \
--vnet-name <vnet-name> \
--name <subnet-name> \
--service-endpoints '[]'
サブネットに委任があるかどうかを確認する
サブネット委任は、 Microsoft.DBforPostgreSQL/flexibleServers、 Microsoft.Web/serverFarms、 Microsoft.ContainerService/managedClustersなど、特定の Azure サービスにサブネットを割り当てます。 委任を使用するすべてのリソースを削除してから委任自体を削除するまで、委任されたサブネットを削除することはできません。
一般的なサブネット委任は次のとおりです。
| 権限委譲 | Service |
|---|---|
Microsoft.ContainerInstance/containerGroups |
Azure Container Instances |
Microsoft.DBforPostgreSQL/flexibleServers |
Azure Database for PostgreSQL - フレキシブル サーバー |
Microsoft.DBforMySQL/flexibleServers |
Azure Database for MySQL - フレキシブル サーバー |
Microsoft.Web/serverFarms |
Azure App Service/Azure Functions |
Microsoft.ContainerService/managedClusters |
Azure Kubernetes Service (AKS) |
Microsoft.Sql/managedInstances |
Azure SQL Managed Instance |
Microsoft.Network/dnsResolvers |
Azure DNS Private Resolver |
Microsoft.Netapp/volumes |
Azure NetApp Files |
Microsoft.ApiManagement/service |
Azure API Management |
Azure CLI を使用して委任を確認する:
az network vnet subnet show \
--resource-group <resource-group> \
--vnet-name <vnet-name> \
--name <subnet-name> \
--query "delegations[].{name:name, service:serviceName}" \
--output table
委任を削除するには、まず、委任されたサブネットを使用するすべてのリソースを削除します。 次に、次のコマンドを使用して委任を削除します。
az network vnet subnet update \
--resource-group <resource-group> \
--vnet-name <vnet-name> \
--name <subnet-name> \
--remove delegations
サービス関連付けリンクがサブネット上に存在するかどうかを確認する
Azure Container Instances、Azure App Service、Azure SQL Managed Instance などの Azure サービスは、リソースをサブネットにデプロイするときにサービスの関連付けリンクを作成します。 これらのリンクにより、デプロイされたリソースを削除した後でもサブネットが削除されません。
Azure CLI を使用して、サービスの関連付けリンクを確認します。
az network vnet subnet show \
--resource-group <resource-group> \
--vnet-name <vnet-name> \
--name <subnet-name> \
--query "serviceAssociationLinks[].{link:link, linkedResourceType:linkedResourceType}" \
--output table
リソースを削除した後もサービスの関連付けリンクが残っている場合は、クリアに数分かかる場合があります。 続く場合は、次の手順を試してください。
- リンクされたサービスのリソースがまだサブネットにデプロイされていないことを確認します。
- プラットフォームがリンクをクリーンアップするまで 10 ~ 15 分待ちます。
-
linkedResourceType値を確認し、関連するリソース固有のガイダンスに従います。 次のガイダンスが適用されない場合、またはリンクが残っている場合は、Azure サポート要求を開き、linkedResourceType値を含めます。
Azure Container Instances の詳細については、CLI コマンドの リソースをクリーンアップ してコンテナー グループとネットワーク プロファイルを削除する方法に関するページを参照してください。
linkedResourceTypeがMicrosoft.Web/serverFarms場合は、App Service 固有のトラブルシューティング手順に関するサービスの関連付けリンクを参照してください。
孤立したネットワーク インターフェイスがサブネットに残っているかどうかを確認する
仮想マシンまたはその他のリソースを削除した後に残されたネットワーク インターフェイス (NIC) によって、サブネットの削除がブロックされる可能性があります。 サブネット内の IP 構成を持つ各 NIC を削除する必要があります。
Azure CLI を使用してサブネット内の NIC を一覧表示します。
az network vnet subnet show \
--resource-group <resource-group> \
--vnet-name <vnet-name> \
--name <subnet-name> \
--query "ipConfigurations[].id" \
--output tsv
出力には、サブネットに関連付けられている IP 構成のリソース ID が表示されます。 リソース ID から NIC 名を抽出し、孤立した NIC を削除します。
az network nic delete \
--resource-group <resource-group> \
--name <nic-name>
NIC がまだ仮想マシンに接続されている場合は、まず仮想マシンをデタッチまたは削除します。
サブネットが Azure Bastion または Azure Firewall で使用されているかどうかを確認する
AzureBastionSubnetとAzureFirewallSubnetサブネットは、それぞれのサービスによって予約されます。 関連付けられている Azure Bastion または Azure Firewall リソースが存在する間は、これらのサブネットを削除できません。
Azure Bastion の場合:
- Azure portal で Bastions を検索し、同じ仮想ネットワーク内の Bastion リソースを見つけます。
- Azure Bastion リソースを削除します。
- 削除が完了したら、
AzureBastionSubnetを削除します。
Azure Firewall の場合:
- Azure portal でファイアウォールを検索し、 ファイアウォール リソースを見つけます。
- Azure Firewall リソースの割り当てを解除または削除します。
- 割り当て解除または削除が完了したら、
AzureFirewallSubnetを削除します。 - Azure CLI を使用して、接続されているリソースを確認します。
az network vnet subnet show \
--resource-group <resource-group> \
--vnet-name <vnet-name> \
--name AzureBastionSubnet \
--query "ipConfigurations[].id" \
--output tsv
サブネットの変更エラーのトラブルシューティング
アクティブなリソースを含むサブネットのサイズを変更する
新しいアドレス範囲に既存のすべての IP アドレスがまだ含まれている場合は、アクティブなリソースを含むサブネットのサイズを変更できます。 使用中の IP アドレスが新しい範囲から除外された場合、サイズ変更操作は失敗します。
サイズを変更する前に、次の手順を実行します。
Azure CLI を使用して、サブネットで使用されている IP アドレスの数を確認します。
az network vnet subnet show \ --resource-group <resource-group> \ --vnet-name <vnet-name> \ --name <subnet-name> \ --query "ipConfigurations | length(@)"新しいアドレス プレフィックスが、割り当てられているすべてのアドレスに対応されていることを確認します。
サブネットを更新します。
az network vnet subnet update \ --resource-group <resource-group> \ --vnet-name <vnet-name> \ --name <subnet-name> \ --address-prefixes <new-prefix>
注
Azure では、各サブネット内に 5 つの IP アドレス (最初の 4 つのアドレスと最後のアドレス) が予約されます。 サイズを変更するときは、これらの予約済みアドレスと現在の割り当てを考慮してください。
サブネット委任を変更または削除する
現在の委任のリソースがデプロイされている間は、サブネットの委任を変更することはできません。 委任を変更するには:
現在の委任を使用するすべてのリソースを削除します (フレキシブル サーバーや App Service プランの削除など)。
Azure CLI を使用して、既存の委任を削除します。
az network vnet subnet update \ --resource-group <resource-group> \ --vnet-name <vnet-name> \ --name <subnet-name> \ --remove delegations新しい委任を追加します。
az network vnet subnet update \ --resource-group <resource-group> \ --vnet-name <vnet-name> \ --name <subnet-name> \ --delegations <new-service-delegation>
アクティブなサブネット上のサービス エンドポイントを追加または削除する
アクティブなサブネットでサービス エンドポイントを変更すると、ターゲット サービスへの接続が短時間中断される可能性があります。 メンテナンス期間中にエンドポイントの変更を計画します。
Azure CLI を使用してサービス エンドポイントを追加します。
az network vnet subnet update \
--resource-group <resource-group> \
--vnet-name <vnet-name> \
--name <subnet-name> \
--service-endpoints Microsoft.Storage Microsoft.Sql
特定のサービス エンドポイントを削除するには、保持するエンドポイントのみを指定します。
az network vnet subnet update \
--resource-group <resource-group> \
--vnet-name <vnet-name> \
--name <subnet-name> \
--service-endpoints Microsoft.Storage
Warnung
リソースが依存している間にサービス エンドポイントを削除すると、接続が失われる可能性があります。 削除する前に、アクティブなリソースがエンドポイントに依存していないことを確認します。
一般的なエラー メッセージ
| エラー メッセージ | 原因 | Resolution |
|---|---|---|
Subnet <name> is in use and cannot be deleted. |
NIC、プライベート エンドポイント、サービスのデプロイなどのリソースは、引き続きサブネット内にあります。 | 診断コマンドを使用して、ブロックしているリソースを特定して削除します。 |
InUseSubnetCannotBeDeleted |
サブネットには、VM、ロード バランサー、またはその他のリソースからの IP 構成が含まれています。 | リソースを削除または別のサブネットに移動してから、削除を再試行します。 |
SubnetHasServiceEndpoints |
サービス エンドポイントはサブネット上に構成されます。 | サービス エンドポイントだけでは、サブネットの削除はブロックされません。 このエラーが他のブロッキング リソースで発生した場合は、まずそれらのリソースを解決してください。 サービス エンドポイントを削除するには、「 サービス エンドポイントがサブネットで構成されているかどうかを確認する」を参照してください。 |
SubnetHasDelegations |
サブネットはサービスに委任され、そのサービスのリソースがデプロイされます。 | 委任を使用するサービス リソースを削除し、委任を削除します。 |
SubnetWithExternalResourcesCannotBeUsedByOtherResources |
別の Azure サービスがサブネットにリソースをデプロイしました。 | サービス関連付けリンクを使用してサービスを識別し、デプロイされたリソースを削除します。 |
InUseNetworkInterfaceCannotBeAssociatedWithSubnet |
孤立した NIC には、サブネット操作と競合する IP 構成があります。 | 孤立した NIC を削除し、操作を再試行します。 |
SubnetIsDelegatedAndCannotBeUsed |
サブネットは既に別のサービスに委任されています。 | 新しいサービスを実行する前に、委任を変更または削除します。 |
Cannot delete virtual network <name> because it is in use by resource <id>. |
リソースは引き続き VNet にアタッチされます。 | 仮想ネットワークの削除ガイダンスに従って、リソースを特定して削除します。 |
NetworkProfileCannotBeDeleted |
Azure Container Instances によって使用されるネットワーク プロファイルは、引き続きサブネットを参照します。 | 問題を解決するには、 仮想ネットワークに Azure コンテナー インスタンスがまだ存在するかどうかを確認 するを参照してください。 |
診断コマンド
次の Azure CLI コマンドを使用して、サブネットの削除または変更をブロックする可能性があるすべてのリソースと構成の包括的なビューを取得します。
az network vnet subnet show \
--resource-group <resource-group> \
--vnet-name <vnet-name> \
--name <subnet-name> \
--query "{addressPrefix:addressPrefix, delegations:delegations[].serviceName, serviceEndpoints:serviceEndpoints[].service, ipConfigurations:ipConfigurations[].id, privateEndpoints:privateEndpoints[].id, serviceAssociationLinks:serviceAssociationLinks[].linkedResourceType}" \
--output json
このコマンドは次を返します。
- addressPrefix: サブネットの現在のアドレス範囲。
- 委任: サブネットが委任されるサービス。
- serviceEndpoints: 構成されたサービス エンドポイント。
- ipConfigurations: サブネット内の IP アドレスを持つ NIC とその他のリソース。
- privateEndpoints: サブネットに関連付けられているプライベート エンドポイント。
- serviceAssociationLinks: サブネットにリソースをデプロイしたサービス。
これらのフィールドに値が含まれている場合は、サブネットを削除または変更する前に、それらのリソースを削除する必要があります。