Windows ServerでNICチーミングを利用することがあったので調べた結果をブログにまとめます。
検証環境はWindows Server 2012 R2ですがWindows Server 2012でも同様だと思います。
NICチーミング(NetLBFO)の基本
NICチーミング(NetLBFO)の基本的な話は以下の記事に詳しいので参考にしてください。
PowerShellでNICチーミング(NetLBFO)を操作する
PowerShellからNICチーミングを操作するにはNIC Teaming Cmdletsを使用します。
モジュールはNetLbfo
ですがデフォルトでロード済みなのでImport-Module NetLbfo
せずに使う事ができます。
NIC Teaming Cmdletsの基本
最初にコマンドレットの一覧を出してみるとこんな感じになります。
PS C:\> Get-Command -Module NetLbfo CommandType Name ModuleName ----------- ---- ---------- Function Add-NetLbfoTeamMember NetLbfo Function Add-NetLbfoTeamNic NetLbfo Function Get-NetLbfoTeam NetLbfo Function Get-NetLbfoTeamMember NetLbfo Function Get-NetLbfoTeamNic NetLbfo Function New-NetLbfoTeam NetLbfo Function Remove-NetLbfoTeam NetLbfo Function Remove-NetLbfoTeamMember NetLbfo Function Remove-NetLbfoTeamNic NetLbfo Function Rename-NetLbfoTeam NetLbfo Function Set-NetLbfoTeam NetLbfo Function Set-NetLbfoTeamMember NetLbfo Function Set-NetLbfoTeamNic NetLbfo
似た様な名前のコマンドレットが多く、初見では覚えにくいと思います。
NICチーミングの各要素がコマンドレットの名称と紐づいていますので、以下の表を参考にするとどのコマンドレットが何をするものかわかりやすくなると思います。
用語 | コマンドレット上の名称 | 説明 |
---|---|---|
インターフェイス | Nic | チーム上に構成される論理的なNIC。 VLANトランクのために1チームに複数インターフェイス構成可能 |
チーム | Team | 物理NICをまとめたチーム |
ネットワークアダプター | Member | 物理NIC |
また、各要素を図にするとこんな感じです。
チームの作成
チームの作成にはNew-NetLbfoTeam
を使います。
-Name
にチーム名、-TeamMembers
にメンバーとなる物理NIC名、-TeamingMode
でチーミングモード、-LoadBalancingAlgorithm
で負荷分散モードを指定するのが基本です。
-TeamingMode
には、
- Lacp : LACP(Link Aggregation Control Protocol)
- Static : 静的チーミング
- SwitchIndependent : スイッチに依存しない
が指定できます。
-LoadBalancingAlgorithm
には、
- Dynamic : ダイナミック
- HyperVPort : Hyper-Vのポート
- TransportPorts : アドレスのハッシュ
- IPAddresses : IPアドレス (GUIでは設定できず、PowerShellからのみ設定可能)
- MacAddresses: MACアドレス (GUIでは設定できず、PowerShellからのみ設定可能)
が指定できます。
実行例は以下。
New-NetLbfoTeam -Name "Public-TEAM" -TeamMembers ("イーサネット 2", "イーサネット 3") -TeamingMode SwitchIndependent -LoadBalancingAlgorithm Dynamic
実行するとチームが作成され、同時に既定のインターフェイス(同名のインターフェイス)も作成されます。
# チームを作成 PS C:\> New-NetLbfoTeam -Name "Public-TEAM" -TeamMembers ("イーサネット 2", "イーサネット 3") -TeamingMode SwitchIndependent -LoadBalancingAlgorithm Dynamic -Confirm:$false Name : Public-TEAM Members : {イーサネット 3, イーサネット 2} TeamNics : Public-TEAM TeamingMode : SwitchIndependent LoadBalancingAlgorithm : Dynamic Status : Down # チーム作成と同時に同名のインターフェイスも作成される PS C:\> Get-NetLbfoTeamNic Name : Public-TEAM InterfaceDescription : Microsoft Network Adapter Multiplexor Driver Team : Public-TEAM VlanID : Primary : True Default : True TransmitLinkSpeed(Gbps) : 2 ReceiveLinkSpeed(Gbps) : 2 # ネットワークアダプターの取得 PS C:\> Get-NetLbfoTeamMember Name : イーサネット 3 InterfaceDescription : Intel(R) PRO/1000 MT Desktop Adapter #3 Team : Public-TEAM AdministrativeMode : Active OperationalStatus : Active TransmitLinkSpeed(Gbps) : 1 ReceiveLinkSpeed(Gbps) : 1 FailureReason : NoFailure Name : イーサネット 2 InterfaceDescription : Intel(R) PRO/1000 MT Desktop Adapter #2 Team : Public-TEAM AdministrativeMode : Active OperationalStatus : Active TransmitLinkSpeed(Gbps) : 1 ReceiveLinkSpeed(Gbps) : 1 FailureReason : NoFailure
インターフェイスにVLAN IDを設定する
既定のインターフェイスはVLAN無しのインターフェイスになります。
このインターフェイスにVLAN IDを付与する場合はSet-NetLbfoTeamNic
を使います。
以下の様に-Name
にインターフェイス名を、-VlanID
にVLAN IDを指定します。
Set-NetLbfoTeamNic -Name "Public-TEAM" -VlanID 1 # チーム名指定も可能 # Set-NetLbfoTeamNic -Team "Public-TEAM" -VlanID 1
実行するとインターフェイスにVLAN IDがセットされ、インターフェイス名も変わります。
PS C:\> Get-NetLbfoTeamNic Name : Public-TEAM - VLAN 1 InterfaceDescription : Microsoft Network Adapter Multiplexor Driver Team : Public-TEAM VlanID : 1 Primary : True Default : False TransmitLinkSpeed(Gbps) : 2 ReceiveLinkSpeed(Gbps) : 2
VLAN IDを消したい場合は、-Default
パラメーターを使用します。
Set-NetLbfoTeamNic -Name "Public-TEAM - VLAN 1" -Default # チーム名指定も可能 # Set-NetLbfoTeamNic -Team "Public-TEAM" -Default
VLANトランクを利用する(複数VLAN IDの設定)
チームに新しいインターフェイスを追加する場合はAdd-NetLbfoTeamNIC
を使います。
-Team
にチーム名を、-VlanID
に新しいVLAN IDを設定します。
Add-NetLbfoTeamNIC -Team "Public-TEAM" -VlanID 2
実行結果を確認すると以下の様に新しいインターフェイスが増えていることがわかります。
PS C:\> Get-NetLbfoTeamNic Name : Public-TEAM - VLAN 2 InterfaceDescription : Microsoft Network Adapter Multiplexor Driver #2 Team : Public-TEAM VlanID : 2 Primary : False Default : False TransmitLinkSpeed(Gbps) : 2 ReceiveLinkSpeed(Gbps) : 2 Name : Public-TEAM InterfaceDescription : Microsoft Network Adapter Multiplexor Driver Team : Public-TEAM VlanID : Primary : True Default : True TransmitLinkSpeed(Gbps) : 2 ReceiveLinkSpeed(Gbps) : 2
そして、増やしたインターフェイスを削除するにはRemove-NetLbfoTeamNic
を使います。
チーム名と削除したいVLAN IDを指定します。
実行例は以下。
Remove-NetLbfoTeamNic -Team "Public-TEAM" -VlanID 2
チーミングモードや負荷分散アルゴリズムを変更する
チーミングモードや負荷分散アルゴリズムを変更するにはSet-NetLbfoTeam
を使います。
パラメーターについてはNew-NetLbfoTeam
と同様な感じです。
Set-NetLbfoTeam -Name "Public-TEAM" -TeamingMode Static -LoadBalancingAlgorithm IPAddresses
実行結果の確認
PS C:\> Get-NetLbfoTeam Name : Public-TEAM Members : {イーサネット 3, イーサネット 2} TeamNics : {Public-TEAM - VLAN 2, Public-TEAM} TeamingMode : Static LoadBalancingAlgorithm : IPAddresses Status : Degraded
チーム名を変更する
チーム名を変更するにはRename-NetLbfoTeam
を使います。
こちらは説明不要でしょう。
Rename-NetLbfoTeam -Name "Public-TEAM" -NewName "Public-TEAM-New"
ネットワークアダプターの設定変更
チームの各ネットワークアダプターの設定変更(アクティブ/スタンバイ)を行うにはSet-NetLbfoTeamMember
を使います。
-AdministrativeMode
でActive
かStandBy
を指定して設定変更することができます。
Set-NetLbfoTeamMember -Name "イーサネット 3" -AdministrativeMode Standby
ネットワークアダプターの追加と解除
あまり使う事はないかもしれませんが、チームにネットワークアダプターを追加するにはAdd-NetLbfoTeamMember
を、ネットワークアダプターを解除するにはRemove-NetLbfoTeamMember
を使います。
# ネットワークアダプターの追加 Add-NetLbfoTeamMember -Team "Public-TEAM" -Name "イーサネット 3" -AdministrativeMode Active # ネットワークアダプターの解除 Remove-NetLbfoTeamMember -Team "Public-TEAM" -Name "イーサネット 3"
チームを削除する
最後にチームを削除するにはRemove-NetLbfoTeam
を使います。
チームを削除すると全てのインターフェイスが削除され、ネットワークアダプターも解除されてしまうので注意してください。
Remove-NetLbfoTeam -Name "Public-TEAM"
IPアドレスの設定について
IPアドレスの設定はインターフェイスに対して行う形になりますので、各コマンドレットで指定する名称にはインターフェイス名を指定してください。
以下に適当な設定例を記載しておきます。
# IPアドレスの設定 Get-NetAdapter -Name "Public-TEAM - VLAN 2" | New-NetIPAddress -IPAddress "192.168.133.14" -PrefixLength 24 -DefaultGateway "192.168.133.1" # DNSの指定 Set-DnsClientServerAddress -InterfaceAlias "Public-TEAM - VLAN 2" -ServerAddresses "192.168.133.2" # IPv6のバインド停止 Get-NetAdapterBinding -Name "Public-TEAM - VLAN 2" -ComponentID ms_tcpip6 | Disable-NetAdapterBinding
最後に
NIC Teaming Cmdletsの使い方についてざっと説明しました。
GUIだと少し癖のあるチーミングの設定ですが、PowerShellからだとかなり直感的に設定できるのではないかと思います。
PowerShellでしか設定できない部分もありますので、機会があればぜひ使ってみてください。