Установка пирингового подключения между виртуальными сетями с помощью PowerShell

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

Вы узнаете, как выполнять следующие задачи:

  • создание двух виртуальных сетей;

  • соединение двух виртуальных сетей с помощью пиринговой связи;

  • развертывание виртуальной машины в каждой из виртуальных сетей;

  • Взаимодействие между виртуальными машинами

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

Azure Cloud Shell

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

Начало работы с Azure Cloud Shell

Вариант Пример и ссылка
Нажмите кнопку Попробовать в правом верхнем углу блока кода или команд. При нажатии кнопки Попробовать код или команда не копируется в Cloud Shell автоматически. Снимок экрана: пример открытия Azure Cloud Shell с помощью кнопки
Чтобы открыть Cloud Shell в браузере, перейдите по адресу https://shell.azure.com или нажмите кнопку Запуск Cloud Shell. Кнопка запуска Azure Cloud Shell.
Нажмите кнопку Cloud Shell в строке меню в правом верхнем углу окна портала Azure. Снимок экрана: кнопка

Чтобы использовать Azure Cloud Shell, выполните следующие действия:

  1. Запустите Cloud Shell.

  2. Нажмите кнопку Копировать в блоке кода (или блоке команд), чтобы скопировать код или команду.

  3. Вставьте код или команду в окно сеанса Cloud Shell, нажав клавиши CTRL+SHIFT+V в Windows и Linux или CMD+SHIFT+V в macOS.

  4. Нажмите клавишу ВВОД, чтобы запустить код или команду.

Чтобы установить и использовать PowerShell локально для работы с этой статьей, вам понадобится модуль Azure PowerShell 1.0.0 или более поздней версии. Выполните командлет Get-Module -ListAvailable Az, чтобы узнать установленную версию. Если вам необходимо выполнить обновление, ознакомьтесь со статьей, посвященной установке модуля Azure PowerShell. Если модуль PowerShell запущен локально, необходимо также выполнить командлет Connect-AzAccount, чтобы создать подключение к Azure.

Создание виртуальных сетей

Перед созданием виртуальной сети необходимо создать для нее группу ресурсов и другие компоненты, указанные в этой статье. Создайте группу ресурсов с помощью командлета New-AzResourceGroup. В следующем примере создается группа ресурсов с именем test-rg в расположении eastus .

$resourceGroup = @{
    Name = "test-rg"
    Location = "EastUS"
}
New-AzResourceGroup @resourceGroup

Создайте виртуальную сеть с помощью командлета New-AzVirtualNetwork. В следующем примере создается виртуальная сеть с именем vnet-1 с префиксом адреса 10.0.0.0.0/16.

$vnet1 = @{
    ResourceGroupName = "test-rg"
    Location = "EastUS"
    Name = "vnet-1"
    AddressPrefix = "10.0.0.0/16"
}
$virtualNetwork1 = New-AzVirtualNetwork @vnet1

Создайте конфигурацию подсети с помощью Add-AzVirtualNetworkSubnetConfig. В следующем примере создается конфигурация подсети с префиксом адреса 10.0.0/24 :

$subConfig = @{
    Name = "subnet-1"
    AddressPrefix = "10.0.0.0/24"
    VirtualNetwork = $virtualNetwork1
}
$subnetConfig = Add-AzVirtualNetworkSubnetConfig @subConfig

Запишите конфигурацию подсети в виртуальную сеть с помощью командлета Set-AzVirtualNetwork, который создает подсеть.

$virtualNetwork1 | Set-AzVirtualNetwork

Создайте виртуальную сеть с префиксом адреса 10.1.0.0/16 и одной подсетью:

# Create the virtual network.
$vnet2 = @{
    ResourceGroupName = "test-rg"
    Location = "EastUS"
    Name = "vnet-2"
    AddressPrefix = "10.1.0.0/16"
}
$virtualNetwork2 = New-AzVirtualNetwork @vnet2

# Create the subnet configuration.
$subConfig = @{
    Name = "subnet-1"
    AddressPrefix = "10.1.0.0/24"
    VirtualNetwork = $virtualNetwork2
}
$subnetConfig = Add-AzVirtualNetworkSubnetConfig @subConfig

# Write the subnet configuration to the virtual network.
$virtualNetwork2 | Set-AzVirtualNetwork

Одноранговые виртуальные сети

Создайте пиринг с помощью командлета Add-AzVirtualNetworkPeering. В следующем примере одноранговые узлы vnet-1 к виртуальной сети-2.

$peerConfig1 = @{
    Name = "vnet-1-to-vnet-2"
    VirtualNetwork = $virtualNetwork1
    RemoteVirtualNetworkId = $virtualNetwork2.Id
}
Add-AzVirtualNetworkPeering @peerConfig1

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

$peerConfig2 = @{
    Name = "vnet-2-to-vnet-1"
    VirtualNetwork = $virtualNetwork2
    RemoteVirtualNetworkId = $virtualNetwork1.Id
}
Add-AzVirtualNetworkPeering @peerConfig2

В выходных данных, возвращенных после выполнения предыдущей команды, для состояния пиринга будет отображаться значение Подключено. Azure также изменил состояние пиринга виртуальной сети-1-vnet-2 на Подключение. Убедитесь, что состояние пиринга для пиринга виртуальной сети-1-vnet-2 изменилось на Подключение спомощью Get-AzVirtualNetworkPeering.

$peeringState = @{
    ResourceGroupName = "test-rg"
    VirtualNetworkName = "vnet-1"
}
Get-AzVirtualNetworkPeering @peeringState | Select PeeringState

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

Создание виртуальных машин

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

Создание первой виртуальной машины

Создайте виртуальную машину с помощью команды New-AzVM. В следующем примере создается виртуальная машина с именем vm-1 в виртуальной сети-1 . Чтобы можно было перейти к следующему шагу, параметр -AsJob позволяет создать виртуальную машину в фоновом режиме. При появлении запроса введите имя пользователя и пароль для виртуальной машины.

$vm1 = @{
    ResourceGroupName = "test-rg"
    Location = "EastUS"
    VirtualNetworkName = "vnet-1"
    SubnetName = "subnet-1"
    ImageName = "Win2019Datacenter"
    Name = "vm-1"
}
New-AzVm @vm1 -AsJob

Создание второй виртуальной машины

$vm2 = @{
    ResourceGroupName = "test-rg"
    Location = "EastUS"
    VirtualNetworkName = "vnet-2"
    SubnetName = "subnet-1"
    ImageName = "Win2019Datacenter"
    Name = "vm-2"
}
New-AzVm @vm2

Создание виртуальной машины занимает несколько минут. Не продолжайте выполнять последующие действия, пока Azure не создаст виртуальную машину 2 и не возвращает выходные данные в PowerShell.

Примечание.

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

IP-адрес исходящего доступа по умолчанию отключен при возникновении одного из следующих событий:

  • Общедоступный IP-адрес назначается виртуальной машине.
  • Виртуальная машина размещается в серверном пуле стандартной подсистемы балансировки нагрузки с правилами исходящего трафика или без нее.
  • Ресурс шлюза NAT Azure назначается подсети виртуальной машины.

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

Дополнительные сведения об исходящих подключениях в Azure см. в статье об исходящем доступе по умолчанию в Azure и использовании преобразования исходящих сетевых адресов (SNAT) для исходящих подключений.

Взаимодействие между виртуальными машинами

Вы можете подключиться к общедоступному IP-адресу виртуальной машины через Интернет. Чтобы получить общедоступный IP-адрес виртуальной машины, выполните командлет Get-AzPublicIpAddress. В следующем примере возвращается общедоступный IP-адрес виртуальной машины vm-1 :

$ipAddress = @{
    ResourceGroupName = "test-rg"
    Name = "vm-1"
}
Get-AzPublicIpAddress @ipAddress | Select IpAddress

Используйте следующую команду, чтобы создать сеанс удаленного рабочего стола с виртуальной машиной vm-1 на локальном компьютере. Замените <publicIpAddress> IP-адресом, полученным от предыдущей команды.

mstsc /v:<publicIpAddress>

Создается и открывается файл протокола удаленного рабочего стола (RDP). Введите имя пользователя и пароль, а затем нажмите кнопку ОК. Возможно, понадобится выбрать More choices (Дополнительные варианты) и Use a different account (Использовать другую учетную запись), чтобы указать учетные данные, введенные при создании виртуальной машины. При входе в систему может появиться предупреждение о сертификате. Чтобы продолжить процесс подключения, нажмите кнопку Да или Продолжить.

На виртуальной машине 1 включите протокол ICMP для управления интернетом через брандмауэр Windows, чтобы вы могли выполнить проверку связи с этой виртуальной машиной из виртуальной машины 2 на следующем шаге с помощью PowerShell:

New-NetFirewallRule –DisplayName "Allow ICMPv4-In" –Protocol ICMPv4

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

Чтобы подключиться к vm-2, введите следующую команду из командной строки на виртуальной машине-1:

mstsc /v:10.1.0.4

Вы включили связь на виртуальной машине-1. Теперь вы можете ping vm-1 по IP-адресу из командной строки на виртуальной машине 2.

ping 10.0.0.4

Вы получите четыре ответа. Отключите сеансы RDP как к vm-1, так и vm-2.

Очистка ресурсов

Вы можете удалить ненужную группу ресурсов и все содержащиеся в ней ресурсы с помощью командлета Remove-AzResourceGroup.

Remove-AzResourceGroup -Name test-rg -Force

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

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

Теперь вы можете подключить свой компьютер к виртуальной сети через VPN и взаимодействовать с ресурсами в виртуальной сети или в виртуальных сетях, соединенных пиринговой связью. Примеры сценариев для многократного использования, с помощью которых можно выполнять многие задачи, описанные в статьях о виртуальных сетях, можно найти здесь.