Windows Server / Client で固定 IP アドレスを設定するには、New-NetIPAddress と Set-DnsClientServerAddress を使うのですが、IPv6 はちょっと癖があるで、IPv4 の設定方法と併せて解説します。
IP アドレスを設定するには、対象の NIC を指定する必要があります。
1 つしか NIC を持たない環境であれば、Get-NetAdapter で取得した NIC をそのまま New-NetIPAddress / Set-DnsClientServerAddress にリダイレクトします。
Get-NetAdapter | New-NetIPAddress ... |
複数 NIC がある場合は、何かしらの方法で NIC を特定しなくてはいけません。
NIC を特定するポピュラーな方法は MAC アドレスか、NIC 名で特定します。
MAC アドレスで特定する場合は、Where-Object(Alias:?) で MAC アドレスを指定して NIC を特定します。
Get-NetAdapter | ? MacAddress -eq 00-00-5E-05-14-8D | New-NetIPAddress ... |
MAC アドレス以外の方法としては、NIC 名を使う手があります。
Get-NetAdapter -Name "イーサネット 2" | New-NetIPAddress ... |
Default NIC
名だと識別が難しいので、NIC 名を変更することが多いですねよね。
そんな時は、Rename-NetAdapter で NIC 名を変更します。
Get-NetAdapter -Name "イーサネット 2" | Rename-NetAdapter -NewName "NIC01" |
DHCP で配布されたドメイン名を使って NIC を特定する
複数セグメントに足を出している環境の場合、僕が良く使う手は DHCP を配置してドメインを指定し、そのドメイン名を見て NIC 特定します。
DHCP で配布されたドメイン名を取得するには WMI の Win32_NetworkAdapterConfiguration の DNSDomain を使います。
特定できた NIC の MAC アドレスを使って IP アドレス設定します。
こんな感じですね
# ドメイン名が一致した NIC $NIC = Get-WmiObject Win32_NetworkAdapterConfiguration | ? DNSDomain -eq "Internal_Segment" # その NIC の MAC Address $MACAddress = $NIC.MACAddress # 形式変更( : を - に 変更) $MACAddress = $MACAddress.Replace(":", "-") # MAC アドレスを指定して NIC を特定 Get-NetAdapter | ? MacAddress -eq $MACAddress | New-NetIPAddress ... |
IPv4 アドレスの設定は New-NetIPAddress -AddressFamily IPv4 で設定します。
こんな感じです
Get-NetAdapter | New-NetIPAddress -AddressFamily IPv4 -IPAddress 192.0.2.10 -PrefixLength 24 -DefaultGateway 192.0.2.254 |
IPv6 アドレスの設定は New-NetIPAddress -AddressFamily IPv6 で設定します。
同一プレフィックス内の DefaultGateway を指定する場合の
オプションは IPv4 と同じです。
Get-NetAdapter | New-NetIPAddress -AddressFamily IPv6 -IPAddress 2001:DB8:400:0:a90c:3ea4:52b0:5e03 -PrefixLength 64 -DefaultGateway 2001:DB8:400:0:fcc9:8445:7ac8:1492 |
IPv6 環境の場合、DefaultGateway にリンクローカルアドレスを指定することが多いのですが、New-NetIPAddress ではプレフィックスが異なるので受け付けてくれません。
この問題を解決するには、New-NetRoute を使って、デフォルトゲートウェイを別に設定します
# IPv6 Address 設定 Get-NetAdapter | New-NetIPAddress -AddressFamily IPv6 -IPAddress 2001:DB8:400:0:a90c:3ea4:52b0:5e03 -PrefixLength 64 # Default Gateway 設定 Get-NetAdapter | New-NetRoute -AddressFamily IPv6 -DestinationPrefix ::/0 -NextHop fe80::1 |
RA 環境では、RA による 自動構成 IPv6 アドレスも割当たってしまうので、Set-NetIPInterface で自動構成を停止します。
Set-NetIPInterface は NIC
の特定は不要です。
(IPv6 アドレスを設定する前に停止しないと IPv6 アドレス設定がエラーになります)
Set-NetIPInterface -RouterDiscovery Disabled |
参照 DNS の設定は Set-DnsClientServerAddress で設定します。
Set-DnsClientServerAddress は IPv4 / IPv6 混在で指定できます。
Get-NetAdapter | Set-DnsClientServerAddress -ServerAddresses 192.0.2.1, 192.0.2.2, 2001:DB8:400:0::1, 2001:DB8:400:0::2 |
以下で設定を解除することができます。
# DNS設定の解除 Get-NetAdapter | Set-DnsClientServerAddress -ResetServerAddresses -confirm:$false # IPアドレス設定の解除 Get-NetAdapter | Remove-NetIPAddress -confirm:$false # DHCP Client 有効 Get-NetAdapter | Set-NetIPInterface -AddressFamily IPv4 -Dhcp Enabled # デフォルトゲートウェイの解除(IPv4) Get-NetAdapter | Remove-NetRoute -DestinationPrefix 0.0.0.0/0 -confirm:$false # デフォルトゲートウェイの解除(IPv6) Get-NetAdapter | Remove-NetRoute -DestinationPrefix ::/0 -confirm:$false # 自動構成 IPv6 アドレス有効 Set-NetIPInterface -RouterDiscovery Enabled # NIC 再起動 Get-NetAdapter | Restart-NetAdapter |
Copyright © MURA All rights reserved.