概要
本記事では、Windows Serverにおけるネットワーク設定をPowerShellで統一的に管理する方法を解説します。
静的IP構成、DNS指定、ルーティング優先度調整、複数NIC運用時の注意点を解説します。
変数表記について
| 変数名 | 設定例 | 説明 |
|---|---|---|
<<INTERFACE_ALIAS>> |
Ethernet0 |
対象のネットワークアダプター名 |
<<IP_ADDRESS>> |
192.168.10.100 |
固定IPアドレス |
<<PREFIX_LENGTH>> |
24 |
サブネットプレフィックス長(例: 255.255.255.0 → 24) |
<<GATEWAY>> |
192.168.10.1 |
デフォルトゲートウェイ |
<<DNS1>> |
192.168.10.10 |
プライマリDNSサーバー |
<<DNS2>> |
8.8.8.8 |
セカンダリDNSサーバー(任意) |
Step 1: 現在のネットワーク構成を確認する
まず、NIC一覧と現在のIP設定を確認します。
# アダプター一覧を確認
Get-NetAdapter | Select-Object Name, Status, MacAddress, LinkSpeed
# IP構成を確認
Get-NetIPAddress | Select-Object InterfaceAlias, IPAddress, PrefixLength, DefaultGateway,PrefixOrigin
| OriginType | 意味 | 備考 |
|---|---|---|
| Manual | 手動で設定された静的アドレス | PowerShellまたはGUIで明示的に指定された設定 |
| DHCP | DHCPサーバーによって自動割り当てされたアドレス | Set-NetIPInterface -Dhcp Enabled により自動取得 |
| WellKnown | システム予約のリンクローカルまたはAPIPAアドレス | DHCP未応答時の169.254.x.xなどに該当 |
Step 2: DHCPから静的IPに変更する
DHCPを無効化し、固定IPを指定します。
# DHCPを無効化
Set-NetIPInterface -InterfaceAlias "<<INTERFACE_ALIAS>>" -Dhcp Disabled
# DHCPアドレスを削除(存在する場合のみ)
Get-NetIPAddress -InterfaceAlias "<<INTERFACE_ALIAS>>" -AddressFamily IPv4 |
Where-Object { $_.PrefixOrigin -eq "Dhcp" } |
Remove-NetIPAddress -Confirm:$false
# 静的IPを設定
New-NetIPAddress `
-InterfaceAlias "<<INTERFACE_ALIAS>>" `
-IPAddress "<<IP_ADDRESS>>" `
-PrefixLength <<PREFIX_LENGTH>> `
-DefaultGateway "<<GATEWAY>>"
注意:
Remove-NetIPAddressはDHCP割り当てを削除するためにのみ使用します。
リモート接続中のNICに対して誤って実行すると通信断の危険があります。
Step 3: DNSサーバーを設定する
DNSサーバーを指定して適用を確認します。
# DNS設定
Set-DnsClientServerAddress `
-InterfaceAlias "<<INTERFACE_ALIAS>>" `
-ServerAddresses ("<<DNS1>>","<<DNS2>>")
# 設定内容を確認
Get-DnsClientServerAddress -InterfaceAlias "<<INTERFACE_ALIAS>>"
DNSキャッシュをクリアして解決動作を検証します。
Clear-DnsClientCache
Resolve-DnsName "www.microsoft.com"
Step 4: 複数NIC環境での優先順位を設定する
複数ネットワークを持つサーバーでは、ルーティング優先度(InterfaceMetric)を手動で制御します。
値が小さいほど優先されます。
# 現在の優先順位を確認
Get-NetIPInterface | Sort-Object -Property InterfaceMetric |
Select-Object InterfaceAlias, AddressFamily, InterfaceMetric
# 優先度を変更(管理用NICを優先)
Set-NetIPInterface -InterfaceAlias "<<INTERFACE_ALIAS>>" -InterfaceMetric 10
推奨値例:
- 管理LAN:
10- バックアップLAN:
20~50- クラスタ/iSCSI通信:
100以上
Step 5: 動作確認
疎通とDNS解決を確認します。
# ゲートウェイ到達確認
Test-Connection "<<GATEWAY>>" -Count 4
# 名前解決確認
Resolve-DnsName "www.microsoft.com"
補足:
DNS設定が反映されない場合、net stop dnscache && net start dnscacheでDNSクライアントサービスを再起動します。
Step 6: IPv6を無効化する(要件に応じて)
Windows ServerではIPv4とIPv6が既定で共存します。環境ポリシーやIPv6未使用のネットワークでは、明示的にIPv6を無効化して不要な経路広告や名前解決の揺らぎを抑止できます。
# IPv6の有効状態を確認
Get-NetAdapterBinding `
-InterfaceAlias "<<INTERFACE_ALIAS>>" `
-ComponentID "ms_tcpip6"
# IPv6を無効化
Disable-NetAdapterBinding `
-InterfaceAlias "<<INTERFACE_ALIAS>>" `
-ComponentID "ms_tcpip6" `
-PassThru
# 再確認
Get-NetAdapterBinding `
-InterfaceAlias "<<INTERFACE_ALIAS>>" `
-ComponentID "ms_tcpip6"
IPv6を再度有効化するには次のコマンドを使用します。
Enable-NetAdapterBinding `
-InterfaceAlias "<<INTERFACE_ALIAS>>" `
-ComponentID "ms_tcpip6"
Step 7: ベストプラクティス
- NIC名を固定する
自動認識や更新によるNIC名変更を防ぐため、Rename-NetAdapterで管理名を設定します。Rename-NetAdapter -Name "<<INTERFACE_ALIAS>>" -NewName "LAN-Primary" - 不要なルートを削除
重複や誤経路を防ぐため、明示的にルートを整理します。Get-NetRoute -AddressFamily IPv4 Remove-NetRoute -DestinationPrefix "0.0.0.0/0" -InterfaceAlias "BackupNIC" -Confirm:$false
ネットワークアダプターの有効/無効化
# アダプター無効化
Disable-NetAdapter -Name "<<INTERFACE_ALIAS>>" -Confirm:$false
# アダプター有効化
Enable-NetAdapter -Name "<<INTERFACE_ALIAS>>"
固定IP設定の削除とDHCPへの切り替え
静的IP設定を削除し、DHCPを有効にします。
Remove-NetIPAddress -InterfaceAlias "<<INTERFACE_ALIAS>>" -IPAddress "<<IP_ADDRESS>>" -Confirm:$false
Set-NetIPInterface -InterfaceAlias "<<INTERFACE_ALIAS>>" -Dhcp Enabled
まとめ
PowerShellを利用すれば、Windows Serverのネットワーク設定をスクリプトで正確かつ再現可能に管理できます。
特に複数NIC構成では、ルーティング優先度の制御とDNS構成の明示化が安定運用の鍵です。
初期構築段階からスクリプト化を取り入れ、再構築や展開に強いネットワーク管理を実現しましょう。
