Поделиться через


Подключение виртуальных сетей для нескольких клиентов к концентратору виртуальной глобальной сети

В этой статье подробно описано, как с помощью Виртуальной глобальной сети Azure подключить виртуальную сеть к виртуальному концентратору в другом клиенте. Эта архитектура полезна, если у вас есть клиентские рабочие нагрузки, которые должны быть подключены к одной и той же сети, но находятся на разных клиентах. Например, как показано на следующей схеме, можно подключить виртуальную сеть, отличную от Contoso, (удаленный клиент) к виртуальному концентратору Contoso (родительский клиент).

Схема, на которой показана конфигурация маршрутизации с родительским клиентом и удаленным клиентом.

В этой статье вы научитесь:

  • Добавление дополнительного клиента в качестве участника в подписке Azure.
  • Подключение виртуальной сети для нескольких клиентов к виртуальному концентратору.

Инструкции для этой конфигурации выполняются с помощью портала Azure и PowerShell. Однако сама функция доступна только в PowerShell и интерфейсе командной строки Azure.

Примечание.

Вы можете управлять подключениями к виртуальным сетям для нескольких клиентов только с помощью PowerShell или интерфейса командной строки Azure CLI на локальном компьютере. Поскольку портал Azure не поддерживает операции между клиентами, вы не можете управлять соединениями виртуальных сетей между клиентами через портал Azure или Azure CloudShell (как PowerShell, так и CLI).

Прежде чем начать

Требования

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

  • Виртуальная глобальная сеть и виртуальный концентратор в родительской подписке
  • Виртуальная сеть, настроенная в подписке в другом (удаленном) клиенте

Убедитесь, что адресное пространство виртуальной сети в удаленном клиенте не перекрывается с любым другим адресным пространством в других виртуальных сетях, уже подключенных к родительскому виртуальному концентратору.

Работа с Azure PowerShell

В этой статье используются командлеты PowerShell. Для запуска командлетов вы можете использовать Azure Cloud Shell. Cloud Shell — это бесплатная интерактивная оболочка, с помощью которой можно выполнять действия, описанные в этой статье. Она включает предварительно установленные общие инструменты Azure и настроена для использования с вашей учетной записью.

Чтобы открыть Cloud Shell, просто выберите Open Cloudshell в правом верхнем углу блока кода. Кроме того, Cloud Shell можно открыть в отдельной вкладке браузера. Для этого перейдите на страницу https://shell.azure.com/powershell. Нажмите кнопку Копировать, чтобы скопировать блоки кода. Вставьте их в Cloud Shell и нажмите клавишу ВВОД, чтобы выполнить код.

Назначение разрешений

  1. В подписке виртуальной сети в удаленном клиенте добавьте назначение роли участника администратору (пользователю, который администрирует виртуальный концентратор). Разрешения участника позволят администратору изменять и получать доступ к виртуальным сетям в удаленном клиенте.

    Для назначения этой роли можно использовать PowerShell или портал Azure. Инструкции см. в следующих статьях:

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

    Connect-AzAccount -SubscriptionId "[subscription ID]" -TenantId "[tenant ID]"
    
  3. Убедитесь, что назначение роли выполнено успешно. Войдите в Azure PowerShell с помощью родительских учетных данных и выполните следующую команду:

    Get-AzSubscription
    

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

Подключение виртуальной сети к концентратору

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

  1. Убедитесь в том, что вы находитесь в контексте удаленной учетной записи:

    Select-AzSubscription -SubscriptionId "[remote ID]"
    
  2. Создайте локальную переменную для хранения метаданных виртуальной сети, которую необходимо подключить к концентратору:

    $remote = Get-AzVirtualNetwork -Name "[vnet name]" -ResourceGroupName "[resource group name]"
    
  3. Подключитесь к родительской учетной записи:

    Connect-AzAccount -TenantID "[parent tenant ID]"
    
  4. Выберите родительскую подписку:

    Select-AzSubscription -SubscriptionId "[parent ID]"
    
  5. Подключите виртуальную сеть к концентратору:

    New-AzVirtualHubVnetConnection -ResourceGroupName "[parent resource group name]" -VirtualHubName "[virtual hub name]" -Name "[name of connection]" -RemoteVirtualNetwork $remote
    

Новое подключение можно просмотреть либо в PowerShell, либо на портале Azure:

  • В консоли PowerShell: если подключение успешно выполнено, метаданные из созданного подключения отобразятся в консоли PowerShell.
  • На портале Azure: перейдите в виртуальный концентратор и выберите Подключение>Подключения виртуальных сетей. Затем можно просмотреть указатель на подключение. Чтобы просмотреть фактический ресурс, вам понадобятся соответствующие разрешения.

Сценарий: добавление статических маршрутов в подключение к концентратору виртуальной сети

В следующих шагах с помощью команд вы добавите статический маршрут в таблицу маршрутов по умолчанию виртуального концентратора и подключение к виртуальной сети, чтобы указывать на IP-адрес следующего прыжка (то есть на устройство NVA). Измените значения примера в соответствии со своим окружением.

Примечание.

  • Перед выполнением команд убедитесь, что у вас есть доступ и у вас есть права доступа к удаленной подписке.
  • Префикс назначения может представлять собой один или несколько адресов CIDR. Для одиночного CIDR используйте следующий формат: @("10.19.2.0/24"). Для нескольких CIDR используйте следующий формат: @("10.19.2.0/24", "10.40.0.0/16").
  1. Убедитесь в том, что вы находитесь в контексте родительской учетной записи:

    Select-AzSubscription -SubscriptionId "[parent ID]" 
    
  2. Добавьте маршрут в таблицу маршрутизации по умолчанию для виртуального концентратора без определенного IP-адреса.

    1. Получите сведения о подключении:

      $hubVnetConnection = Get-AzVirtualHubVnetConnection -Name "[HubconnectionName]" -ParentResourceName "[Hub Name]" -ResourceGroupName "[resource group name]"
      
    2. Добавьте статический маршрут в таблицу маршрутов виртуального концентратора с следующим прыжком на подключение к виртуальной сети. Существующие маршруты в таблице маршрутов сохраняются со следующим примером скрипта.

      $routeTable = Get-AzVHubRouteTable -ResourceGroupName "[Resource group name]" -VirtualHubName "[Virtual hub name]" -Name "defaultRouteTable"
      $Route2 = New-AzVHubRoute -Name "[Route Name]" -Destination “[@("Destination prefix")]” -DestinationType "CIDR" -NextHop $hubVnetConnection.Id -NextHopType "ResourceId"
      $routeTable.Routes.add($Route2)
      
    3. Убедитесь, что таблица маршрутов имеет новые маршруты:

      $routeTable.Routes
      
    4. Обновите текущую таблицу маршрутизации концентратора по умолчанию:

     Update-AzVHubRouteTable -ResourceGroupName "[resource group name]"-VirtualHubName [“Hub Name”] -Name "defaultRouteTable" -Route @($routeTable.Routes)
    
    1. Обновите маршрут в подключении виртуальной сети, чтобы указать следующий прыжок в качестве IP-адреса. Этот пример скрипта добавляет новый маршрут к подключению виртуальной сети (сохраняя существующие маршруты).

      Примечание.

      Имя маршрута должно совпадать с именем, которое использовалось ранее при добавлении статического маршрута. В противном случае вы создадите два маршрута в таблице маршрутизации: один без IP-адреса и второй с IP-адресом.

        $newroute = New-AzStaticRoute -Name "[Route Name]"  -AddressPrefix "[@("Destination prefix")]" -NextHopIpAddress "[Destination NVA IP address]"
    
        $hubVNetConnection.RoutingConfiguration.VnetRoutes.StaticRoutes.add($newroute)
    
        Update-AzVirtualHubVnetConnection -ResourceGroupName $rgname -VirtualHubName "[Hub Name]" -Name "[Virtual hub connection name]" -RoutingConfiguration $hubVNetConnection.RoutingConfiguration
    
    1. Убедитесь, что установлен статический маршрут на IP-адрес следующего узла.

      Get-AzVirtualHubVnetConnection -ResourceGroupName "[Resource group]" -VirtualHubName "[virtual hub name]" -Name "[Virtual hub connection name]"
      

Устранение неполадок

  • Убедитесь, что метаданные в $remote (из предыдущего раздела) соответствуют сведениям на портале Azure.
  • Проверьте разрешения с помощью параметров IAM группы ресурсов удаленного клиента или с помощью команд Azure PowerShell (Get-AzSubscription).
  • Заключите в кавычки имена групп ресурсов или любых других переменных окружения (например, "VirtualHub1" или "VirtualNetwork1").
  • Если используется пакет SDK для сети Azure или прямой запрос REST API, необходимо передать основной токен авторизации клиента "Hub" в заголовке "Authorization" и дополнительный токен авторизации для второго клиента "ВТ" в специальном заголовке "x-ms-authorization-auxiliary".

Следующие шаги