こんにちは、Windows インフラエンジニア ばにゃです。
本記事では、PowerShellを使用してWindows Server のネットワークアダプタ(NIC)の優先順位(バインド順)を変更する方法について解説します。
Windows Server 2012 の頃は、ネットワーク接続の「詳細設定」よりGUIから変更が可能でしたが、Windows Server 2016 以降では設定画面が削除されGUIからの変更ができなくなりました。
Windows Server 2016以降では、本記事で解説する方法で代替することが可能です。
結論として、Set-NetIPInterface コマンドを使用することで設定可能です。
Set-NetIPInterface -InterfaceAlias <ネットワークアダプタ名> -InterfaceMetric <優先順位>
また、-InterfaceAlias の代わりに -InterfaceIndex を指定する方法でも可能です。
Set-NetIPInterface -InterfaceIndex <ネットワークアダプタID> -InterfaceMetric <優先順位>
もう少し詳細について知りたい方は以降に記載する内容も確認してください。
前提となる環境
本記事では、以下のような環境を例として記載します。この環境で私自身が実機動作確認済みの手順となります。
- Windows Server 2019
- Windows Server 2016
ネットワークアダプタ 優先順位 設定変更方法
実際に設定変更を行う際の流れにそって説明します。
優先順位設定の確認
Get-NetIPInterface コマンドを実行して現在のネットワークアダプタの優先順位を確認します。
Get-NetIPInterface
以下のような結果が表示されます。
ifIndex InterfaceAlias AddressFamily NlMtu(Bytes) InterfaceMetric Dhcp ConnectionState PolicyStore
------- -------------- ------------- ------------ --------------- ---- --------------- -----------
8 Ethernet1 IPv4 1500 15 Disabled Connected ActiveStore
3 Ethernet0 IPv4 1500 15 Disabled Connected ActiveStore
この場合、以下のような2つのネットワークアダプタが存在するという意味になります。
- ifIndex:8、InterfaceAlias:Etnernet1、InterfaceMetric(優先順位):15
- ifIndex:3、InterfaceAlias:Etnernet0、InterfaceMetric(優先順位):15
ifIndex はネットワークアダプタのID、InterfaceAlias はネットワークアダプタ名、InterfaceMetric はネットワークアダプタの優先順位を表しています。
つまり優先順位に差がない(同じ優先順位となっている)ネットワークアダプタが2つ存在している状態です。
ここからそれぞれのネットワークアダプタに優先順位の設定を行っていきます。
優先順位設定の変更
Set-NetIPInterface コマンドを実行してネットワークアダプタの優先順位を設定します。
さきほど確認した ifIndex:3、InterfaceAlias:Etnernet0 の優先順位を高くする場合、以下のようなコマンドを実行します。
InterfaceAlias で指定するパターンと InterfaceIndex で指定するパターン、2種類を記載していますが、どちらか1つを実行するだけで問題ありません。
Set-NetIPInterface -InterfaceAlias Etnernet0 -InterfaceMetric 1
Set-NetIPInterface -InterfaceIndex 3 -InterfaceMetric 1
これで ifIndex:3、InterfaceAlias:Etnernet0 のネットワークアダプタの InterfaceMetric (優先順位) が 1 となり、優先順位が高い状態となりました。
InterfaceMetric は数字が小さいほうが優先順位が高い設定となります。
設定が反映されているかの確認
Get-NetIPInterface コマンドを実行して、設定が正しく反映されているかを確認します。
Get-NetIPInterface
以下のような結果が表示されていれば、設定は正しく反映されています。
ifIndex InterfaceAlias AddressFamily NlMtu(Bytes) InterfaceMetric Dhcp ConnectionState PolicyStore
------- -------------- ------------- ------------ --------------- ---- --------------- -----------
8 Ethernet1 IPv4 1500 15 Disabled Connected ActiveStore
3 Ethernet0 IPv4 1500 1 Disabled Connected ActiveStore
ifIndex:3、InterfaceAlias:Etnernet0 の InterfaceMetric が 1、ifIndex:8、InterfaceAlias:Etnernet1 の InterfaceMetric が 15 となっていることがわかります。
設定としてはこれで完了です。
優先順位の数字が 1 と 15 というのがしっくりこなければ、ifIndex:8、InterfaceAlias:Etnernet1 のネットワークアダプタに対しても Set-NetIPInterface コマンドを実行して、優先順位が 1 ,2 という設定にしてもよいかと思います。
参考情報
Microsoft ドキュメント
Set-NetIPInterface コマンドについては、Microsoft の以下サイトも参考にしてください。
- ネットワーク インターフェイスの順序を構成する
https://docs.microsoft.com/ja-jp/windows-server/networking/technologies/network-subsystem/net-sub-interface-metric - Set-NetIPInterface – Windows Server 2016 PowerShell
https://docs.microsoft.com/ja-jp/powershell/module/nettcpip/Set-NetIPInterface?view=windowsserver2016-ps - Set-NetIPInterface – Windows 10 & Windows Server 2019 PowerShell
https://docs.microsoft.com/ja-jp/powershell/module/nettcpip/Set-NetIPInterface?view=windowsserver2019-ps
関連書籍
PowerShell 6.0 まで対応している PowerShell 関連の書籍です。現状で 6.0 まで対応している数少ない書籍のため、PowerShell の学習におすすめです。
コメント