立ち話

興味があることを書いてます。正確な内容は公式ドキュメントや参考文献を確認してください。

KVMでIPアドレスを固定する

1. はじめに

KVMを用いて仮想環境を構築するまでは前の記事で書いた1。 Nessusを用いる際に各VMIPアドレスを固定したいと思ったので、ここではその方法についてまとめる。

2. サブネットの追加

ここでは、Virtual Machine Manager を用いて仮想ネットワークを作成する2。 Connection Details メニューの Virtual Networks タブを開き、"Add Network" ボタン (左下の+ボタン) をクリックする。

そして、名前、モード、ネットワークアドレス、DHCPの範囲などを指定して、Finish ボタンを押す。

仮想ネットワークの作成

3. 静的IPアドレスの設定

ここでは、仮想マシンのUbuntu20.04 に対して静的IPアドレスを設定する3。 ここでは、コマンドラインの操作をホストの物理マシンで行う。

3.1 ゲスト XML 設定ファイルの確認

virsh domiflist [guestname] コマンドをroot権限で実行し、ゲストのネットワーク設定を表示する。私の環境の場合、

tcbn@tcbn-N14xZU:~$ sudo virsh domiflist ubuntu20.04 
[sudo] password for tcbn: 
 Interface   Type      Source            Model    MAC
---------------------------------------------------------------------
 vnet0       network   default           virtio   52:54:00:b2:8d:75
 vnet1       network   virtual_network   virtio   52:54:00:e7:56:40

だった。今回は、virtual_network 側のIPアドレスの固定を例に説明する。

3.2 DHCP範囲の確認

参考にしたサイトによると、設定するIPアドレスはネットワークのDHCPの範囲内で設定する必要があるとのことなので、DHCPの範囲とすでに使用されているアドレスを以下のコマンドをroot権限で実行することで確認する。

virsh net-dumpxml default | egrep 'range|host\ mac'

私の環境の場合、

tcbn@tcbn-N14xZU:~$ sudo virsh net-dumpxml virtual_network | egrep 'range|host\ mac'
      <range start='192.168.100.128' end='192.168.100.254'/>

だった。

3.3 静的IPの設定

ホストマシンで以下のコマンドをroot権限で実行する。

virsh net-update [network name] add ip-dhcp-host '<host mac=[mac address] ip=[ip address]/>' --live --config

--live オプションは、この変更を即座に有効にし、--config オプションは変更を永続化する。例えば、192.168.100.131 に固定する場合は以下。

tcbn@tcbn-N14xZU:~$ sudo virsh net-update virtual_network add ip-dhcp-host '<host mac="52:54:00:e7:56:40" ip="192.168.100.131"/>' --live --config
Updated network virtual_network persistent config and live state

3.4 インタフェースの再起動

ゲスト仮想マシンが実行中の場合、ゲスト仮想マシンDHCPアドレスの再要求を強制する必要がある。インタフェースの再起動のためには、以下のコマンドをroot権限で実行する。

virsh domif-setlink [guestname] [mac address] down
sleep 10
virsh domif-setlink [guestname] [mac address] up

sleep 10 (これは一般ユーザ権限でも実行化) としたのは、DHCPクライアントに古いIPアドレスを忘れさせるため。これでうまく反映されなかったら、仮想マシンの電源を一度落として再度起動すると良い。

私の環境の場合、以下のようになった。

tcbn@tcbn-N14xZU:~$ sudo virsh domif-setlink ubuntu20.04 52:54:00:e7:56:40 down
Device updated successfully

tcbn@tcbn-N14xZU:~$ sleep 10
tcbn@tcbn-N14xZU:~$ sudo virsh domif-setlink ubuntu20.04 52:54:00:e7:56:40 up
Device updated successfully

ここまでを実行した上で仮想マシンifconfig を実行すると以下のようになり、IPアドレスが固定されていることがわかる。

IPアドレスが192.168.100.131に固定されている。