在 VMM 中管理連接埠 ACL

重要

此版本的 Virtual Machine Manager (VMM) 已終止支援。 建議您 升級至 VMM 2022

在 System Center - Virtual Machine Manager (VMM) 中,您可以集中設定和管理 Hyper-V 通訊埠存取控制清單 (ACL)。 埠 ACL 可以針對網路控制站管理的網狀架構和網路控制站所管理的網路進行設定。

  • 連接埠 ACL 是一組規則,可篩選第 2 層連接埠層級的流量。 VMM 中的埠 ACL 會篩選特定 VMM 物件的存取。 網路物件最多只能連結一個連接埠 ACL。
  • ACL 包含規則,並可附加至任意數目的網路物件。 您可以建立不含規則的 ACL,並於稍後新增規則。 每個 ACL 規則只會對應至一個埠 ACL。
  • 如果 ACL 有多個規則,則會根據優先順序套用這些規則。 規則符合準則且經套用後,便不會處理其他規則。
  • 通用設定連接埠 ACL 會套用至基礎結構中所有的 VM 虛擬網路介面卡。 通用設定沒有個別物件類型。 相反地,通用設定連接埠 ACL 會連結至 VMM 管理伺服器。
  • 埠 ACL 設定只會透過 VMM 中的 PowerShell Cmdlet 公開,而且無法在 VMM 控制台中設定。
  • 可以套用連接埠 ACL 的對象包括:
    • 網路控制器部署中的虛擬子網路和介面卡。
    • 虛擬子網路、網路介面卡、VM 網路,以及非由網路控制器管理之網路中的 VMM 管理伺服器。

在您開始使用 Intune 之前

  • 若要將 ACL 套用至網路控制器管理的物件,您需使用 ManagedByNC 旗標,並將它設定為 True。 如果未設定為 True,ACL 只會套用至網路控制站未管理的網路物件。
  • ACL 類型不能互換。 您無法將 ManagedByNC 設定為 false 的 ACL 套用至網路控制站所管理的物件,反之亦然。
  • 這兩種 ACL 之間的主要差異在於,在網路控制站未管理的物件上套用 ACL 之後,您必須補救每個網路適配器。
  • 以及優先順序範圍的差異︰
    • Hyper-V 通訊埠 ACL (非由網路控制器管理) :1 - 65535
    • SDN 連接埠 ACL (由網路控制器管理) :1 - 64500
  • 您需要完整的 VMM 系統管理員權限,才能將連接埠 ACL 連結至通用設定。 若要將 ACL 連結至 VMM 物件, (VM 網路、子網、虛擬網路適配器) ,您必須是 VMM 系統管理員或租用戶系統管理員或自助使用者。

不支援的情節

以下是不支援的案例清單:

  • 與多個執行個體共用 ACL 時,管理單一執行個體的個別規則。 所有規則都是在其父系 ACL 內集中管理,並在連結 ACL 時套用。
  • 將多個 ACL 連接至實體。
  • 將連接埠 ACL 套用至 Hyper-V 父分割中的虛擬網路介面卡 (管理作業系統)。
  • 在 VMM 中建立包含 IP 層級通訊協定 (非 TCP 或 UDP) 的連接埠 ACL 規則。 其他通訊協定仍然一開始就受 Hyper-V 支援。
  • 將埠 ACL 套用至邏輯網路、網站 (邏輯網路定義) 、子網 VLAN,以及其他未提及為支援的 VMM 網路物件。

部署步驟

請使用 VMM PowerShell 介面執行下列作業︰

  1. 定義連接埠 ACL 和規則。

    • 這些規則會以「擴充連接埠 ACL」的形式 (VMNetworkAdapterExtendedAcl) 套用至 Hyper-V 伺服器上的虛擬交換器連接埠。 這表示,其只可套用至執行 Windows Server 2012 R2 或更新版本的主機,因為 VMM 並不會為先前版本建立舊版的 Hyper-V 通訊埠 ACL (VMNetworkAdapterAcl)。
    • 這些規則會以「擴充連接埠 ACL」的形式 (VMNetworkAdapterExtendedAcl) 套用至 Hyper-V 伺服器上的虛擬交換器連接埠。 這表示它們只能套用至執行 Windows Server 2016 或更新版本的主機,因為 VMM 不會在舊版的 VMNetworkAdapterAcl (建立舊版 Hyper-V 連接埠 Acl) 。
    • 針對 TCP,VMM 中定義的所有通訊埠 ACL 規則都是可設定狀態的。 您無法建立無狀態 TCP ACL 規則。
  2. 將連接埠 ACL 連結至通用設定。 這會將 ACL 套用至所有的 VM 虛擬網路介面卡。

  3. 將通訊埠 ACL 連接至 VM 網路、VM 子網路或 VM 虛擬網路介面卡。

  4. 管理連接埠 ACL 規則。

建立連接埠 ACL

  1. 在 VMM 中開啟 PowerShell。

  2. 使用 New-SCPortACL Cmdlet 建立連接埠 ACL 。

    New-SCPortACL [-Name] <String> [-Description <String>] [-JobVariable <String>] [-ManagedByNC] [-OnBehalfOfUser <String>] [-OnBehalfOfUserRole <UserRole>] [-Owner <String>] [-PROTipID <Guid>] [-RunAsynchronously] [-UserRole <UserRole>] [-VMMServer <ServerConnection>] [<CommonParameters>]
    

參數

參數 詳細資料
名稱;描述 連接埠 ACL 名稱與描述
JobVariable 存放區作業的進度
ManagedByNC 指定物件是否由網路控制器管理
OnBehalfOfUser/OnBehalfOfRole 使用使用者名稱或角色執行工作
Owner 以有效網域使用者帳戶的格式指定 VMM 物件的擁有者。 範例:Contoso\PattiFuller 或 PattiFuller@Contoso
ProTipID 觸發動作之 ProTip 的識別碼
RunAsychronously 指出工作是否會以非同步方式執行
UserRole 指定使用者角色
VMMServer 指定 VMM 伺服器
CommonParameters 深入了解

範例

建立網路控制器 "DemoACLManagedByNC" 所管理之物件的連接埠 ACL:

PS: C:\> New-SCPortACL -Name "DemoACLManagedByNC" -Description "PortACL Example Managed by NC" -ManagedByN

建立非由網路控制器 "DemPortACL" 所管理之物件的連接埠 ACL:

PS: C:\> New-SCPortACL -Name "DemoPortACL" -Description "Port ACL Example Non Managed by NC"

定義連接埠 ACL 的連接埠 ACL 規則

  1. 在 VMM 中開啟 PowerShell。

  2. 使用 New-SCPortACLRule Cmdlet 建立一或多個規則。

    New-SCPortACLrule -PortACL <PortACL> -Name <string> [-Description <string>] -Type <Inbound | Outbound> -Action <Allow | Deny> -Priority <uint16> -Protocol <Tcp | Udp | Any> [-LocalAddressPrefix <string: IPAddress | IPSubnet>] [-LocalPortRange <string:X|X-Y|Any>] [-RemoteAddressPrefix <string: IPAddress | IPSubnet>] [-RemotePortRange <string:X|X-Y|Any>]
    

參數

參數 詳細資料
名稱,描述 規則名稱與描述
類型 指定 ACL 套用的流量方向 (傳入或傳出)
動作 指定 ACL 允許或封鎖流量 (允許或拒絕)
LocalAddressPrefix 指定用來識別應要篩選之流量的來源 IP 位址或子網路。
LocalPortRange 指定用來識別流量的來源連接埠範圍。
RemoteAddressPrefix 指定用來識別要篩選之流量的目的地 IP 位址或子網路。
RemotePortRange 指定用來識別流量的目的地埠範圍。
通訊協定 指定套用規則的通訊協定。
優先順序 在埠 ACL 中指定規則的優先順序。 規則會依照順序套用。 設定介於 1 到 65535 之間的優先順序,其中最低的數字優先順序最高。 網路控制站所管理物件的埠 ACL 規則應設定為等於或大於 100。 網路控制站不支援 100 以下的優先順序。

範例

建立連接埠 ACL,並將物件儲存於 $portACL:

PS: C:\> $portACL = New-SCPortACL -Name "RDP ACL" -Description "Acl on RDP access"

建立連接埠 ACL 規則,以允許來自遠端子網路的 RDP 存取:

PS: C:\> New-SCPortACLRule -Name "AllowRDPAccess" -PortACL $portACL -Description "Allow RDP Rule from a subnet" -Action Allow -Type Inbound -Priority 110 -Protocol Tcp -LocalPortRange 3389 -RemoteAddressPrefix 10.184.20.0/24

修改 ACL 規則的優先順序︰

PS: C:\> $portACLRule = Get-SCPortACLRule -Name "AllowRDPAccess" `` <br/><br/> `` PS: C:\> Set-SCPortACLRule -PortACLRule $portACLRule -Priority 220

第一個命令取得連接埠 ACL 規則 "AllowRDPAccess"。 第二個命令將該規則的優先順序變更為 220。

修改目的地位址範圍的連接埠 ACL 規則和規則的通訊協定︰

PS: C:\> $portACLRule = Get-SCPortACLRule -Name "AllowRDPAccess" `` <br/><br/> `` PS: C:\> Set-SCPortACLRule -PortACLRule $portACLRule -RemoteAddressPrefix 172.185.21.0/24 -Protocol Udp

第一個命令會擷取 "AllowRDPAccess" 規則。 第二個命令會將通訊協定變更為 UDP,並將目的地設定為子網路 172.185.21.0/24。

連結和中斷連結連接埠 ACL

連接埠 ACL 可以連結至通用設定、VM 網路、VM 子網路與虛擬網路介面卡。 根據預設,連結至通用設定的連接埠 ACL 會套用到所有的 VM 虛擬網路介面卡。

  1. 在 VMM 中開啟 PowerShell。

  2. 使用 Set-SCVMMServer Cmdlet 連結連接埠 ACL。

    Set-SCVMMServer –VMMServer <VMMServer> [-PortACL <NetworkAccessControlList> | -RemovePortACL ]
    

參數

參數 詳細資料
VMM 伺服器 連接埠 ACL 套用所在的 VMM 伺服器名稱。
PortACL 選擇性地將指定的連接埠 ACL 連結至通用設定。

範例

將 ACL 連結至通用設定:

Set-SCVMMServer -VMMServer "VMM.Contoso.Local" -PortACL $acl`` <br/><br/> ExampleL: `` Set-SCVMMServer -VMMServer "VMM.Contoso.Local" -PortACL $acl

將 ACL 自通用設定中斷連結:

Set-SCVMMServer -VMMServer "VMM.Contoso.Local" -RemovePortACL

建立期間將 ACL 連結至 VM 網路:

New-SCVMNetwork [–PortACL <NetworkAccessControlList>] [rest of the parameters]

將 ACL 連結至現有的 VM 網路︰

Set-SCVMNetwork -PortACL $acl`

建立期間將 ACL 連結至 VM 子網路:

New-SCVMSubnet [–PortACL <NetworkAccessControlList>] [rest of the parameters]

將 ACL 連結至現有的 VM 子網路︰

Set-SCVMSubnet [–PortACL <NetworkAccessControlList> | -RemovePortACL] [rest of the parameters]

擷取和檢視連接埠 ACL 和規則

  1. 在 VMM 中開啟 PowerShell。

  2. 執行 Get-SCPortACL Cmdlet,以擷取及檢視連接埠 ACL:

    Get-SCPortACL [[-Name] <String> ] [-ID <Guid> ] [-OnBehalfOfUser <String> ] [-OnBehalfOfUserRole <UserRole> ] [-VMMServer <ServerConnection> ] [ <CommonParameters>]
    
  3. 執行 Get-SCPortACLRule以擷取及檢視規則:

    Get-SCPortACLRule [-Name <String> ] [-ID <Guid> ] [-OnBehalfOfUser <String> ] [-OnBehalfOfUserRole <UserRole> ] [-PortACL <PortACL> ] [-VMMServer <ServerConnection> ] [ <CommonParameters>]
    

參數

參數 詳細資料
沒有參數 擷取所有的 ACL
名稱/識別碼 依名稱或 GUID 擷取
OnBehalfOfUser/OnBehalfOfUserRole 使用使用者名稱或角色執行
VMMServer 擷取特定 VMM 伺服器上的 ACL
CommonParameters 深入了解

範例

擷取特定 ACL:

    PS: C:> $portACL = Get-SCPortACL -Name "DemoPortACL"

取得特定 ACL 的規則︰

    PS: C:> Get-SCPortACLRule -Name "AllowRDPAccess"

取得 ACL 的所有規則︰

    PS: C:> Get-SCPortACLRule -PortACL $portACL

修改連接埠 ACL 和規則

  1. 在 VMM 中開啟 PowerShell。

  2. 執行 Set-SCPortACLCmdlet 修改連接埠 ACL:

    Set-SCPortACL [-PortACL] <PortACL> [[-Description] <String>] [-JobVariable <String>] [-Name <String>] [-OnBehalfOfUser <String>] [-OnBehalfOfUserRole <UserRole>] [-PROTipID <Guid>] [-RunAsynchronously] [-VMMServer <ServerConnection>] [<CommonParameters>]
    
  3. 執行 Remove-SCPortACL 移除 ACL:

    Remove-SCPortACL [-PortACL] <PortACL> [-Confirm] [-JobVariable <String>] [-OnBehalfOfUser <String>] [-OnBehalfOfUserRole <UserRole>] [-PROTipID <Guid>] [-RunAsynchronously] [-VMMServer <ServerConnection>] [-WhatIf] [<CommonParameters>]
    

    參數

參數 詳細資料
名稱/描述 連接埠 ACL 的名稱與描述
JobVariable 存放區作業的進度
OnBehalfOfUser/OnBehalfOfUserRole 使用使用者名稱或角色執行。
ProTipID 觸發動作之 ProTip 的識別碼
RunAsynchronously 指出工作是否會以非同步方式執行。
確認 執行工作前會先提示
WhatIf 顯示發生什麼狀況而不執行命令

範例

設定 ACL 描述︰

PS: C:> $portACL = Get-SCPortACL -Name "DemoPortACL"
PS: C:> Set-SCPortACL -PortACL $portACL -Description "Port ACL Example Non Managed by Network Controller"

第一個 Cmdlet 會擷取 ACL,第二個 Cmdlet 會設定 ACL 的描述。

移除 ACL:

PS: C:> $portACL = Get-SCPortACL -Name "DemoPortACL"
PS: C:> Remove-SCPortACL -PortACL $portACL

第一個 Cmdlet 會擷取 ACL,第二個 Cmdlet 會移除 ACL。