Подключение виртуальных сетей из различных моделей развертывания с использованием PowerShell

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

Эта статья предназначена для клиентов, у которых уже есть виртуальная сеть, созданная с помощью классической (устаревшей) модели развертывания, и которым требуется подключить классическую виртуальную сеть к другой виртуальной сети, созданной с использованием последней модели развертывания. Если у вас нет старой виртуальной сети, используйте статью Создание подключения типа "виртуальная сеть — виртуальная сеть".

Архитектура

Подключение к классической виртуальной сети к виртуальной сети Resource Manager похоже на подключение виртуальной сети к локальному сайту. В обоих типах подключений используется VPN-шлюз для создания защищенного туннеля, использующего IPsec/IKE. Подключение можно создать между виртуальными сетями, которые находятся в разных подписках и разных регионах. Вы также можете создать подключение между виртуальными сетями, которые уже подключены к локальным сетям, если настроен динамический шлюз или шлюз на основе маршрутов. Дополнительные сведения о подключениях типа "виртуальная сеть — виртуальная сеть" см. в разделе Часто задаваемые вопросы о подключениях типа "виртуальная сеть — виртуальная сеть".

Для этой конфигурации вы создадите подключение к VPN-шлюзу через VPN-туннель IPsec/IKE между виртуальными сетями. При настройке необходимо убедиться в том, что никакие из диапазонов виртуальных сетей или диапазонов локальных сетей, к которым они подключены, никак не перекрываются между собой.

В таблице ниже показан пример, как определяются виртуальные сети и локальные веб-сайты.

Виртуальная сеть Адресное пространство Область/регион Подключается к сайту локальной сети
ClassicVNet (10.1.0.0/16) Западная часть США RMVNetSite (192.168.0.0/16)
RMVNet (192.168.0.0/16) Восточная часть США ClassicVNetSite (10.1.0.0/16)

Необходимые компоненты

Далее приведены инструкции, которые помогут вам настроить динамический шлюз или шлюз на основе маршрутов для каждой виртуальной сети и создать VPN-подключение между шлюзами. Эта конфигурация не поддерживает статические шлюзы и шлюзы на основе политик.

В этих шагах предполагается, что у вас уже есть старая виртуальная сеть и уже созданная виртуальная сеть Resource Manager.

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

  • В этой статье описаны используется PowerShell. Установите на компьютер последнюю версию командлетов PowerShell для Resource Manager и управления услугами.

    Хотя можно выполнить несколько команд PowerShell с помощью среды Azure Cloud Shell, для правильного создания подключений необходимо установить обе версии командлетов.

    Подробнее: Установка и настройка Azure PowerShell.

Примеры параметров

Используйте следующие значения для лучшего понимания примеров.

Классическая виртуальная сеть

Имя виртуальной сети = ClassicVNet
Группа ресурсов = классическое расположениеRG = западная часть США
виртуальная сеть адресные пространства = 10.1.0.0/16
Подсеть1 = 10.1.0.0/24
GatewaySubnet = 10.1.255.0/27
Имя локальной сети = RMVNetSite
GatewayType = DynamicRouting

Виртуальная сеть Resource Manager

Имя виртуальной сети = RMVNet
Группа ресурсов = RMRG
виртуальная сеть ПРОСТРАНСТВА IP-адресов = 192.168.0.0/16
Подсеть1 = 192.168.1.0/24
GatewaySubnet = 192.168.255.0/27
Location = Восточная часть США
Имя общедоступного IP-адреса шлюза = rmgwpip
Шлюз локальной сети = ClassicVNetSite
имя шлюза виртуальная сеть = RMGateway
Конфигурация IP-адресации шлюза = gwipconfig

Настройка классической виртуальной сети

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

1. Скачайте файл конфигурации сети

  1. Запустите консоль PowerShell с повышенными правами и войдите в свою учетную запись Azure. Следующий командлет запрашивает учетные данные входа для вашей учетной записи Azure. После выполнения входа он скачивает параметры учетной записи, чтобы они были доступны в Azure PowerShell. В этом разделе используются классические командлеты Azure PowerShell для управления службами.

    Add-AzureAccount
    

    Получите подписку Azure.

    Get-AzureSubscription
    

    При наличии нескольких подписок выберите подписку, которую вы хотите использовать.

    Select-AzureSubscription -SubscriptionName "Name of subscription"
    
  2. Создайте каталог на своем компьютере. В эом примере мы создали AzureNet.

  3. Экспортируйте файл конфигурации сети Azure, выполнив приведенную ниже команду. При необходимости можно изменить расположение файла для экспорта.

    Get-AzureVNetConfig -ExportToFile C:\AzureNet\NetworkConfig.xml
    
  4. Откройте скачанный XML-файл, чтобы внести изменения. Пример файла конфигурации сети см. в схеме конфигурации сети.

  5. Запишите значение VirtualNetworkSite name=. Если вы создали классическую виртуальную сеть с помощью портала, это имя соответствует формату "Group ClassicRG ClassicVNet", а не "ClassicVNet" на портале.

2. Проверьте подсеть шлюза

В элементе VirtualNetworkSites добавьте подсеть шлюза в виртуальную сеть, если она еще не создана. Lля подсети шлюза необходимо задать имя GatewaySubnet. В противном случае Azure не удастся распознать и использовать ее в качестве подсети шлюза.

Внимание

При работе с подсетями шлюза избегайте связывания группы безопасности сети (NSG) с подсетью шлюза. Связывание группы безопасности сети с этой подсетью может привести к остановке работы шлюза виртуальной сети (VPN и шлюзов ExpressRoute). Дополнительные сведения о группах безопасности сети см. в статье Фильтрация сетевого трафика с помощью групп безопасности сети.

Пример:

<VirtualNetworkSites>
  <VirtualNetworkSite name="ClassicVNet" Location="West US">
    <AddressSpace>
      <AddressPrefix>10.1.0.0/16</AddressPrefix>
    </AddressSpace>
    <Subnets>
      <Subnet name="Subnet1">
        <AddressPrefix>10.1.0.0/24</AddressPrefix>
      </Subnet>
      <Subnet name="GatewaySubnet">
        <AddressPrefix>10.1.255.0/27</AddressPrefix>
      </Subnet>
    </Subnets>
  </VirtualNetworkSite>
</VirtualNetworkSites>

3. Добавьте сайт локальной сети

Добавляемый сайт локальной сети представляет собой виртуальную сеть RM, к которой необходимо подключиться. Добавьте в файл элемент LocalNetworkSites, если его еще нет. На этом этапе настройки значение VPNGatewayAddress может быть любым допустимым общедоступным IP-адресом, так как шлюз для виртуальной сети RM еще не создан. После создания шлюза RM этот IP-адрес необходимо заменить на правильный общедоступный IP-адрес, назначенный шлюзу RM.

<LocalNetworkSites>
  <LocalNetworkSite name="RMVNetSite">
    <AddressSpace>
      <AddressPrefix>192.168.0.0/16</AddressPrefix>
    </AddressSpace>
    <VPNGatewayAddress>5.4.3.2</VPNGatewayAddress>
  </LocalNetworkSite>
</LocalNetworkSites>

4. Свяжите виртуальную сеть с сайтом локальной сети

В этом разделе необходимо указать сайт локальной сети, который требуется подключить к виртуальной сети. В нашем случае это виртуальная сеть Resource Manager, указанная ранее. Убедитесь, что имена совпадают. На этом этапе шлюз еще не создается. Пока только указывается локальная сеть, к которой будет подключен шлюз.

<Gateway>
  <ConnectionsToLocalNetwork>
    <LocalNetworkSiteRef name="RMVNetSite">
      <Connection type="IPsec" />
    </LocalNetworkSiteRef>
  </ConnectionsToLocalNetwork>
</Gateway>

5. Сохраните и отправьте файл

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

Set-AzureVNetConfig -ConfigurationPath C:\AzureNet\NetworkConfig.xml

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

OperationDescription        OperationId                      OperationStatus                                                
--------------------        -----------                      ---------------                                                
Set-AzureVNetConfig        e0ee6e66-9167-cfa7-a746-7casb9    Succeeded 

6. Создание шлюза

Перед запуском этого примера ознакомьтесь с файлом конфигурации сети, который вы скачали, чтобы узнать, какие именно имена ожидает Azure. Файл конфигурации сети содержит значения для классических виртуальных сетей. При создании классической виртуальной сети с помощью портала имя виртуальной сети в файле конфигурации сети отличается. Например, если на портале Azure вы создали классическую виртуальную сеть Classic VNet в группе ресурсов ClassicRG, то ее имя, сохраняемое в файле конфигурации сети, преобразуется в Group ClassicRG Classic VNet. Всегда используйте имя, содержащееся в файле конфигурации сети при работе с PowerShell. При указании имени виртуальной сети, содержащей пробелы, используйте кавычки вокруг значения.

Чтобы создать шлюз для динамической маршрутизации, используйте следующий пример.

New-AzureVNetGateway -VNetName ClassicVNet -GatewayType DynamicRouting

Проверить состояние шлюза можно с помощью командлета Get-AzureVNetGateway.

Настройка шлюза виртуальной сети RM

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

  1. В консоли PowerShell войдите в свою учетную запись Azure. Следующий командлет запрашивает учетные данные входа для вашей учетной записи Azure. После выполнения входа он скачивает параметры учетной записи, чтобы они были доступны в Azure PowerShell. При необходимости можно использовать функцию "Попробовать" для запуска Azure Cloud Shell в браузере.

    Если вы используете Azure Cloud Shell, пропустите выполнение следующего командлета:

    Connect-AzAccount
    

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

    Get-AzSubscription
    

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

    Select-AzSubscription -SubscriptionName "Name of subscription"
    
  2. Создайте локальный сетевой шлюз. В виртуальной сети термин "шлюз локальной сети" обычно означает локальное расположение. В этом случае термин "шлюз локальной сети" указывает на классическую виртуальную сеть. Присвойте этому расположению имя, с помощью которого служба Azure сможет ссылаться на него, а также укажите префикс адресного пространства. С помощью указанного префикса IP-адреса служба Azure может определить, какой трафик отправлять в локальное расположение. Если позже понадобится изменить эти сведения, перед созданием шлюза можно изменить значения и снова запустить пример.

    -Name — это имя, которое будет использоваться для ссылки на шлюз локальной сети.
    -AddressPrefix — это диапазон адресов для классической виртуальной сети.
    -GatewayIpAddress — это общедоступный IP-адрес шлюза классической виртуальной сети. Не забудьте заменить шаблон "n.n.n.n" на действительный IP-адрес.

    New-AzLocalNetworkGateway -Name ClassicVNetSite `
    -Location "West US" -AddressPrefix "10.1.0.0/16" `
    -GatewayIpAddress "n.n.n.n" -ResourceGroupName RMRG
    
  3. Запросите общедоступный IP-адрес, который нужно выделить для шлюза виртуальной сети Resource Manager. Указать необходимый вам IP-адрес нельзя. IP-адрес выделяется для шлюза виртуальной сети динамически. Но это не значит, что IP-адрес изменится. IP-адрес шлюза виртуальной сети изменяется только после его удаления и повторного создания. При изменении размера, сбросе или других внутренних операциях обслуживания или обновления IP-адрес шлюза не изменяется.

    На этом этапе также задается переменная, которая будет использоваться позже.

    $ipaddress = New-AzPublicIpAddress -Name rmgwpip `
    -ResourceGroupName RMRG -Location 'EastUS' `
    -AllocationMethod Dynamic
    
  4. Проверьте наличие подсети шлюза в виртуальной сети. Если подсети шлюза нет, добавьте ее. Присвойте подсети шлюза имя GatewaySubnet.

    $vnet = Get-AzVirtualNetwork -ResourceGroupName RMRG -Name RMVNet
    Add-AzVirtualNetworkSubnetConfig -Name 'GatewaySubnet' -AddressPrefix 192.168.255.0/27 -VirtualNetwork $vnet
    Set-AzVirtualNetwork -VirtualNetwork $vnet
    
  5. Получите подсеть, используемую для шлюза, выполнив приведенную ниже команду. На этом этапе мы также зададим переменную, которая будет использоваться на следующем этапе.

    -Name — это имя виртуальной сети Resource Manager.
    -ResourceGroupName — это группа ресурсов, с которой связана виртуальная сеть. Подсеть шлюза для этой виртуальной сети уже должна существовать и иметь имя GatewaySubnet .

    $subnet = Get-AzVirtualNetworkSubnetConfig -Name GatewaySubnet `
    -VirtualNetwork (Get-AzVirtualNetwork -Name RMVNet -ResourceGroupName RMRG)
    
  6. Создайте конфигурацию IP-адресации шлюза. Конфигурация шлюза определяет используемые подсеть и общедоступный IP-адрес. Используйте следующий пример, чтобы создать конфигурацию шлюза.

    В параметры -SubnetId и -PublicIpAddressId должны передаваться объекты свойства идентификатора из подсети и IP-адреса соответственно. Нельзя использовать простую строку. Эти переменные задаются на этапе запроса общедоступного IP-адреса и этапе получения подсети.

    $gwipconfig = New-AzVirtualNetworkGatewayIpConfig `
    -Name gwipconfig -SubnetId $subnet.id `
    -PublicIpAddressId $ipaddress.id
    
  7. Создайте шлюз виртуальной сети Resource Manager, выполнив приведенную ниже команду. -VpnType должен иметь значение RouteBased. Для создания шлюза потребуется 45 минут или больше.

    New-AzVirtualNetworkGateway -Name RMGateway -ResourceGroupName RMRG `
    -Location "EastUS" -GatewaySKU Standard -GatewayType Vpn `
    -IpConfigurations $gwipconfig `
    -EnableBgp $false -VpnType RouteBased
    
  8. После создания VPN-шлюза скопируйте общедоступный IP-адрес. Он понадобится при настройке параметров локальной сети для классической виртуальной сети. Для получения общедоступного IP-адреса можно использовать следующий командлет. В возврате должен быть указан общедоступный IP-адрес IpAddress.

    Get-AzPublicIpAddress -Name rmgwpip -ResourceGroupName RMRG
    

Изменение параметров локального сайта виртуальной сети

В этом разделе вы будете иметь дело с классической виртуальной сетью. Вы замените заполнитель IP-адреса, указанный при настройке параметров локального сайта, который будет использоваться для подключения к шлюзу виртуальной сети Resource Manager. Так как вы работаете с классической виртуальной сетью, используйте PowerShell, установленный локально на вашем компьютере, а не Azure Cloud Shell в режиме "Попробовать".

  1. Экспортируйте файл конфигурации сети.

    Get-AzureVNetConfig -ExportToFile C:\AzureNet\NetworkConfig.xml
    
  2. С помощью текстового редактора измените значение VPNGatewayAddress. Замените заполнитель IP-адреса общедоступным IP-адресом шлюза Resource Manager, затем сохраните изменения.

    <VPNGatewayAddress>13.68.210.16</VPNGatewayAddress>
    
  3. Импортируйте измененный файл конфигурации сети в Azure.

    Set-AzureVNetConfig -ConfigurationPath C:\AzureNet\NetworkConfig.xml
    

Создание подключения между шлюзами

Для создания подключения между шлюзами требуется PowerShell. Чтобы использовать классическую версию командлетов PowerShell, может потребоваться добавить учетную запись Azure. Чтобы сделать это, используйте командлет Add-AzureAccount.

  1. Задайте общий ключ в консоли PowerShell. Перед выполнением командлетов ознакомьтесь с файлом конфигурации сети, который вы скачали, чтобы узнать, какие именно имена ожидает Azure. Если указывается имя виртуальной сети с пробелами, заключите его в одиночные кавычки.

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

    -SharedKey — это значение, которое следует создать и задать. В примере мы использовали abc123, но вы можете создать и использовать что-нибудь посложнее. Важно отметить, что заданное здесь значение должно совпадать со значением, которое вы укажете на следующем шаге при создании подключения. В результате выполнения должно отобразиться состояние Успешно.

    Set-AzureVNetGatewayKey -VNetName ClassicVNet `
    -LocalNetworkSiteName RMVNetSite -SharedKey abc123
    
  2. Создайте VPN-подключение, выполнив следующие команды.

    Задайте переменные.

    $vnet01gateway = Get-AzLocalNetworkGateway -Name ClassicVNetSite -ResourceGroupName RMRG
    $vnet02gateway = Get-AzVirtualNetworkGateway -Name RMGateway -ResourceGroupName RMRG
    

    Создайте подключение. Обратите внимание, что для параметра -ConnectionType используется значение IPsec, а не Vnet2Vnet.

    New-AzVirtualNetworkGatewayConnection -Name RM-Classic -ResourceGroupName RMRG `
    -Location "East US" -VirtualNetworkGateway1 `
    $vnet02gateway -LocalNetworkGateway2 `
    $vnet01gateway -ConnectionType IPsec -RoutingWeight 10 -SharedKey 'abc123'
    

Проверка подключений

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

Чтобы проверить выполнение подключения, используйте командлет Get-AzureVNetConnection. Этот командлет должен выполняться локально на компьютере.

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

    Get-AzureVNetConnection "ClassicVNet"
    
  2. После завершения работы командлета просмотрите результаты. В следующем примере состояние Подключение тивности отображается как "Подключение" и вы можете видеть входящий трафик и исходящие байты.

    ConnectivityState         : Connected
    EgressBytesTransferred    : 0
    IngressBytesTransferred   : 0
    LastConnectionEstablished : 4/25/2022 4:24:34 PM
    LastEventID               : 24401
    LastEventMessage          : The connectivity state for the local network site 'RMVNetSite' changed from Not Connected to Connected.
    LastEventTimeStamp        : 4/25/2022 4:24:34 PM
    LocalNetworkSiteName      : RMVNetSite
    OperationDescription      :
    OperationId               :
    OperationStatus           :
    

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

Убедиться в успешном выполнении подключения можно с помощью командлета Get-AzVirtualNetworkGatewayConnection с параметром -Debug или без него.

  1. Используйте командлет из следующего примера, подставив свои значения. При появлении запроса выберите "A", чтобы выполнить команду All (Все). В примере параметр --name — это имя подключения, которое требуется проверить.

    Get-AzVirtualNetworkGatewayConnection -Name VNet1toSite1 -ResourceGroupName TestRG1
    
  2. После завершения работы командлета просмотрите результаты. В следующем примере состояние подключения отображается как "Подключение ed", и вы можете видеть входящие и исходящие байты.

    "connectionStatus": "Connected",
    "ingressBytesTransferred": 33509044,
    "egressBytesTransferred": 4142431
    

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

Дополнительные сведения о подключениях типа "виртуальная сеть — виртуальная сеть" см. в разделе VPN-шлюз: вопросы и ответы.