Windows Hyper-V上に建てたVMに固定IPを設定する方法を記します。※ホストOSはWindos10(1909)VMはUbuntu 20.04.2 LTSです。
動機
ホストOSを起動し直す度にVMのIPが変更されてどうにも作業にならない。。なのでVMのIPを固定にしたい。
Steps
Powershell起動
まずPowershellをRun as administrator で起動します。
仮想スイッチを作成
Powershell上で以下のコマンドを実行します。(SwitchNameはなんでもOK)
New-VMSwitch -SwitchName "WinNAT" -SwitchType Internal
次に作成されたスイッチのインデックスを以下のコマンドで確認します。
Get-NetAdapter
得られた結果のifIndexが後で必要になります。
作成した仮想スイッチにIPとサブネットを設定
以下のコマンドで作成したスイッチにIPを割り当てます。(前段で得られたifIndexが18であったとします。)
New-NetIPAddress -IPAddress 10.10.1.1 -PrefixLength 24 -ifIndex 18
この場合では、サブネットが10.10.1.0/24でIPアドレスがVMのゲートウェイアドレスとなります。
次に他にNATが存在しないか確認します。
Get-NetNat
何もなければなにも出力されません。もし他のNATがあるようだったら以下のコマンドで削除してください。
Remove-NetNat
次にNATを以下のコマンドで作成します。
New-NetNat -Name MyNAT -InternalIPInterfaceAddressPrefix 10.10.1.0/24
作成されたスイッチが指定したIPで存在しているか確認
作成した仮想スイッチをVMに割り当てる
VMにログインして、以下のyamlファイルをコマンドで作成します。ファイル名はなんでもOK。このyamlファイルで作成したスイッチとVMのIPを指定します。50-cloud-int.yamlが既に同ディレクトリに存在していたら適当に*.backにリネームしてください。DNSサーバは環境に合わせて設定してください。
sudo vim /etc/netplan/net-config.yaml
#net-config.yaml
network:
version: 2
renderer: networkd
ethernets:
eth0:
dhcp4: false
addresses:
- 10.10.1.2/24 #The static IP for this VM. the IP should be in the range which has specified for the NAT.
gateway4: 10.10.1.1 # The IP of the created switch above.
nameservers: # DNS servers. This should be specified otherwise this VM cannot be connected to the internet.
addresses:
- 192.168.255.75
- 192.168.255.76
yamlファイルを保存したら以下のコマンドを実行してください。
sudo netplan apply
次にHyper-VマネージャでVMのスイッチをDefault Switchから作成したスイッチ(WinNAT)に変更してください。
確認
VMにログインしてpingやcurl google.comとかやってみてホストPCやインターネットに繋がることを確認します。