Share via


使用指令碼部署軟體定義網路的基礎結構

適用於:Windows Server 2022、Windows Server 2019、Windows Server 2016、Azure Stack HCI 21H2 和 20H2 版本

在本主題中,您會使用指令碼來部署 Microsoft 軟體定義網路 (SDN) 基礎結構。 此基礎結構包括高可用性 (HA) 網路控制卡、HA 軟體負載平衡器 (SLB)/MUX、虛擬網路,以及相關聯的存取控制清單 (ACL)。 此外,另一個指令碼會為您部署租用戶工作負載,以驗證您的 SDN 基礎結構。

如果您希望租用戶工作負載在其虛擬網路之外通訊,則可以設定 SLB NAT 規則、站對站閘道通道或第 3 層轉送,以在虛擬與實體工作負載之間進行路由傳送。

您也可以使用 Virtual Machine Manager (VMM) 部署 SDN 基礎結構。 如需詳細資訊,請參閱在 VMM 網狀架構中設定軟體定義網路 (SDN) 基礎結構

部署前

重要

開始部署之前,您必須先規劃和設定主機與實體網路基礎結構。 如需詳細資訊,請參閱規劃軟體定義網路基礎結構

所有 Hyper-V 主機都必須安裝 Windows Server 2019 或 2016。

部署步驟

首先,設定 Hyper-V 主機 (實體伺服器) 的 Hyper-V 虛擬交換器和 IP 位址指派。 可以使用任何與 Hyper-V 相容的儲存體類型:共用或本機。

安裝主機網路功能

  1. 安裝適用於 NIC 硬體的最新網路驅動程式。

  2. 在所有主機上安裝 Hyper-V 角色 (如需詳細資訊,請參閱在 Windows Server 2016 上開始使用 Hyper-V)。

    Install-WindowsFeature -Name Hyper-V -ComputerName <computer_name> -IncludeManagementTools -Restart
    
  3. 建立 Hyper-V 虛擬交換器。

    針對所有主機使用相同的交換器名稱,例如 sdnSwitch。 至少設定一張網路介面卡;如果使用 SET,請至少設定兩張網路介面卡。 使用兩個 NIC 時,可以最大程度地進行輸入散佈。

    New-VMSwitch "<switch name>" -NetAdapterName "<NetAdapter1>" [, "<NetAdapter2>" -EnableEmbeddedTeaming $True] -AllowManagementOS $True
    

    提示

    如果您有個別的管理 NIC,則可以略過步驟 4 和 5。

  4. 請參閱規劃主題 (規劃軟體定義網路基礎結構),並與您的網路系統管理員合作,以取得管理 VLAN 的 VLAN 識別碼。 將新建立之虛擬交換器的管理 vNIC 連結至管理 VLAN。 如果您的環境未使用 VLAN 標籤,則可以省略此步驟。

    Set-VMNetworkAdapterIsolation -ManagementOS -IsolationMode Vlan -DefaultIsolationID <Management VLAN> -AllowUntaggedTraffic $True
    
  5. 請參閱規劃主題 (規劃軟體定義網路基礎結構),並與您的網路系統管理員合作,使用 DHCP 或靜態 IP 指派,將 IP 位址指派給新建立 vSwitch 的管理 vNIC。 下列範例示範如何建立靜態 IP 位址,並將其指派給 vSwitch 的管理 vNIC:

    New-NetIPAddress -InterfaceAlias "vEthernet (<switch name>)" -IPAddress <IP> -DefaultGateway <Gateway IP> -AddressFamily IPv4 -PrefixLength <Length of Subnet Mask - for example: 24>
    
  6. [選擇性] 部署虛擬機器以裝載 Active Directory Domain Services (安裝 Active Directory Domain Services (層級 100) 和 DNS 伺服器。

    a. 將 Active Directory/DNS 伺服器虛擬機器連線到管理 VLAN:

    Set-VMNetworkAdapterIsolation -VMName "<VM Name>" -Access -VlanId <Management VLAN> -AllowUntaggedTraffic $True
    

    b. 安裝 Active Directory 網域服務與 DNS。

    注意

    網路控制卡同時支援使用 Kerberos 和 X.509 憑證進行驗證。 本指南會針對不同的用途使用這兩種驗證機制 (雖然只需要一個驗證機制)。

  7. 將所有 Hyper-V 主機加入網域。 請確定對於 IP 位址已指派給管理網路點的網路介面卡,其 DNS 伺服器項目指向可解析網域名稱的 DNS 伺服器。

    Set-DnsClientServerAddress -InterfaceAlias "vEthernet (<switch name>)" -ServerAddresses <DNS Server IP>
    

    a. 以滑鼠右鍵按一下 [開始],按一下 [系統],然後按一下 [變更設定]。 b. 按一下變更。 c. 按一下 [網域] 並指定網域名稱。 """" d. 按一下 [確定]。e. 出現提示時,鍵入使用者名稱和密碼認證。 f. 重新啟動伺服器。

驗證

使用下列步驟來驗證主機網路設定是否正確。

  1. 確定已成功建立 VM 交換器:

    Get-VMSwitch "<switch name>"
    
  2. 驗證 VM 交換器上的管理 vNIC 已連線到管理 VLAN:

    注意

    只有在管理和租用戶流量共用同一個 NIC 時才相關。

    Get-VMNetworkAdapterIsolation -ManagementOS
    
  3. 驗證所有 Hyper-V 主機和外部管理資源,例如 DNS 伺服器。

    確定可使用其管理 IP 位址和/或完整網域名稱 (FQDN) 透過 Ping 加以存取。

    ping <Hyper-V Host IP>
    ping <Hyper-V Host FQDN>
    
  4. 在部署主機上執行下列命令,並指定每個 Hyper-V 主機的 FQDN,以確保使用的 Kerberos 認證可提供對所有伺服器的存取。

    winrm id -r:<Hyper-V Host FQDN>
    

執行 SDN Express 指令碼

  1. 移至 Microsoft SDN GitHub 存放庫以取得安裝檔案。

  2. 將安裝檔案從存放庫下載到指定的部署電腦。 按一下 [複製或下載],然後按一下 [下載 ZIP]。

    注意

    指定的部署電腦必須執行 Windows Server 2016 或更新版本。

  3. 展開 zip 檔案,並將 SDNExpress 資料夾複製到部署電腦的 C:\ 資料夾。

  4. C:\SDNExpress 資料夾共用為 "SDNExpress",並將 [所有人] 的權限設為 [讀取/寫入]。

  5. 瀏覽至 C:\SDNExpress 資料夾。

    您會看到下列資料夾:

    資料夾名稱 描述
    AgentConf 保留每個 Windows Server 2016 Hyper-V 主機上 SDN 主機代理程式使用的全新 OVSDB 結構描述複本,以進行網路原則程式設計。
    憑證 NC 憑證檔案的暫存共用位置。
    影像 空白,請將 Windows Server 2016 vhdx 映像放置於此處
    工具 用於疑難排解和偵錯的公用程式。 複製到主機和虛擬機器。 建議您將網路監視器或 Wireshark 放置在此處,使其在需要時可供使用。
    指令碼 部署指令碼。

    - SDNExpress.ps1
    部署和設定網狀架構,包括網路控制卡虛擬機器、SLB 多工器虛擬機器、閘道集區,以及對應至集區的 HNV 閘道虛擬機器。
    - FabricConfig.psd1
    SDNExpress 指令碼的組態檔範本。 您將針對自己的環境自訂此範本。
    - SDNExpressTenant.ps1
    在使用負載平衡 VIP 的虛擬網路上部署範例租用戶工作負載。
    此外,也會在連線到先前建立之租用戶工作負載的服務提供者邊緣閘道上佈建一或多個網路連線 (IPSec S2S VPN、GRE、L3)。 IPSec 和 GRE 閘道可用於透過對應的 VIP IP 位址進行連線,L3 轉送閘道則可用於透過對應的位址集區進行連線。
    此指令碼也可透過 [復原] 選項用來刪除對應的組態。
    - TenantConfig.psd1
    租用戶工作負載和 S2S 閘道組態的範本組態檔。
    - SDNExpressUndo.ps1
    清除網狀架構環境,並將其重設為起始狀態。
    - SDNExpressEnterpriseExample.ps1
    使用一個遠端存取閘道佈建一或多個企業網站環境,並 (選擇性) 為每個網站佈建一個對應的企業虛擬機器。 IPSec 或 GRE 企業閘道會連線至服務提供者閘道的對應 VIP IP 位址,以建立 S2S 通道。 L3 轉送閘道則會透過對應的對等 IP 位址進行連線。
    此指令碼也可透過 [復原] 選項用來刪除對應的組態。
    - EnterpriseConfig.psd1
    企業站對站閘道和用戶端 VM 組態的範本組態檔。

    TenantApps 用來部署範例租用戶工作負載的檔案。
  6. 驗證 Windows Server 2016 VHDX 檔案位於 Images 資料夾中。

  7. 藉由將 << Replace >> 標籤取代為特定值來自訂 SDNExpress\scripts\FabricConfig.psd1 檔案,以符合實驗室基礎結構,包括主機名稱、網域名稱、使用者名稱和密碼,以及<規劃網路>主題中所列出網路的網路資訊。

  8. 在 DNS 中為 NetworkControllerRestName (FQDN) 和 NetworkControllerRestIP 建立主機 A 記錄。

  9. 以具有網域系統管理員認證的使用者身分執行指令碼:

    SDNExpress\scripts\SDNExpress.ps1 -ConfigurationDataFile FabricConfig.psd1 -Verbose
    
  10. 若要復原所有作業,請執行下列命令:

 SDNExpress\scripts\SDNExpressUndo.ps1 -ConfigurationDataFile FabricConfig.psd1 -Verbose

驗證

假設 SDN Express 指令碼執行完成而不會報告任何錯誤,您可以執行下列步驟,以確保網狀架構資源已正確部署,而且可供租用戶部署使用。

使用診斷工具確保網路控制卡中的所有網狀架構資源上沒有任何錯誤。

Debug-NetworkControllerConfigurationState -NetworkController <FQDN of Network Controller Rest Name>

使用軟體負載平衡器部署範例租用戶工作負載

現在已部署網狀架構資源,您可以藉由部署範例租用戶工作負載來驗證 SDN 部署端對端。 此租用戶工作負載包含使用 SDN 分散式防火牆透過存取控制清單 (ACL) 規則保護的兩個虛擬子網路 (Web 層和資料庫層)。 Web 層的虛擬子網路可使用虛擬 IP (VIP) 位址透過 SLB/多工器來存取。 此指令碼會自動部署兩個 Web 層虛擬機器和一個資料庫層虛擬機器,並將這些虛擬機器連線至虛擬子網路。

  1. 藉由將 << Replace >> 標籤取代為特定值來自訂 SDNExpress\scripts\TenantConfig.psd1 檔案 (例如:VHD 映像名稱、網路控制卡 REST 名稱、vSwitch 名稱等,如先前在 FabricConfig.psd1 檔案中所定義)

  2. 執行指令碼。 例如:

    SDNExpress\scripts\SDNExpressTenant.ps1 -ConfigurationDataFile TenantConfig.psd1 -Verbose
    
  3. 若要復原組態,請使用 undo 參數執行相同的指令碼。 例如:

    SDNExpress\scripts\SDNExpressTenant.ps1 -Undo -ConfigurationDataFile TenantConfig.psd1 -Verbose
    

驗證

若要驗證租用戶部署是否成功,請執行下列動作:

  1. 登入資料庫層虛擬機器,並嘗試 Ping 其中一個 Web 層虛擬機器的 IP 位址 (請確定 Web 層虛擬機器中已關閉 Windows 防火牆)。

  2. 檢查網路控制卡租用戶資源是否有任何錯誤。 從與網路控制卡建立第 3 層連線的任何 Hyper-V 主機執行下列命令:

    Debug-NetworkControllerConfigurationState -NetworkController <FQDN of Network Controller REST Name>
    
  3. 若要驗證負載平衡器是否正常執行,請從任何 Hyper-V 主機執行下列命令:

    wget <VIP IP address>/unique.htm -disablekeepalive -usebasicparsing
    

    其中 <VIP IP address> 是您在 TenantConfig.psd1 檔案中設定的 Web 層 VIP IP 位址。

    提示

    在 TenantConfig.psd1 中搜尋 VIPIP 變數。

    多次執行此命令,以查看負載平衡器在可用 DIP 之間的切換情況。 您也可以使用網頁瀏覽器來觀察此行為。 瀏覽至 <VIP IP address>/unique.htm。 關閉瀏覽器並開啟新的執行個體,然後再次瀏覽。 除非瀏覽器在快取逾時之前快取了頁面,否則您會看到藍色頁面和綠色頁面交替出現。