Удаление шлюза виртуальной сети с помощью PowerShell

Существует несколько разных подходов, которые можно применить, когда требуется удалить шлюз виртуальной сети для настройки VPN-шлюза.

  • Если вы хотите все удалить и начать заново, как в случае с тестовой средой, то можете удалить группу ресурсов. При удалении группы ресурсов удаляются все ресурсы в этой группе. Этот метод рекомендуется, только если вы не хотите оставить какие-либо ресурсы из группы ресурсов. При таком подходе невозможно выборочно удалить только некоторые из ресурсов.

  • Если вы хотите сохранить некоторые ресурсы в группе ресурсов, то удаление шлюза виртуальной сети немного усложняется. Прежде чем удалить шлюз виртуальной сети, необходимо удалить все ресурсы, зависящие от него. Выполняемые действия зависят от типа подключений, которые были созданы, и зависимых ресурсов для каждого подключения.

Удаление VPN-шлюза типа "сеть — сеть"

Чтобы удалить шлюз виртуальной сети для конфигурации "сеть — сеть", необходимо сначала удалить каждый ресурс, относящийся к этому шлюзу виртуальной сети. Ресурсы должны быть удалены в определенном порядке из-за зависимостей. В следующих примерах необходимо указать некоторые значения, а другие — выходные. В примерах для демонстрационных целей мы используем следующие конкретные значения.

  • Имя виртуальной сети: VNet1.
  • Имя группы ресурсов: TestRG1
  • Имя шлюза виртуальной сети: VNet1GW
  1. Получите шлюз виртуальной сети, который нужно удалить.

    $GW=get-Azvirtualnetworkgateway -Name "VNet1GW" -ResourceGroupName "TestRG1"
    
  2. Проверьте наличие подключений к шлюзу виртуальной сети.

    get-Azvirtualnetworkgatewayconnection -ResourceGroupName "TestRG1" | where-object {$_.VirtualNetworkGateway1.Id -eq $GW.Id}
    $Conns=get-Azvirtualnetworkgatewayconnection -ResourceGroupName "TestRG1" | where-object {$_.VirtualNetworkGateway1.Id -eq $GW.Id}
    
  3. Удалите все подключения. Может потребоваться подтвердить удаление каждого подключения.

    $Conns | ForEach-Object {Remove-AzVirtualNetworkGatewayConnection -Name $_.name -ResourceGroupName $_.ResourceGroupName}
    
  4. Удалите шлюз виртуальной сети. Может потребоваться подтвердить его удаление. Если кроме конфигурации типа "сеть — сеть" в этой виртуальной сети есть конфигурация типа "точка — сеть", то удаление шлюза виртуальной сети приведет к автоматическому отключению всех клиентов P2S без предупреждения.

    Remove-AzVirtualNetworkGateway -Name "VNet1GW" -ResourceGroupName "TestRG1"
    

    На этом этапе шлюз виртуальной сети будет удален. Вы можете выполнить следующие шаги, чтобы удалить любые неиспользуемые ресурсы.

  5. Чтобы удалить шлюзы локальной сети, сначала получите список соответствующих шлюзов локальной сети.

    $LNG=Get-AzLocalNetworkGateway -ResourceGroupName "TestRG1" | where-object {$_.Id -In $Conns.LocalNetworkGateway2.Id}
    

    Затем удалите шлюзы локальной сети. Может потребоваться подтвердить удаление каждого из них.

    $LNG | ForEach-Object {Remove-AzLocalNetworkGateway -Name $_.Name -ResourceGroupName $_.ResourceGroupName}
    
  6. Чтобы удалить ресурсы общедоступных IP-адресов, сначала получите IP-конфигурации шлюза виртуальной сети.

    $GWIpConfigs = $Gateway.IpConfigurations
    

    Затем получите список ресурсов общедоступных IP-адресов, используемых для этого шлюза виртуальной сети. Если шлюз виртуальной сети был активным, вы увидите два общедоступных IP-адреса.

    $PubIP=Get-AzPublicIpAddress | where-object {$_.Id -In $GWIpConfigs.PublicIpAddress.Id}
    

    Удалите ресурсы с общедоступным IP-адресом.

    $PubIP | foreach-object {remove-AzpublicIpAddress -Name $_.Name -ResourceGroupName "TestRG1"}
    
  7. Удалите подсеть шлюза и настройте конфигурацию.

    $GWSub = Get-AzVirtualNetwork -ResourceGroupName "TestRG1" -Name "VNet1" | Remove-AzVirtualNetworkSubnetConfig -Name "GatewaySubnet"
    Set-AzVirtualNetwork -VirtualNetwork $GWSub
    

Удаление VPN-шлюза типа "виртуальная сеть — виртуальная сеть"

Чтобы удалить шлюз виртуальной сети для конфигурации "виртуальная сеть — виртуальная сеть", необходимо сначала удалить каждый ресурс, относящийся к этому шлюзу виртуальной сети. Ресурсы должны быть удалены в определенном порядке из-за зависимостей. В следующих примерах необходимо указать некоторые значения, а другие — выходные. В примерах для демонстрационных целей мы используем следующие конкретные значения.

  • Имя виртуальной сети: VNet1.
  • Имя группы ресурсов: TestRG1
  • Имя шлюза виртуальной сети: VNet1GW
  1. Получите шлюз виртуальной сети, который нужно удалить.

    $GW=get-Azvirtualnetworkgateway -Name "VNet1GW" -ResourceGroupName "TestRG1"
    
  2. Проверьте наличие подключений к шлюзу виртуальной сети.

    get-Azvirtualnetworkgatewayconnection -ResourceGroupName "TestRG1" | where-object {$_.VirtualNetworkGateway1.Id -eq $GW.Id}
    
  3. Могут существовать другие подключения к шлюзу виртуальной сети, входящие в другую группу ресурсов. Проверьте наличие дополнительных подключений в каждой дополнительной группе ресурсов. В этом примере мы проверяем наличие подключений из RG2. Выполните его для каждой имеющейся группы ресурсов, которая может быть подключена к шлюзу виртуальной сети.

    get-Azvirtualnetworkgatewayconnection -ResourceGroupName "RG2" | where-object {$_.VirtualNetworkGateway2.Id -eq $GW.Id}
    
  4. Получите список соединений в обоих направлениях. Так как это конфигурация "виртуальная сеть — виртуальная сеть", необходим список подключений в обоих направлениях.

    $ConnsL=get-Azvirtualnetworkgatewayconnection -ResourceGroupName "TestRG1" | where-object {$_.VirtualNetworkGateway1.Id -eq $GW.Id}
    
  5. В этом примере мы проверяем наличие подключений из RG2. Выполните его для каждой имеющейся группы ресурсов, которая может быть подключена к шлюзу виртуальной сети.

     $ConnsR=get-Azvirtualnetworkgatewayconnection -ResourceGroupName "<NameOfResourceGroup2>" | where-object {$_.VirtualNetworkGateway2.Id -eq $GW.Id}
    
  6. Удалите все подключения. Может потребоваться подтвердить удаление каждого подключения.

    $ConnsL | ForEach-Object {Remove-AzVirtualNetworkGatewayConnection -Name $_.name -ResourceGroupName $_.ResourceGroupName}
    $ConnsR | ForEach-Object {Remove-AzVirtualNetworkGatewayConnection -Name $_.name -ResourceGroupName $_.ResourceGroupName}
    
  7. Удалите шлюз виртуальной сети. Может потребоваться подтвердить его удаление. Если кроме конфигурации типа "виртуальная сеть — виртуальная сеть" в ваших виртуальных сетях есть конфигурация типа "точка — сеть", то удаление шлюзов виртуальных сетей приведет к автоматическому отключению всех клиентов P2S без предупреждения.

    Remove-AzVirtualNetworkGateway -Name "VNet1GW" -ResourceGroupName "TestRG1"
    

    На этом этапе шлюз виртуальной сети будет удален. Вы можете выполнить следующие шаги, чтобы удалить любые неиспользуемые ресурсы.

  8. Чтобы удалить ресурсы общедоступных IP-адресов, получите IP-конфигурации шлюза виртуальной сети.

    $GWIpConfigs = $Gateway.IpConfigurations
    
  9. Затем получите список ресурсов общедоступных IP-адресов, используемых для этого шлюза виртуальной сети. Если шлюз виртуальной сети был активным, вы увидите два общедоступных IP-адреса.

    $PubIP=Get-AzPublicIpAddress | where-object {$_.Id -In $GWIpConfigs.PublicIpAddress.Id}
    
  10. Удалите ресурсы с общедоступным IP-адресом. Может потребоваться подтвердить их удаление.

    $PubIP | foreach-object {remove-AzpublicIpAddress -Name $_.Name -ResourceGroupName "<NameOfResourceGroup1>"}
    
  11. Удалите подсеть шлюза и настройте конфигурацию.

    $GWSub = Get-AzVirtualNetwork -ResourceGroupName "TestRG1" -Name "VNet1" | Remove-AzVirtualNetworkSubnetConfig -Name "GatewaySubnet"
    Set-AzVirtualNetwork -VirtualNetwork $GWSub
    

Удаление VPN-шлюза типа "точка — сеть"

Чтобы удалить шлюз виртуальной сети для конфигурации "точка — сеть", необходимо сначала удалить каждый ресурс, относящийся к этому шлюзу виртуальной сети. Ресурсы должны быть удалены в определенном порядке из-за зависимостей. При работе с приведенными ниже примерами необходимо указать некоторые значения, а другие — выходные. В примерах для демонстрационных целей мы используем следующие конкретные значения.

  • Имя виртуальной сети: VNet1.
  • Имя группы ресурсов: TestRG1
  • Имя шлюза виртуальной сети: VNet1GW

Примечание

При удалении VPN-шлюза все подключенные клиенты будут отключены от виртуальной сети без предупреждения.

  1. Получите шлюз виртуальной сети, который нужно удалить.

    GW=get-Azvirtualnetworkgateway -Name "VNet1GW" -ResourceGroupName "TestRG1"
    
  2. Удалите шлюз виртуальной сети. Может потребоваться подтвердить его удаление.

    Remove-AzVirtualNetworkGateway -Name "VNet1GW" -ResourceGroupName "TestRG1"
    

    На этом этапе шлюз виртуальной сети будет удален. Вы можете выполнить следующие шаги, чтобы удалить любые неиспользуемые ресурсы.

  3. Чтобы удалить ресурсы общедоступных IP-адресов, сначала получите IP-конфигурации шлюза виртуальной сети.

    $GWIpConfigs = $Gateway.IpConfigurations
    

    Затем получите список общедоступных IP-адресов, используемых для этого шлюза виртуальной сети. Если шлюз виртуальной сети был активным, вы увидите два общедоступных IP-адреса.

    $PubIP=Get-AzPublicIpAddress | where-object {$_.Id -In $GWIpConfigs.PublicIpAddress.Id}
    
  4. Удалите эти общедоступные IP-адреса. Может потребоваться подтвердить их удаление.

    $PubIP | foreach-object {remove-AzpublicIpAddress -Name $_.Name -ResourceGroupName "<NameOfResourceGroup1>"}
    
  5. Удалите подсеть шлюза и настройте конфигурацию.

    $GWSub = Get-AzVirtualNetwork -ResourceGroupName "TestRG1" -Name "VNet1" | Remove-AzVirtualNetworkSubnetConfig -Name "GatewaySubnet"
    Set-AzVirtualNetwork -VirtualNetwork $GWSub
    

Удаление VPN-шлюза путем удаления группы ресурсов

Если вы не беспокоитесь о сохранении каких-либо ресурсов в группе ресурсов и хотите начать все сначала, можно удалить всю группу ресурсов. Это быстрый способ удалить все сразу.

  1. Получите список всех групп ресурсов в подписке.

    Get-AzResourceGroup
    
  2. Найдите группу ресурсов, которую нужно удалить.

    Найдите группу ресурсов, которую нужно удалить, и просмотрите список содержащихся в ней ресурсов. В этом примере имя группы ресурсов — TestRG1. Измените пример, чтобы получить список всех ресурсов.

    Find-AzResource -ResourceGroupNameContains TestRG1
    
  3. Проверьте ресурсы в списке.

    Когда список будет возвращен, просмотрите его, чтобы убедиться, что вы хотите удалить все ресурсы в группе ресурсов и саму группу ресурсов. Если вы хотите сохранить какие-либо ресурсы из группы ресурсов, следуйте инструкциям в предыдущих разделах данной статьи, чтобы удалить шлюз.

  4. Удалите группу ресурсов и ее содержимое. Чтобы удалить группу ресурсов и ее ресурсы, измените приведенный пример и выполните его.

    Remove-AzResourceGroup -Name TestRG1
    
  5. Проверьте состояние. Для удаления всех ресурсов платформе Azure потребуется некоторое время. С помощью приведенного ниже командлета можно проверить состояние группы ресурсов.

    Get-AzResourceGroup -ResourceGroupName TestRG1
    

    По завершении отобразится результат "Успешно".

    ResourceGroupName : TestRG1
    Location          : eastus
    ProvisioningState : Succeeded
    

Дальнейшие действия

Сведения о часто задаваемых вопросах см. в статье Часто задаваемые вопросы об Azure VPN-шлюз.