Condividi tramite


Risolvere i problemi relativi all'impossibilità di eliminare o modificare una rete virtuale o una subnet in Azure

Riassunto

È possibile che vengano visualizzati errori quando si tenta di eliminare o modificare una rete virtuale o una subnet in Microsoft Azure. Le risorse come gateway, endpoint privati, endpoint di servizio, delega di subnet e interfacce di rete orfane possono bloccare l'eliminazione o la modifica. Questo articolo illustra la procedura di risoluzione dei problemi per risolvere questi problemi.

Risolvere i problemi di rete virtuale e subnet

Eliminazione della rete virtuale

  1. Controllare se un gateway di rete virtuale è in esecuzione nella rete virtuale.
  2. Controllare se nella rete virtuale è in esecuzione un application gateway.
  3. Verifica se le istanze di contenitori di Azure sono ancora presenti nella rete virtuale.
  4. Controllare se Microsoft Entra Domain Services è abilitato nella rete virtuale.
  5. Controllare se la rete virtuale è connessa ad altre risorse.
  6. Verificare se una macchina virtuale è ancora in esecuzione nella rete virtuale.
  7. Controllare se la rete virtuale è bloccata nella migrazione.
  8. Controllare se la rete virtuale è stata usata da un'app Web per l'integrazione della rete virtuale.

Eliminazione della subnet

  1. Controllare se nella subnet sono presenti endpoint privati.
  2. Controllare se gli endpoint di servizio sono configurati nella subnet.
  3. Controllare se la subnet ha una delega.
  4. Controllare se nella subnet sono presenti collegamenti di associazione del servizio.
  5. Controllare se le interfacce di rete orfane rimangono nella subnet.
  6. Controllare se la subnet viene usata da Azure Bastion o da Firewall di Azure.

Modifica della subnet

  1. Ridimensionare una subnet che contiene risorse attive.
  2. Modificare o rimuovere una delega di subnet.
  3. Aggiungere o rimuovere endpoint di servizio in una subnet attiva.

Procedura di risoluzione dei problemi

Controllare se un gateway di rete virtuale è in esecuzione nella rete virtuale

Per rimuovere la rete virtuale, rimuovere prima di tutto il gateway di rete virtuale.

Per le reti virtuali classiche, passare alla pagina Panoramica della rete virtuale classica nel portale di Azure. Nella sezione Connessioni VPN , se il gateway viene eseguito nella rete virtuale, viene visualizzato l'indirizzo IP del gateway.

Screenshot di un gateway classico per verificare se il gateway è in esecuzione.

Per le reti virtuali, passare alla pagina Panoramica della rete virtuale. Selezionare Dispositivi connessi per il gateway di rete virtuale.

Screenshot dell'elenco dispositivi connessi per una rete virtuale nel portale di Azure. Il gateway di rete virtuale è evidenziato nell'elenco.

Prima di poter rimuovere il gateway, rimuovere tutti gli oggetti Connection nel gateway.

Verificare se un gateway applicativo è in esecuzione nella rete virtuale

Passare alla pagina Panoramica della rete virtuale. Verificare i dispositivi connessi per il gateway dell'applicazione.

Screenshot dell'elenco dispositivi connessi per una rete virtuale nel portale di Azure. L'Application Gateway è evidenziato nell'elenco.

Se è presente un gateway applicazione, è necessario rimuoverlo prima di poter eliminare la rete virtuale.

Controllare se le istanze di Azure Container sono ancora presenti nella rete virtuale

Annotazioni

A partire dalla versione 2021-07-01 dell'API delle istanze di Azure Container, le istanze di Azure Container non usano più i profili di rete. Se si usa questa o una versione più recente dell'API, il portale non crea profili di rete. Le indicazioni seguenti si applicano solo alle distribuzioni legacy che usano una versione precedente dell'API.

  1. Nel portale di Azure passare alla pagina Panoramica del gruppo di risorse.

  2. Nell'intestazione dell'elenco delle risorse del gruppo di risorse selezionare Mostra tipi nascosti. Il portale nasconde il tipo di profilo di rete per impostazione predefinita.

  3. Selezionare il profilo di rete correlato ai gruppi di contenitori.

  4. Seleziona Elimina.

    Screenshot dell'elenco dei profili di rete nascosti.

  5. Eliminare di nuovo la subnet o la rete virtuale.

Se questi passaggi non risolvono il problema, usare questi comandi Azure CLI per pulire le risorse.

Controllare se Microsoft Entra Domain Services è abilitato nella rete virtuale

Se Microsoft Entra Domain Services è abilitato e connesso alla rete virtuale, non è possibile eliminare questa rete virtuale.

Per eliminare il dominio gestito, vedere Eliminare un dominio gestito di Microsoft Entra Domain Services.

Verificare se la rete virtuale è connessa ad altre risorse

Verificare la presenza di collegamenti di circuito, connessioni e peering di rete virtuale. Una di queste risorse può causare l'esito negativo dell'eliminazione di una rete virtuale.

Usare l'ordine di eliminazione consigliato seguente:

  1. Connessioni gateway
  2. Gateway
  3. Indirizzi IP
  4. Peering di rete virtuale
  5. Ambiente del servizio app

Verificare se una macchina virtuale è ancora in esecuzione nella rete virtuale

Assicurarsi che nessuna macchina virtuale si trova nella rete virtuale.

Controllare se la rete virtuale è bloccata nella migrazione

Se la rete virtuale è bloccata in uno stato di migrazione, non è possibile eliminarla. Eseguire il comando seguente in Azure PowerShell per interrompere la migrazione e quindi eliminare la rete virtuale.

Move-AzureVirtualNetwork -VirtualNetworkName "Name" -Abort

Controllare se la rete virtuale è stata usata da un'app Web per l'integrazione della rete virtuale

Se la rete virtuale è stata integrata con un'app Web in passato, ma l'app Web è stata eliminata senza disconnettere l'integrazione della rete virtuale, vedere Eliminazione del piano di servizio app o dell'app Web prima di disconnettere l'integrazione della rete virtuale.

Risolvere gli errori di eliminazione della subnet

Controllare se nella subnet sono presenti endpoint privati

Se una subnet ha endpoint privati, non è possibile eliminare la subnet. È necessario rimuovere tutti gli endpoint privati prima di eliminare la subnet.

  1. Nel portale di Azure passare alla rete virtuale e selezionare Subnet.
  2. Seleziona la subnet da eliminare e controlla la colonna Endpoint privati.
  3. Se esistono endpoint privati, passare a ogni risorsa endpoint privato ed eliminarlo.

In alternativa, usare l'interfaccia della riga di comando di Azure per identificare gli endpoint privati in una subnet:

az network vnet subnet show \
    --resource-group <resource-group> \
    --vnet-name <vnet-name> \
    --name <subnet-name> \
    --query "privateEndpoints[].id" \
    --output tsv

Rimuovi ogni endpoint privato:

az network private-endpoint delete \
    --resource-group <resource-group> \
    --name <private-endpoint-name>

Controllare se gli endpoint di servizio sono configurati nella subnet

Gli endpoint di servizio sono configurazioni a livello di subnet e non bloccano l'eliminazione della subnet. Come indicato nelle domande frequenti sulla rete virtuale di Azure, è possibile eliminare una subnet anche quando gli endpoint di servizio sono attivati.

Tuttavia, se è necessario rimuovere gli endpoint di servizio come parte di una pulizia o una modifica più ampia, seguire questa procedura:

  1. Nel portale di Azure passare alla rete virtuale e selezionare Subnet.
  2. Selezionare la subnet e controllare la sezione Endpoint dei servizi.
  3. Rimuovere gli endpoint di servizio configurati e selezionare Salva.

Usare l'interfaccia della riga di comando di Azure per controllare e rimuovere gli endpoint di servizio:

az network vnet subnet show \
    --resource-group <resource-group> \
    --vnet-name <vnet-name> \
    --name <subnet-name> \
    --query "serviceEndpoints[].service" \
    --output tsv

Rimuovere gli endpoint di servizio aggiornando la subnet:

az network vnet subnet update \
    --resource-group <resource-group> \
    --vnet-name <vnet-name> \
    --name <subnet-name> \
    --service-endpoints '[]'

Verificare se la sottorete ha una delega

Una delega di subnet assegna la subnet a un servizio di Azure specifico, ad esempio Microsoft.DBforPostgreSQL/flexibleServers, Microsoft.Web/serverFarmso Microsoft.ContainerService/managedClusters. Non è possibile eliminare una subnet delegata finché non si rimuovono tutte le risorse che usano la delega e quindi si rimuove la delega stessa.

Deleghe comuni di subnet includono:

Delega Service
Microsoft.ContainerInstance/containerGroups Azure Container Instances
Microsoft.DBforPostgreSQL/flexibleServers Database di Azure per PostgreSQL - Server flessibile
Microsoft.DBforMySQL/flexibleServers Database di Azure per MySQL - Server flessibile
Microsoft.Web/serverFarms Servizio app di Azure/Funzioni di Azure
Microsoft.ContainerService/managedClusters Il servizio Azure Kubernetes (AKS)
Microsoft.Sql/managedInstances Istanza SQL gestita di Azure
Microsoft.Network/dnsResolvers Sistema di risoluzione privato DNS di Azure
Microsoft.Netapp/volumes Azure NetApp Files
Microsoft.ApiManagement/service Gestione API di Azure

Usare l'interfaccia della riga di comando di Azure per controllare la delega:

az network vnet subnet show \
    --resource-group <resource-group> \
    --vnet-name <vnet-name> \
    --name <subnet-name> \
    --query "delegations[].{name:name, service:serviceName}" \
    --output table

Per rimuovere una delega, eliminare innanzitutto tutte le risorse che usano la subnet delegata. Rimuovere quindi la delega usando il comando seguente:

az network vnet subnet update \
    --resource-group <resource-group> \
    --vnet-name <vnet-name> \
    --name <subnet-name> \
    --remove delegations

I servizi di Azure come Istanze di Azure Container, Servizio app di Azure e Istanza gestita di SQL di Azure creano collegamenti di associazione al servizio quando distribuiscono le risorse in una subnet. Questi collegamenti impediscono l'eliminazione della subnet anche dopo la rimozione delle risorse distribuite.

Usare l'interfaccia della riga di comando di Azure per verificare la presenza di collegamenti all'associazione dei servizi:

az network vnet subnet show \
    --resource-group <resource-group> \
    --vnet-name <vnet-name> \
    --name <subnet-name> \
    --query "serviceAssociationLinks[].{link:link, linkedResourceType:linkedResourceType}" \
    --output table

Se i collegamenti di associazione del servizio rimangono dopo l'eliminazione delle risorse, potrebbero essere necessari alcuni minuti per cancellare. Se vengono mantenuti, provare i passaggi seguenti:

  1. Verificare che nella subnet non siano ancora distribuite risorse del servizio collegato.
  2. Attendere 10-15 minuti affinché la piattaforma pulisca i collegamenti.
  3. Se i collegamenti rimangono persistenti, aprire una richiesta di supporto di Azure che fa riferimento all'oggetto specifico linkedResourceType.

Per istanze di Azure Container in particolare, vedere Pulire le risorse per i comandi dell'interfaccia della riga di comando per rimuovere i gruppi di contenitori e i profili di rete.

Controllare se le interfacce di rete orfane rimangono nella subnet

Le interfacce di rete (NIC) lasciate indietro dopo l'eliminazione di una macchina virtuale o di un'altra risorsa possono bloccare l'eliminazione della subnet. È necessario rimuovere ogni scheda di interfaccia di rete con una configurazione IP nella subnet.

Usare Azure CLI per elencare le schede di rete in una subnet.

az network vnet subnet show \
    --resource-group <resource-group> \
    --vnet-name <vnet-name> \
    --name <subnet-name> \
    --query "ipConfigurations[].id" \
    --output tsv

L'output mostra gli ID risorsa delle configurazioni IP associate alla subnet. Estrarre il nome della NIC dall'ID risorsa ed eliminare la NIC orfana.

az network nic delete \
    --resource-group <resource-group> \
    --name <nic-name>

Se la scheda di interfaccia di rete è ancora collegata a una macchina virtuale, scollegare o eliminare prima la macchina virtuale.

Controllare se la subnet viene usata da Azure Bastion o firewall di Azure

Le sottoreti AzureBastionSubnet e AzureFirewallSubnet sono riservate dai rispettivi servizi. Non è possibile eliminare queste subnet mentre esiste la risorsa Azure Bastion o Firewall di Azure associata.

Per Azure Bastion:

  1. Nel portale di Azure cercare Bastions e trovare la risorsa Bastion nella stessa rete virtuale.
  2. Eliminare la risorsa Azure Bastion.
  3. Al termine dell'eliminazione, eliminare il AzureBastionSubnet.

Per Firewall di Azure:

  1. Nel portale di Azure cercare Firewall e trovare la risorsa Firewall.
  2. Deallocare o eliminare la risorsa firewall di Azure.
  3. Al termine della deallocazione o dell'eliminazione, eliminare il AzureFirewallSubnet.
  4. Usare l'interfaccia della riga di comando di Azure per controllare le risorse connesse:
az network vnet subnet show \
    --resource-group <resource-group> \
    --vnet-name <vnet-name> \
    --name AzureBastionSubnet \
    --query "ipConfigurations[].id" \
    --output tsv

Risolvere gli errori di modifica della subnet

Ridimensionare una subnet che contiene risorse attive

È possibile ridimensionare una subnet con risorse attive se il nuovo intervallo di indirizzi include ancora tutti gli indirizzi IP esistenti. Se il nuovo intervallo esclude un indirizzo IP in uso, l'operazione di ridimensionamento non riesce.

Prima di ridimensionare:

  1. Usare l'interfaccia della riga di comando di Azure per controllare il numero di indirizzi IP usati nella subnet.

    az network vnet subnet show \
        --resource-group <resource-group> \
        --vnet-name <vnet-name> \
        --name <subnet-name> \
        --query "ipConfigurations | length(@)"
    
  2. Verificare che il nuovo prefisso indirizzo soddisfi tutti gli indirizzi assegnati.

  3. Aggiornare la sottorete.

    az network vnet subnet update \
        --resource-group <resource-group> \
        --vnet-name <vnet-name> \
        --name <subnet-name> \
        --address-prefixes <new-prefix>
    

Annotazioni

Azure riserva cinque indirizzi IP all'interno di ogni subnet: i primi quattro indirizzi e l'ultimo indirizzo. Durante il ridimensionamento, tenere conto di questi indirizzi riservati e delle allocazioni correnti.

Modificare o rimuovere una delega di subnet

Non è possibile modificare una delega della subnet mentre vengono distribuite le risorse della delega corrente. Per modificare la delega:

  1. Rimuovere tutte le risorse che usano la delega corrente, ad esempio eliminare il server flessibile o il piano di servizio app.

  2. Usare l'interfaccia della riga di comando di Azure per rimuovere la delega esistente.

    az network vnet subnet update \
        --resource-group <resource-group> \
        --vnet-name <vnet-name> \
        --name <subnet-name> \
        --remove delegations
    
  3. Aggiungere la nuova delega.

    az network vnet subnet update \
        --resource-group <resource-group> \
        --vnet-name <vnet-name> \
        --name <subnet-name> \
        --delegations <new-service-delegation>
    

Aggiungere o rimuovere endpoint di servizio in una subnet attiva

La modifica degli endpoint di servizio in una subnet attiva può causare una breve interruzione della connettività al servizio di destinazione. Pianificare le modifiche dell'endpoint durante una finestra di manutenzione.

Usare l'interfaccia della riga di comando di Azure per aggiungere un endpoint di servizio.

az network vnet subnet update \
    --resource-group <resource-group> \
    --vnet-name <vnet-name> \
    --name <subnet-name> \
    --service-endpoints Microsoft.Storage Microsoft.Sql

Per rimuovere un endpoint di servizio specifico, specificare solo gli endpoint da mantenere.

az network vnet subnet update \
    --resource-group <resource-group> \
    --vnet-name <vnet-name> \
    --name <subnet-name> \
    --service-endpoints Microsoft.Storage

Avviso

La rimozione di un endpoint di servizio mentre le risorse dipendono da essa possono causare una perdita di connettività. Verificare che nessuna risorsa attiva si basi sull'endpoint prima di rimuoverla.

Messaggi di errore comuni

Messaggio di errore Motivo Resolution
Subnet <name> is in use and cannot be deleted. Le risorse come NIC, endpoint privati o distribuzioni di servizi sono ancora nella subnet. Usare i comandi di diagnostica per identificare le risorse di blocco e rimuoverle.
InUseSubnetCannotBeDeleted La subnet contiene configurazioni IP da macchine virtuali, servizi di bilanciamento del carico o altre risorse. Rimuovere o spostare le risorse in un'altra subnet e quindi ripetere l'eliminazione.
SubnetHasServiceEndpoints Gli endpoint di servizio vengono configurati nella subnet. Gli endpoint di servizio da soli non bloccano l'eliminazione della subnet. Se questo errore si verifica con altre risorse di blocco, risolvere prima tali risorse. Per rimuovere gli endpoint di servizio, vedere Controllare se gli endpoint di servizio sono configurati nella subnet.
SubnetHasDelegations La subnet è delegata a un servizio e le risorse di tale servizio vengono distribuite. Rimuovere le risorse del servizio che usano la delega e quindi rimuovere la delega.
SubnetWithExternalResourcesCannotBeUsedByOtherResources Un altro servizio di Azure ha distribuito le risorse nella subnet. Identificare il servizio usando i collegamenti di associazione del servizio e rimuovere le risorse distribuite.
InUseNetworkInterfaceCannotBeAssociatedWithSubnet Una NIC orfana ha una configurazione IP che confligge con le operazioni della sottorete. Eliminare la scheda di interfaccia di rete orfana e quindi ripetere l'operazione.
SubnetIsDelegatedAndCannotBeUsed La subnet è già delegata a un altro servizio. Modificare o rimuovere la delega prima di eseguire un nuovo servizio.
Cannot delete virtual network <name> because it is in use by resource <id>. Una risorsa è ancora collegata alla rete virtuale. Seguire le indicazioni per l'eliminazione della rete virtuale per identificare e rimuovere la risorsa.
NetworkProfileCannotBeDeleted Un profilo di rete usato da Istanze di Azure Container fa ancora riferimento alla subnet. Vedere Controllare se le istanze di Azure Container sono ancora presenti nella rete virtuale per risolvere il problema.

Comandi di diagnostica

Usare il comando seguente dell'interfaccia della riga di comando di Azure per ottenere una visualizzazione completa di tutte le risorse e le configurazioni che potrebbero bloccare l'eliminazione o la modifica della subnet:

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

Questo comando restituisce:

  • addressPrefix: intervallo di indirizzi corrente della subnet.
  • deleghe: Servizi a cui è delegata la subnet.
  • serviceEndpoints: endpoint di servizio configurati.
  • ipConfigurations: schede di rete e altre risorse con indirizzi IP nella sottorete.
  • privateEndpoints: endpoint privati associati alla subnet.
  • serviceAssociationLinks: servizi che hanno distribuito le risorse nella subnet.

Se uno di questi campi contiene valori, è necessario rimuovere tali risorse prima di poter eliminare o modificare la subnet.

Passaggi successivi