Маршрутизация трафика между сетями в инфраструктуре SDN
В этой статье описывается, как маршрутизировать трафик между сетями в программно-определяемой инфраструктуре сети (SDN), настроенной в структуре System Center диспетчер виртуальных машин (VMM).
Шлюз RAS SDN позволяет маршрутизировать сетевой трафик между физическими и виртуальными сетями независимо от того, где находятся ресурсы. Шлюз SDN RAS — это мультитенантный протокол шлюза Boarder (BGP) и поддерживает подключение с помощью виртуальной частной сети типа "сеть — сеть" (VPN) с помощью IPsec или универсальной инкапсуляции маршрутизации (GRE) или перенаправления уровня 3. Подробнее.
Примечание.
- С VMM 2019 UR1 тип подключенной сети изменяется как подключенная сеть.
- VMM 2019 UR2 и более поздних версий поддерживает IPv6.
- IPv6 поддерживается для туннеля IPSec, туннеля GRE и уровня L3.
Примечание.
- IPv6 поддерживается для туннеля IPSec, туннеля GRE и уровня L3.
Перед началом работы
Выполните следующие действия:
Развертываются сетевой контроллер SDN, подсистема балансировки нагрузки программного обеспечения SDN и шлюз RAS SDN.
Создается сеть виртуальной машины SDN с виртуализацией сети.
Настройка VPN-подключений типа "сеть — сеть" с помощью VMM
VPN-подключение типа "сеть — сеть" позволяет безопасно подключать две сети в разных физических расположениях с помощью Интернета.
Для поставщиков облачных служб (CSPs), которые размещают множество клиентов в центре обработки данных, шлюз SDN RAS предоставляет мультитенантное решение шлюза, которое позволяет клиентам получать доступ к ресурсам и управлять их ресурсами через VPN-подключения типа "сеть — сеть" с удаленных сайтов, что, в свою очередь, позволяет сетевому трафику между виртуальными ресурсами в центре обработки данных и их физической сетью.
VMM 2025 и 2022 поддерживают двойной стек (Ipv4 + Ipv6) для компонентов SDN.
Чтобы включить IPv6 для VPN-подключения типа "сеть — сеть", подсеть маршрутизации должна быть как IPv4, так и IPv6. Для работы шлюза в IPv6 укажите адреса IPv4 и IPv6, разделенные точкой с запятой (;) и укажите IPv6-адрес в удаленной конечной точке. Например, 192.0.2.1/23; 2001:0db8:85a3:0000:0000:8a2e:0370::/64. Для указания диапазона IP-адресов не используйте сокращенную форму IPv6-адреса; используйте формат "2001:db8:0:200:0:0:7" вместо "2001:db8:0:200::7".
Настройка подключения IPSec
Используйте следующую процедуру:
- Выберите сеть виртуальной машины, которую требуется настроить подключение типа "сеть — сеть" и выберите "Подключение".
- Выберите "Подключиться к другой сети через VPN-туннель". При необходимости, чтобы включить пиринг BGP в центре обработки данных, выберите включить протокол BGP (BGP).
- Выберите службу сетевого контроллера для устройства шлюза.
- Выберите VPN-подключения>add>IPSec Tunnel.
- Введите подсеть, как показано на следующей схеме. Эта подсеть используется для маршрутизации пакетов из сети виртуальных машин. Вам не нужно предварительно настроить эту подсеть в центре обработки данных.
- Введите имя подключения и IP-адрес удаленной конечной точки. При необходимости настройте пропускную способность.
- В разделе "Проверка подлинности" выберите тип проверки подлинности, который требуется использовать. Если вы решили пройти проверку подлинности с помощью учетной записи запуска от имени, создайте учетную запись пользователя с именем пользователя и ключОМ IPSec в качестве пароля для учетной записи.
- В разделе "Маршруты" введите все удаленные подсети, к которым требуется подключиться. Если на странице подключения выбран протокол BGP, маршруты не требуются.
- На вкладке "Дополнительно" примите параметры по умолчанию.
- Если вы выбрали включить протокол BGP на странице подключения, вы можете заполнить ASN, одноранговый IP-адрес BGP и его ASN на странице мастера протокола пограничного шлюза, как показано ниже.
- Чтобы проверить подключение, попробуйте проверить связь с IP-адресом удаленной конечной точки из одной из виртуальных машин в сети виртуальной машины.
Настройка туннелирования GRE
Туннели GRE позволяют подключаться между виртуальными сетями клиента и внешними сетями. Так как протокол GRE является упрощенным и поддерживает GRE на большинстве сетевых устройств, он становится идеальным выбором для туннелирования, где шифрование данных не требуется. Поддержка GRE в туннелях "сеть — сеть" (S2S) упрощает пересылку трафика между виртуальными сетями клиента и внешними сетями клиента.
Используйте следующую процедуру:
- Выберите сеть виртуальной машины, в которой требуется настроить подключение S2S GRE, и выберите "Подключение".
- Выберите "Подключиться к другой сети через VPN-туннель". При необходимости, чтобы включить пиринг BGP в центре обработки данных, выберите включить протокол BGP (BGP).
- Выберите службу сетевого контроллера для устройства шлюза.
- Выберите "Добавить>ТУННЕЛЬ GRE" для VPN-подключений.>
- Введите подсеть, как показано на следующей схеме. Эта подсеть используется для маршрутизации пакетов из сети виртуальной машины. Эта подсеть не должна быть предварительно настроена в центре обработки данных.
- Введите имя подключения и укажите IP-адрес удаленной конечной точки.
- Введите клавишу GRE.
- При необходимости вы можете завершить другие поля на этом экране; Эти значения не требуются для настройки подключения.
- В разделе "Маршруты" добавьте все удаленные подсети, к которым требуется подключиться. Если выбран параметр "Включить протокол BGP" в подключении, этот экран можно оставить пустым и вместо этого завершить поля ASN, однорангового IP-адреса BGP и ASN на вкладке "Протокол пограничного шлюза".
- Для остальных параметров можно использовать значения по умолчанию.
- Чтобы проверить подключение, попробуйте проверить связь с IP-адресом удаленной конечной точки из одной из виртуальных машин в сети виртуальных машин.
Настройка подключений IPsec и GRE на удаленном сайте
На устройстве удаленного узла во время установки подключения IPSec или GRE используйте IP-адрес конечной точки сети виртуальной машины из пользовательского интерфейса VMM в качестве адреса назначения.
Настройка пересылки L3
Пересылка L3 обеспечивает подключение между физической инфраструктурой в центре обработки данных и виртуализированной инфраструктурой в облаке виртуализации сети Hyper-V.
С помощью перенаправления L3 виртуальные машины сети клиента могут подключаться к физической сети через шлюз SDN Windows Server 2016, который уже настроен в среде SDN. В этом случае шлюз SDN выступает в качестве маршрутизатора между виртуализированной сетью и физической сетью.
Дополнительные сведения см. в следующих статьях: шлюз Windows Server в качестве шлюза пересылки и высокого уровня доступности шлюза RAS.
Прежде чем пытаться настроить L3, убедитесь в следующем:
- Убедитесь, что вы вошли в систему в качестве администратора на сервере VMM.
- Необходимо настроить уникальную логическую сеть следующего прыжка с уникальным идентификатором виртуальной ЛС для каждой сети виртуальной машины клиента, для которой необходимо настроить перенаправление L3. Должно быть сопоставление 1:1 между сетью клиента и соответствующей физической сетью (с уникальным идентификатором виртуальной ЛС).
Выполните следующие действия, чтобы создать логическую сеть следующего прыжка в SCVMM:
В консоли VMM выберите логические сети, щелкните правой кнопкой мыши и выберите "Создать логическую сеть".
На странице "Параметры" выберите одну подключенную сеть и установите флажок для создания сети виртуальных машин с тем же именем, чтобы разрешить виртуальным машинам доступ к этой логической сети напрямую и управляемому контроллером сети Майкрософт
Создайте пул IP-адресов для новой логической сети.
IP-адрес из этого пула необходим в скрипте для настройки перенаправления L3.
В следующей таблице приведены примеры динамических и статических подключений L3.
Параметр | Сведения и примеры значений |
---|---|
L3VPNConnectionName | Определяемое пользователем имя для сетевого подключения пересылки L3. Пример: Contoso_L3_GW |
VmNetworkName | Имя виртуальной сети клиента, доступной через сетевое подключение L3. Эта сеть должна существовать при запуске скрипта. Пример: ContosoVMNetwork |
NextHopVMNetworkName | Определяемое пользователем имя для сети виртуальной машины следующего прыжка, которая была создана в качестве обязательного условия. Это представляет физическую сеть, которая хочет взаимодействовать с сетью виртуальной машины клиента. Эта сеть должна существовать при запуске этого скрипта. Пример: Contoso_L3_Network |
LocalIPAddresses | IP-адреса, которые необходимо настроить в сетевом интерфейсе шлюза SDN L3. Этот IP-адрес должен принадлежать созданной логической сети следующего прыжка. Кроме того, необходимо указать маску подсети. Пример: 10.127.134.55/25 |
PeerIPAddresses | IP-адрес шлюза физической сети, доступный через логическую сеть L3. Этот IP-адрес должен принадлежать логической сети следующего прыжка, созданной в предварительных требованиях. Этот IP-адрес будет служить следующим прыжком после того, как трафик, предназначенный для физической сети из сети виртуальной машины клиента, достигает шлюза SDN. Пример: 10.127.134.65 |
Подсеть шлюза | Подсеть, используемая для маршрутизации между шлюзом HNV и виртуальной сетью клиента. Вы можете использовать любую подсеть, убедитесь, что она не перекрывается с логической сетью следующего прыжка. Пример:192.168.2.0/24 |
МаршрутизацияSubnets | Статические маршруты, которые должны находиться в интерфейсе L3 шлюза HNV. Эти маршруты предназначены для подсетей физической сети, которые должны быть доступны из сети виртуальной машины клиента через подключение L3. |
EnableBGP | Параметр включения BGP. Значение по умолчанию: false. |
TenantASNRoutingSubnets | Номер ASN шлюза клиента, только если включенА BGP. |
Выполните следующий сценарий, чтобы настроить пересылку L3. Ознакомьтесь с таблицей выше, чтобы проверить, что определяет каждый параметр скрипта.
param (
[Parameter(Mandatory=$true)]
# Name of the L3 VPN connection
$L3VPNConnectionName,
[Parameter(Mandatory=$true)]
# Name of the VM network to create gateway
$VmNetworkName,
[Parameter(Mandatory=$true)]
# Name of the Next Hop one connected VM network
# used for forwarding
$NextHopVmNetworkName,
[Parameter(Mandatory=$true)]
# IPAddresses on the local side that will be used
# for forwarding
# Format should be @("10.10.10.100/24")
$LocalIPAddresses,
[Parameter(Mandatory=$true)]
# IPAddresses on the remote side that will be used
# for forwarding
# Format should be @("10.10.10.200")
$PeerIPAddresses,
[Parameter(Mandatory=$false)]
# Subnet for the L3 gateway
# default value 10.254.254.0/29
$GatewaySubnet = "10.254.254.0/29",
[Parameter(Mandatory=$false)]
# List of subnets for remote tenants to add routes for static routing
# Format should be @("14.1.20.0/24","14.1.20.0/24");
$RoutingSubnets = @(),
[Parameter(Mandatory=$false)]
# Enable BGP in the tenant space
$EnableBGP = $false,
[Parameter(Mandatory=$false)]
# ASN number for the tenant gateway
# Only applicable when EnableBGP is true
$TenantASN = "0"
)
# Import SC-VMM PowerShell module
Import-Module virtualmachinemanager
# Retrieve Tenant VNET info and exit if VM Network not available
$vmNetwork = Get-SCVMNetwork -Name $VmNetworkName;
if ($vmNetwork -eq $null)
{
Write-Verbose "VM Network $VmNetworkName not found, quitting"
return
}
# Retrieve L3 Network info and exit if VM Network not available
$nextHopVmNetwork = Get-SCVMNetwork -Name $NextHopVmNetworkName;
if ($nextHopVmNetwork -eq $null)
{
Write-Verbose "Next Hop L3 VM Network $NextHopVmNetworkName not found, quitting"
return
}
# Retrieve gateway Service and exit if not available
$gatewayDevice = Get-SCNetworkGateway | Where {$_.Model -Match "Microsoft Network Controller"};
if ($gatewayDevice -eq $null)
{
Write-Verbose "Gateway Service not found, quitting"
return
}
# Retrieve Tenant Virtual Gateway info
$vmNetworkGatewayName = $VmNetwork.Name + "_Gateway";
$VmNetworkGateway = Get-SCVMNetworkGateway -Name $vmNetworkGatewayName -VMNetwork $vmNetwork
# Create a new Tenant Virtual Gateway if not configured
if($VmNetworkGateway -eq $null)
{
if($EnableBGP -eq $false)
{
# Create a new Virtual Gateway for tenant
$VmNetworkGateway = Add-SCVMNetworkGateway -Name $vmNetworkGatewayName -EnableBGP $false -NetworkGateway $gatewayDevice -VMNetwork $vmNetwork -RoutingIPSubnet $GatewaySubnet;
}
else
{
if($TenantASN -eq "0")
{
Write-Verbose "Please specify valid ASN when using BGP"
return
}
# Create a new Virtual Gateway for tenant
$VmNetworkGateway = Add-SCVMNetworkGateway -Name $vmNetworkGatewayName -EnableBGP $true -NetworkGateway $gatewayDevice -VMNetwork $vmNetwork -RoutingIPSubnet $GatewaySubnet -AutonomousSystemNumber $TenantASN;
}
}
if ($VmNetworkGateway -eq $null)
{
Write-Verbose "Could not Find / Create Virtual Gateway for $($VmNetwork.Name), quitting"
return
}
# Check if the network connection already exists
$vpnConnection = Get-SCVPNConnection -VMNetworkGateway $VmNetworkGateway -Name $L3VPNConnectionName
if ($vpnConnection -ne $null)
{
Write-Verbose "L3 Network Connection for $($VmNetwork.Name) already configured, skipping"
}
else
{
# Create a new L3 Network connection for tenant
$vpnConnection = Add-SCVPNConnection -NextHopNetwork $nexthopvmNetwork -Name $L3VPNConnectionName -IPAddresses $LocalIPAddresses -PeerIPAddresses $PeerIPAddresses -VMNetworkGateway $VmNetworkGateway -protocol L3;
if ($vpnConnection -eq $null)
{
Write-Verbose "Could not add network connection for $($VmNetwork.Name), quitting"
return
}
Write-Output "Created VPN Connection " $vpnConnection;
}
# Add all the required static routes to the newly created network connection interface
foreach($route in $RoutingSubnets)
{
Add-SCNetworkRoute -IPSubnet $route -RunAsynchronously -VPNConnection $vpnConnection -VMNetworkGateway $VmNetworkGateway
}
Настройка пересылки L3
Пересылка L3 обеспечивает подключение между физической инфраструктурой в центре обработки данных и виртуализированной инфраструктурой в облаке виртуализации сети Hyper-V.
С помощью подключения пересылки L3 виртуальные машины сети клиента могут подключаться к физической сети через шлюз SDN Windows Server 2016/2019, который уже настроен в среде SDN. В этом случае шлюз SDN выступает в качестве маршрутизатора между виртуализированной сетью и физической сетью.
С помощью подключения с переадресацией L3 виртуальные машины сети клиента могут подключаться к физической сети через шлюз Windows Server 2016/2019/2022 SDN, который уже настроен в среде SDN. В этом случае шлюз SDN выступает в качестве маршрутизатора между виртуализированной сетью и физической сетью.
С помощью подключения пересылки L3 виртуальные машины сети клиента могут подключаться к физической сети через шлюз SDN Windows Server 2019/2022/2025, который уже настроен в среде SDN. В этом случае шлюз SDN выступает в качестве маршрутизатора между виртуализированной сетью и физической сетью.
Дополнительные сведения см. в следующих статьях: шлюз Windows Server в качестве шлюза пересылки и высокого уровня доступности шлюза RAS.
Прежде чем пытаться настроить подключение L3, убедитесь в следующем:
- Убедитесь, что вы вошли в систему в качестве администратора на сервере VMM.
- Необходимо настроить уникальную логическую сеть следующего прыжка с уникальным идентификатором виртуальной ЛС для каждой сети виртуальной машины клиента, для которой необходимо настроить перенаправление L3. Должно быть сопоставление 1:1 между сетью клиента и соответствующей физической сетью (с уникальным идентификатором виртуальной ЛС).
Чтобы создать логическую сеть следующего прыжка в VMM, выполните следующие действия.
В консоли VMM выберите логические сети, щелкните правой кнопкой мыши и выберите "Создать логическую сеть".
На странице Параметры выберите Одна подключенная сеть и установите флажок Create a VM network with the same name to allow virtual machines to access this logical network directly (Создать сеть виртуальных машин с тем же именем, чтобы разрешить виртуальным машинам прямой доступ к этой логической сети) и Managed by Microsoft Network Controller (Под управлением сетевого контроллера Майкрософт).
Примечание.
С VMM 2019 UR1 тип подключенной сети изменяется как подключенная сеть.
- Создайте пул IP-адресов для новой логической сети. IP-адрес из этого пула необходим для настройки перенаправления L3.
Чтобы настроить пересылку L3, выполните следующие действия.
Примечание.
Невозможно ограничить пропускную способность в VPN-подключении L3.
В консоли VMM выберите виртуальную сеть клиента, которую требуется подключить к физической сети через шлюз L3.
Щелкните правой кнопкой мыши выбранную виртуальную сеть клиента, выберите "Свойства>подключения".
Выберите "Подключиться к другой сети через VPN-туннель". При необходимости, чтобы включить пиринг BGP в центре обработки данных, выберите включить протокол BGP (BGP).
Выберите службу сетевого контроллера для устройства шлюза.
На странице VPN-подключений выберите "Добавить туннель уровня>3".
Укажите подсеть в формате нотации CIDR для подсети маршрутизации. Эта подсеть используется для маршрутизации пакетов из сети виртуальной машины. Вам не нужно предварительно настроить эту подсеть в центре обработки данных.
Используйте следующие сведения и настройте подключение L3:
Параметр | Сведения |
---|---|
Имя. | Определяемое пользователем имя для сетевого подключения пересылки L3. |
Сеть виртуальной машины (NextHop) | Определяемое пользователем имя для сети виртуальной машины следующего прыжка, которая была создана в качестве обязательного условия. Это представляет физическую сеть, которая хочет взаимодействовать с сетью виртуальной машины клиента. При нажатии кнопки "Обзор" для выбора будут доступны только подключенные сети виртуальных машин, управляемые сетевой службой. |
Одноранговый IP-адрес | IP-адрес шлюза физической сети, доступный через логическую сеть L3. Этот IP-адрес должен принадлежать логической сети следующего прыжка, созданной в качестве необходимых компонентов. Этот IP-адрес будет служить следующим прыжком, когда трафик, предназначенный для физической сети из сети виртуальной машины клиента, достигнет шлюза SDN. Это должен быть IPv4-адрес. Существует несколько одноранговых IP-адресов, и они должны быть разделены запятыми. |
Локальные IP-адреса | IP-адреса, которые необходимо настроить в сетевом интерфейсе шлюза SDN L3. Эти IP-адреса должны принадлежать логической сети со следующим прыжком, которая была создана в качестве необходимого компонента. Кроме того, необходимо указать маску подсети. Пример: 10.127.134.55/25. Это должен быть IPv4-адрес и должен быть в формате нотации CIDR. Одноранговые IP-адреса и локальные IP-адреса должны быть из одного пула. Эти IP-адреса должны принадлежать подсети, определенной в определении логической сети виртуальной машины. |
Если вы используете статические маршруты, введите все удаленные подсети, к которым вы хотите подключиться, в разделе "Маршруты".
Примечание.
Необходимо настроить маршруты в физической сети для подсетей виртуальной сети клиента с следующим прыжком в качестве IP-адреса интерфейса L3 на шлюзе SDN (локальный IP-адрес, используемый при создании подключения L3). Это необходимо для обеспечения правильной маршрутизации трафика в виртуальную сеть клиента через шлюз SDN.
Если вы используете BGP, убедитесь, что пиринг BGP устанавливается между ВНУТРЕННИМ IP-адресом шлюза SDN, который присутствует в другом отсеке на виртуальной машине шлюза (а не в отсеке по умолчанию) и одноранговым устройством в физической сети.
Для работы BGP необходимо выполнить следующие действия.
Добавьте одноранговый узел BGP для подключения L3. Введите данные ASN, IP-адрес однорангового узла BGP и соответствующий ему ASN на странице Протокол BGP.
Определите внутренний адрес шлюза SDN, как указано в следующем разделе.
Создайте одноранговый узел BGP на удаленном конце (шлюз физической сети). При создании узла BGP используйте внутренний адрес шлюза SDN (определенный на предыдущем шаге) в качестве однорангового IP-адреса.
Настройте маршрут в физической сети с назначением в виде внутреннего адреса шлюза SDN и следующим прыжком на IP-адрес интерфейса L3 (значение локального IP-адреса, используемого при создании подключения L3).
Примечание.
После настройки подключения L3 необходимо настроить маршруты в физической сети для подсетей виртуальной сети арендатора, где следующим прыжком является IP-адрес интерфейса L3 в шлюзе SDN (параметр LocalIpAddresses в скрипте). Это необходимо для обеспечения правильной маршрутизации трафика в виртуальную сеть клиента через шлюз SDN.
Вы можете настроить статические маршруты или динамические маршруты (через BGP) с подключением L3. Если вы используете статические маршруты, их можно добавить с помощью Add-SCNetworkRoute , как описано в приведенном ниже сценарии.
Если вы используете BGP с подключением к туннелю L3, пиринг BGP необходимо установить между IP-адресом внутреннего интерфейса шлюза SDN, который присутствует в другом отсеке на виртуальной машине шлюза (а не в секции по умолчанию) и одноранговым устройством в физической сети.
Для работы BGP необходимо выполнить следующие действия.
Добавьте одноранговый узел BGP для подключения L3 с помощью командлета Add-SCBGPPeer .
Пример: Add-SCBGPPeer -Name "peer1" -PeerIPAddress "12.13.14.15" -PeerASN 15 -VMNetworkGateway $VmNetworkGateway
Определите внутренний адрес шлюза SDN, как указано в следующем разделе.
Создайте одноранговый узел BGP на удаленном конце (шлюз физической сети). При создании однорангового узла BGP используйте внутренний адрес шлюза SDN (определенный на шаге 2 выше) в качестве IP-адреса однорангового узла.
Настройте маршрут в физической сети с назначением в качестве внутреннего адреса шлюза SDN и следующего прыжка в качестве IP-адреса интерфейса L3 (параметр LocalIPAddresses в скрипте).
Определение внутреннего адреса шлюза SDN
Это можно сделать следующим образом:
Выполните следующие командлеты PowerShell на установленном компьютере сетевом контроллере или компьютере, настроенном в качестве клиента сетевого контроллера:
$gateway = Get-NetworkControllerVirtualGateway -ConnectionUri <REST uri of your deployment>
$gateway.Properties.NetworkConnections.Properties.IPAddresses
Результаты этой команды могут отображать несколько виртуальных шлюзов в зависимости от того, сколько клиентов настроили подключения шлюза. Каждый виртуальный шлюз может иметь несколько подключений (IPSec, GRE, L3).
Как вы уже знаете IP-адрес интерфейса L3 (LocalIPAddresses) подключения, вы можете определить правильное подключение на основе этого IP-адреса. После правильного сетевого подключения выполните следующую команду (на соответствующем виртуальном шлюзе), чтобы получить IP-адрес маршрутизатора BGP виртуального шлюза.
$gateway.Properties.BgpRouters.Properties.RouterIp
Результат этой команды предоставляет IP-адрес, который необходимо настроить на удаленном маршрутизаторе в качестве однорангового IP-адреса.
Настройка селектора трафика из VMM PowerShell
Используйте следующую процедуру:
Примечание.
Значения используются только в примерах.
Создайте селектор трафика с помощью следующих параметров.
$t= new-object Microsoft.VirtualManager.Remoting.TrafficSelector $t.Type=7 // IPV4=7, IPV6=8 $t.ProtocolId=6 // TCP =6, reference: https://en.wikipedia.org/wiki/List_of_IP_protocol_numbers $t.PortEnd=5090 $t.PortStart=5080 $t.IpAddressStart=10.100.101.10 $t.IpAddressEnd=10.100.101.100
Настройте приведенный выше селектор трафика с помощью параметра -LocalTrafficSelectors add-SCVPNConnection или Set-SCVPNConnection.