Подключение виртуальных сетей из различных моделей развертывания с использованием 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, для правильного создания подключений необходимо установить обе версии командлетов.
Командлеты PowerShell для управления услугами (классические). При установке командлетов управления службами может потребоваться изменить политику выполнения, чтобы установить классическую версию модуля Azure.
Подробнее: Установка и настройка 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. Скачайте файл конфигурации сети
Запустите консоль PowerShell с повышенными правами и войдите в свою учетную запись Azure. Следующий командлет запрашивает учетные данные входа для вашей учетной записи Azure. После выполнения входа он скачивает параметры учетной записи, чтобы они были доступны в Azure PowerShell. В этом разделе используются классические командлеты Azure PowerShell для управления службами.
Add-AzureAccount
Получите подписку Azure.
Get-AzureSubscription
При наличии нескольких подписок выберите подписку, которую вы хотите использовать.
Select-AzureSubscription -SubscriptionName "Name of subscription"
Создайте каталог на своем компьютере. В эом примере мы создали AzureNet.
Экспортируйте файл конфигурации сети Azure, выполнив приведенную ниже команду. При необходимости можно изменить расположение файла для экспорта.
Get-AzureVNetConfig -ExportToFile C:\AzureNet\NetworkConfig.xml
Откройте скачанный XML-файл, чтобы внести изменения. Пример файла конфигурации сети см. в схеме конфигурации сети.
Запишите значение
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-адреса шлюза классической виртуальной сети.
В консоли PowerShell войдите в свою учетную запись Azure. Следующий командлет запрашивает учетные данные входа для вашей учетной записи Azure. После выполнения входа он скачивает параметры учетной записи, чтобы они были доступны в Azure PowerShell. При необходимости можно использовать функцию "Попробовать" для запуска Azure Cloud Shell в браузере.
Если вы используете Azure Cloud Shell, пропустите выполнение следующего командлета:
Connect-AzAccount
Чтобы убедиться, что вы используете подходящую подписку, выполните следующий командлет:
Get-AzSubscription
При наличии нескольких подписок укажите подписку, которую вы хотите использовать.
Select-AzSubscription -SubscriptionName "Name of subscription"
Создайте локальный сетевой шлюз. В виртуальной сети термин "шлюз локальной сети" обычно означает локальное расположение. В этом случае термин "шлюз локальной сети" указывает на классическую виртуальную сеть. Присвойте этому расположению имя, с помощью которого служба 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
Запросите общедоступный IP-адрес, который нужно выделить для шлюза виртуальной сети Resource Manager. Указать необходимый вам IP-адрес нельзя. IP-адрес выделяется для шлюза виртуальной сети динамически. Но это не значит, что IP-адрес изменится. IP-адрес шлюза виртуальной сети изменяется только после его удаления и повторного создания. При изменении размера, сбросе или других внутренних операциях обслуживания или обновления IP-адрес шлюза не изменяется.
На этом этапе также задается переменная, которая будет использоваться позже.
$ipaddress = New-AzPublicIpAddress -Name rmgwpip ` -ResourceGroupName RMRG -Location 'EastUS' ` -AllocationMethod Dynamic
Проверьте наличие подсети шлюза в виртуальной сети. Если подсети шлюза нет, добавьте ее. Присвойте подсети шлюза имя GatewaySubnet.
$vnet = Get-AzVirtualNetwork -ResourceGroupName RMRG -Name RMVNet Add-AzVirtualNetworkSubnetConfig -Name 'GatewaySubnet' -AddressPrefix 192.168.255.0/27 -VirtualNetwork $vnet Set-AzVirtualNetwork -VirtualNetwork $vnet
Получите подсеть, используемую для шлюза, выполнив приведенную ниже команду. На этом этапе мы также зададим переменную, которая будет использоваться на следующем этапе.
-Name — это имя виртуальной сети Resource Manager.
-ResourceGroupName — это группа ресурсов, с которой связана виртуальная сеть. Подсеть шлюза для этой виртуальной сети уже должна существовать и иметь имя GatewaySubnet .$subnet = Get-AzVirtualNetworkSubnetConfig -Name GatewaySubnet ` -VirtualNetwork (Get-AzVirtualNetwork -Name RMVNet -ResourceGroupName RMRG)
Создайте конфигурацию IP-адресации шлюза. Конфигурация шлюза определяет используемые подсеть и общедоступный IP-адрес. Используйте следующий пример, чтобы создать конфигурацию шлюза.
В параметры -SubnetId и -PublicIpAddressId должны передаваться объекты свойства идентификатора из подсети и IP-адреса соответственно. Нельзя использовать простую строку. Эти переменные задаются на этапе запроса общедоступного IP-адреса и этапе получения подсети.
$gwipconfig = New-AzVirtualNetworkGatewayIpConfig ` -Name gwipconfig -SubnetId $subnet.id ` -PublicIpAddressId $ipaddress.id
Создайте шлюз виртуальной сети Resource Manager, выполнив приведенную ниже команду.
-VpnType
должен иметь значение RouteBased. Для создания шлюза потребуется 45 минут или больше.New-AzVirtualNetworkGateway -Name RMGateway -ResourceGroupName RMRG ` -Location "EastUS" -GatewaySKU Standard -GatewayType Vpn ` -IpConfigurations $gwipconfig ` -EnableBgp $false -VpnType RouteBased
После создания VPN-шлюза скопируйте общедоступный IP-адрес. Он понадобится при настройке параметров локальной сети для классической виртуальной сети. Для получения общедоступного IP-адреса можно использовать следующий командлет. В возврате должен быть указан общедоступный IP-адрес IpAddress.
Get-AzPublicIpAddress -Name rmgwpip -ResourceGroupName RMRG
Изменение параметров локального сайта виртуальной сети
В этом разделе вы будете иметь дело с классической виртуальной сетью. Вы замените заполнитель IP-адреса, указанный при настройке параметров локального сайта, который будет использоваться для подключения к шлюзу виртуальной сети Resource Manager. Так как вы работаете с классической виртуальной сетью, используйте PowerShell, установленный локально на вашем компьютере, а не Azure Cloud Shell в режиме "Попробовать".
Экспортируйте файл конфигурации сети.
Get-AzureVNetConfig -ExportToFile C:\AzureNet\NetworkConfig.xml
С помощью текстового редактора измените значение VPNGatewayAddress. Замените заполнитель IP-адреса общедоступным IP-адресом шлюза Resource Manager, затем сохраните изменения.
<VPNGatewayAddress>13.68.210.16</VPNGatewayAddress>
Импортируйте измененный файл конфигурации сети в Azure.
Set-AzureVNetConfig -ConfigurationPath C:\AzureNet\NetworkConfig.xml
Создание подключения между шлюзами
Для создания подключения между шлюзами требуется PowerShell. Чтобы использовать классическую версию командлетов PowerShell, может потребоваться добавить учетную запись Azure. Чтобы сделать это, используйте командлет Add-AzureAccount.
Задайте общий ключ в консоли PowerShell. Перед выполнением командлетов ознакомьтесь с файлом конфигурации сети, который вы скачали, чтобы узнать, какие именно имена ожидает Azure. Если указывается имя виртуальной сети с пробелами, заключите его в одиночные кавычки.
В приведенном ниже примере -VNetName — это имя классической виртуальной сети, а -LocalNetworkSiteName — имя, определенное для сайта локальной сети. Проверьте имена обоих файлов конфигурации сети, загруженных ранее.
-SharedKey — это значение, которое следует создать и задать. В примере мы использовали abc123, но вы можете создать и использовать что-нибудь посложнее. Важно отметить, что заданное здесь значение должно совпадать со значением, которое вы укажете на следующем шаге при создании подключения. В результате выполнения должно отобразиться состояние Успешно.
Set-AzureVNetGatewayKey -VNetName ClassicVNet ` -LocalNetworkSiteName RMVNetSite -SharedKey abc123
Создайте 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. Этот командлет должен выполняться локально на компьютере.
Используйте командлет из следующего примера, подставив свои значения. Если имя виртуальной сети содержит пробелы, оно должно быть заключено в кавычки. Используйте имя виртуальной сети, указанное в файле конфигурации сети.
Get-AzureVNetConnection "ClassicVNet"
После завершения работы командлета просмотрите результаты. В следующем примере состояние подключения отображается как "Подключено" и отображается входящие и исходящие байты.
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 или без него.
Используйте командлет из следующего примера, подставив свои значения. При появлении запроса выберите "A", чтобы выполнить команду All (Все). В примере параметр --name — это имя подключения, которое требуется проверить.
Get-AzVirtualNetworkGatewayConnection -Name VNet1toSite1 -ResourceGroupName TestRG1
После завершения работы командлета просмотрите результаты. В следующем примере состояние подключения отображается как "Подключено" и отображается входящие и исходящие байты.
"connectionStatus": "Connected", "ingressBytesTransferred": 33509044, "egressBytesTransferred": 4142431
Следующие шаги
Дополнительные сведения о подключениях типа "виртуальная сеть — виртуальная сеть" см. в разделе VPN-шлюз: вопросы и ответы.