在 SDN 基礎結構中跨網路路由傳送流量
本文說明如何在 System Center Virtual Machine Manager (VMM) 網狀架構中設定的軟體定義網路 (SDN) 基礎結構中,路由傳送網路之間的流量。
不論資源位於何處,SDN RAS 閘道都可讓您路由傳送實體和虛擬網路之間的網路流量。 SDN RAS 閘道是多租使用者、面板閘道通訊協定(BGP),能夠支援使用使用 IPsec 或一般路由封裝 (GRE) 或第 3 層轉送的站對站虛擬專用網 (VPN) 進行連線。 深入了解。
注意
- 從 VMM 2019 UR1,一個連線的網路類型會變更為連線的網路。
- VMM 2019 UR2 和更新版本支援 IPv6。
- IPSec 通道、GRE 通道和 L3 層通道支援 IPv6。
注意
- IPSec 通道、GRE 通道和 L3 層通道支援 IPv6。
在您開始使用 Intune 之前
確認下列事項:
已部署 SDN 網路控制站、SDN 軟體負載平衡器和 SDN RAS 閘道。
會建立具有網路虛擬化的SDN VM 網路。
使用 VMM 設定站對站 VPN 連線
站對站 VPN 連線可讓您使用因特網,在不同的實體位置安全地連線兩個網路。
針對在其數據中心內裝載許多租使用者的雲端服務提供者 (CSP),SDN RAS 閘道提供多租使用者閘道解決方案,可讓您的租使用者透過站對站 VPN 連線從遠端月臺存取和管理其資源,進而允許數據中心內的虛擬資源與其實體網路之間的網路流量。
VMM 2025 和 2022 支援 SDN 元件的雙重堆棧 (Ipv4 + Ipv6)。
若要啟用站對站 VPN 連線的 IPv6,路由子網必須是 IPv4 和 IPv6。 若要讓閘道在 IPv6 中運作,請提供以分號分隔的 IPv4 和 IPv6 位址,並在遠端端點中提供 IPv6 位址。 例如, 192.0.2.1/23;2001:0db8:85a3:0000:0000:8a2e:0370::/64。 若要指定VIP範圍,請勿使用IPv6位址的縮短形式;使用 '2001:db8:0:200:0:0:0:7' 格式,而不是 '2001:db8:0:200::7'。
設定IPSec連線
使用下列程式:
- 選取您要設定站對站IPSec連線的 VM 網路,然後選取 [連線]。
- 選取 [ 透過 VPN 信道連線至另一個網络]。 或者,若要在數據中心啟用 BGP 對等互連,請選取 [啟用邊界網關通訊協定][BGP]。
- 選取閘道裝置的網路控制站服務。
- 選取 [VPN 連線>][新增>IPSec 通道]。
- 輸入子網,如下圖所示。 此子網用來將封包從 VM 網路路由傳送。 您不需要在資料中心預先設定此子網。
- 輸入連線的名稱,以及遠端端點的IP位址。 選擇性地設定頻寬。
- 在 [ 驗證] 中,選取您想要使用的驗證類型。 如果您選擇使用執行身分帳戶進行驗證,請使用使用者名稱建立用戶帳戶,並使用IPSec金鑰作為帳戶的密碼。
- 在 [ 路由] 中,輸入您想要連線的所有遠端子網。 如果您已在 [連線能力] 頁面中選取 [啟用邊界網關通訊協定],則不需要路由。
- 在 [ 進階] 索引標籤上,接受預設設定。
- 如果您已在 [連線能力] 頁面中選取 [啟用邊界網關通訊協定(BGP)],則可以在 [邊界網關通訊協定精靈] 頁面上填寫 ASN、對等 BGP IP 及其 ASN,如下所示。
- 若要驗證連線,請嘗試從 VM 網路上的其中一部虛擬機偵測遠端端端點 IP 位址。
設定 GRE 通道
GRE 通道可啟用租使用者虛擬網路與外部網路之間的連線。 由於 GRE 通訊協定是輕量型的,且大部分網路裝置都提供 GRE 的支援,因此它成為不需要加密數據之通道的理想選擇。 站對站 (S2S) 通道中的 GRE 支援可協助租使用者虛擬網路與租使用者外部網路之間的流量轉送。
使用下列程式:
- 選取您想要設定 S2S GRE 連線的 VM 網络,然後選取 [連線]。
- 選取 [ 透過 VPN 信道連線至另一個網络]。 或者,若要在數據中心啟用 BGP 對等互連,請選取 [啟用邊界網關通訊協定][BGP]。
- 選取閘道裝置的網路控制站服務。
- 選取 [VPN 連線>] [新增>GRE 通道]。
- 輸入子網,如下圖所示。 此子網可用來將封包從 VM 網路路由傳送。 您的資料中心不需要預先設定此子網。
- 輸入連線名稱,並指定遠端端端點的IP位址。
- 輸入 GRE 金鑰。
- 您可以選擇性地完成此畫面上的其他欄位;這些值不需要設定連線。
- 在 [ 路由] 中,新增您想要連線的所有遠端子網。 如果您在 [連線能力] 中選取 [啟用邊界閘道通訊協定][BGP],則可以將此畫面保留空白,並改為在 [邊界閘道通訊協定] 索引標籤上完成您的 ASN、對等 BGP IP 和 ASN 欄位。
- 您可以使用其餘設定的預設值。
- 若要驗證連線,請嘗試從 VM 網路上的其中一部虛擬機偵測遠端端端點 IP 位址。
在遠端站臺上設定 IPsec 和 GRE 連線
在遠端對等裝置上,設定IPSec\GRE 連線時,使用 VMM UI 中的 VM 網路端點 IP 位址 作為目的地位址。
設定 L3 轉送
L3 轉送可讓您在數據中心的實體基礎結構與 Hyper-V 網路虛擬化雲端中的虛擬化基礎結構之間連線。
使用 L3 轉送,租用戶網路虛擬機可以透過已在 SDN 環境中設定的 Windows Server 2016 SDN 網關聯機到實體網路。 在此情況下,SDN 閘道會作為虛擬化網路與實體網路之間的路由器。
若要深入瞭解,請參閱下列文章: Windows Server 網關作為轉送閘道 和 RAS 閘道高可用性。
嘗試設定 L3 之前,請先確定下列事項:
- 請確定您已以 VMM 伺服器上的系統管理員身分登入。
- 您必須針對需要設定 L3 轉送的每個租使用者 VM 網路,設定唯一的下一個躍點邏輯網路,其 VLAN 識別符是唯一的。 租用戶網路與對應實體網路之間必須有 1:1 對應(具有唯一 VLAN 標識符)。
使用下列步驟在 SCVMM 中建立下一個躍點邏輯網路:
在 VMM 控制臺上,選取 [邏輯網络],以滑鼠右鍵按兩下並選取 [ 建立邏輯網络]。
在 [ 設定 ] 頁面中,選擇 [一個聯機的網络 ],然後選取 [建立具有相同名稱的 VM 網络] 複選框 ,以允許虛擬機直接 存取此邏輯網络,並由 Microsoft網络控制站管理
建立這個新邏輯網路的IP集區。
腳本中需要此集區的IP位址,才能設定L3轉送。
下表提供動態和靜態 L3 連線的範例。
參數 | 詳細數據/範例值 |
---|---|
L3VPNConnectionName | L3 轉送網路連線的使用者定義名稱。 範例:Contoso_L3_GW |
VmNetworkName | 可透過 L3 網路連線的租使用者虛擬網路名稱。 執行文稿時,此網路必須存在。 範例:ContosoVMNetwork |
NextHopVMNetworkName | 建立為必要條件之下一個躍點 VM 網路的使用者定義名稱。 這代表想要與租使用者 VM 網路通訊的實體網路。 執行此文稿時,此網路必須存在。 範例:Contoso_L3_Network |
LocalIPAddresses | 要設定在 SDN 閘道 L3 網路介面上的IP位址。 此 IP 位址必須屬於您所建立的下一個躍點邏輯網路。 您也必須提供子網掩碼。 範例:10.127.134.55/25 |
PeerIPAddresses | 實體網路閘道的IP位址,可透過L3邏輯網路連線。 此 IP 位址必須屬於您在必要條件中建立的下一個躍點邏輯網路。 一旦從租使用者 VM 網路傳送到實體網路的流量到達 SDN 閘道,此 IP 就會作為下一個躍點。 範例:10.127.134.65 |
GatewaySubnet | 要用於 HNV 閘道與租使用者虛擬網路之間路由的子網。 您可以使用任何子網,確定它不會與下一個躍點邏輯網路重疊。 範例:192.168.2.0/24 |
RoutingSubnets | 必須位於 HNV 閘道 L3 介面上的靜態路由。 這些路由適用於實體網路子網,這些子網必須可透過 L3 連線從租使用者 VM 網路連線。 |
EnableBGP | 啟用 BGP 的選項。 默認值:false。 |
TenantASNRoutingSubnets | 只有在已啟用 BGP 時,租用戶閘道的 ASN 數目。 |
執行下列腳本來設定 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 轉送連線,租使用者網路虛擬機可以透過已在 SDN 環境中設定的 Windows Server 2016/2019/2022 SDN 網關聯機到實體網路。 在此情況下,SDN 閘道會作為虛擬化網路與實體網路之間的路由器。
使用 L3 轉送連線,租使用者網路虛擬機可以透過已在 SDN 環境中設定的 Windows Server 2019/2022/2022/2025 SDN 網關聯機到實體網路。 在此情況下,SDN 閘道會作為虛擬化網路與實體網路之間的路由器。
若要深入瞭解,請參閱下列文章: Windows Server 網關作為轉送閘道 和 RAS 閘道高可用性。
嘗試設定 L3 連線之前,請先確定下列事項:
- 請確定您已以 VMM 伺服器上的系統管理員身分登入。
- 您必須針對需要設定 L3 轉送的每個租使用者 VM 網路,設定唯一的下一個躍點邏輯網路,其 VLAN 識別符是唯一的。 租用戶網路與對應實體網路之間必須有 1:1 對應(具有唯一 VLAN 標識符)。
使用下列步驟在 VMM 中建立下一個躍點邏輯網路:
在 VMM 控制臺上,選取 [邏輯網络],以滑鼠右鍵按兩下並選取 [ 建立邏輯網络]。
在 [ 設定 ] 頁面中,選擇 [一個連線的網络 ],然後選取 [ 建立具有相同名稱的 VM 網络],以允許虛擬機直接 存取此邏輯網络,並由 Microsoft網络控制站管理。
注意
從 VMM 2019 UR1,一個連線的網路類型會變更為連線的網路。
- 建立這個新邏輯網路的IP集區。 需要此集區的IP位址,才能設定L3轉送。
使用下列步驟來設定 L3 轉送:
注意
您無法限制 L3 VPN 連線中的頻寬。
在 VMM 控制台中,選取您想要透過 L3 網關聯機到實體網路的租使用者虛擬網路。
以滑鼠右鍵按下選取的租用戶虛擬網路,選取 [屬性>連線]。
選取 [ 透過 VPN 信道連線至另一個網络]。 或者,若要在數據中心啟用 BGP 對等互連,請選取 [啟用邊界網關通訊協定][BGP]。
選取閘道裝置的網路控制站服務。
在 [VPN 連線] 頁面中,選取 [新增>第 3 層通道]。
為路由子網提供 CIDR 表示法格式的 子網。 此子網可用來將封包從 VM 網路路由傳送。 您不需要在資料中心預先設定此子網。
使用下列資訊並設定 L3 連線:
參數 | 詳細資料 |
---|---|
名稱 | L3 轉送網路連線的使用者定義名稱。 |
VM 網络 (NextHop) | 建立為必要條件之下一個躍點 VM 網路的使用者定義名稱。 這代表想要與租使用者 VM 網路通訊的實體網路。 當您選取 [ 瀏覽] 時,只有 [由網络服務管理的一個連線的 VM 網络 ] 可供選取。 |
對等 IP 位址 | 實體網路閘道的IP位址,可透過L3邏輯網路連線。 此 IP 位址必須屬於您建立為必要條件的下一個躍點邏輯網路。 一旦從租使用者 VM 網路傳送到實體網路的流量到達 SDN 閘道,此 IP 就會作為下一個躍點。 這必須是 IPv4 位址。 可以有多個對等IP位址,而且它們必須以逗號分隔。 |
本機IP位址 | 要設定在 SDN 閘道 L3 網路介面上的IP位址。 這些IP位址必須屬於您建立為必要條件的下一個躍點邏輯網路。 您也必須提供子網掩碼。 範例:10.127.134.55/25。 這必須是 IPv4 位址,而且必須是 CIDR 表示法格式。 對等IP位址和本機IP位址必須來自相同的集區。 這些IP位址必須屬於VM網路的邏輯網路定義中所定義的子網。 |
如果您使用靜態路由,請在 [路由] 中輸入您想要連線的所有遠端子網。
注意
您必須為租使用者虛擬網路子網設定實體網路中路由,下一個躍點作為 SDN 閘道上 L3 介面的 IP 位址(用於建立 L3 連線的本機 IP 位址)。 這是為了確保傳回流量會透過 SDN 閘道正確路由傳送至租使用者虛擬網路。
如果您使用 BGP,請確定在 SDN 閘道內部介面 IP 位址之間建立 BGP 對等互連,此位址存在於閘道 VM 的不同區間中(而非預設區間)和實體網路上的對等裝置。
若要讓 BGP 能夠運作,您必須執行下列步驟:
新增 L3 連線的 BGP 對等互連。 在 [邊界閘道通訊協定] 頁面上輸入您的 ASN、對等 BGP IP 及其 ASN。
如下一節所述,判斷 SDN 閘道內部位址。
在遠端端建立 BGP 對等互連(實體網路閘道)。 建立 BGP 對等時,請使用 SDN 閘道內部位址(如上一個步驟中決定)作為對等IP位址。
在實體網路上設定路由,並將目的地設定為 SDN 閘道內部位址,並將下一個躍點設定為 L3 介面 IP 位址(建立 L3 連線時使用的本機 IP 位址值)。
注意
設定 L3 連線之後,您必須在實體網路中為租使用者虛擬網路子網設定路由,下一個躍點作為 SDN 閘道上 L3 介面的 IP 位址(腳本中的參數 LocalIpAddresses)。 這是為了確保傳回流量會透過 SDN 閘道正確路由傳送至租使用者虛擬網路。
您可以選擇使用 L3 連線來設定靜態路由或動態路由(透過 BGP)。 如果您使用靜態路由,您可以使用 Add-SCNetworkRoute 來新增它們,如下列腳本所述。
如果您使用 BGP 與 L3 通道連線,則必須在 SDN 閘道關內部介面 IP 位址之間建立 BGP 對等互連,此位址存在於閘道 VM 的不同區間(而非預設區間)和實體網路上的對等裝置。
若要讓 BGP 能夠運作,您必須使用下列步驟:
使用 Add-SCBGPPeer Cmdlet 為 L3 連線新增 BGP 對等互連。
範例:Add-SCBGPPeer -Name “peer1” -PeerIPAddress “12.13.14.15” -PeerASN 15 -VMNetworkGateway $VmNetworkGateway
如下一節所述,判斷 SDN 閘道內部位址。
在遠端端建立 BGP 對等互連(實體網路閘道)。 建立 BGP 對等時,請使用 SDN 閘道內部位址(如上述步驟 2 中決定)作為對等 IP 位址。
在實體網路上設定路由,並將目的地設定為 SDN 閘道內部位址,並將下一個躍點設定為 L3 介面 IP 位址(腳本中的 LocalIPAddresses 參數)。
判斷 SDN 閘道內部位址
請使用下列程序:
在已安裝網路控制站的電腦或設定為網路控制站用戶端的電腦上執行下列 PowerShell Cmdlet:
$gateway = Get-NetworkControllerVirtualGateway -ConnectionUri <REST uri of your deployment>
$gateway.Properties.NetworkConnections.Properties.IPAddresses
此命令的結果可以顯示多個虛擬網關,視有多少租用戶已設定網關聯機而定。 每個虛擬閘道可以有多個連線(IPSec、GRE、L3)。
如果您已經知道連線的 L3 介面 IP 位址 (LocalIPAddresses),您可以根據該 IP 位址來識別正確的連線。 正確網路連線之後,請執行下列命令(在對應的虛擬閘道上),以取得虛擬閘道的 BGP 路由器 IP 位址。
$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
使用 Add-SCVPNConnection 或 Set-SCVPNConnection 的 -LocalTrafficSelectors 參數設定上述流量選取器。