LoginSignup
3
4

More than 5 years have passed since last update.

KVM NATのDHCPで割り当てられたIPアドレスを確認する (Ubuntu)

Last updated at Posted at 2015-11-22

「Ubuntuで運用しているKVM環境にゲストOSを作成したが、まだゲストにコンソールを設定しておらず、virsh consoleを使えない状況である。ゲストOSのネットワーク設定はNAT接続としてインターフェイスにはDHCPの設定をしているので、IPアドレスが割り当てられているはずだがIPアドレスが分からない。IPアドレスが分かればSSHできるのだが・・・」

というケースが実際にあったので、KVM側(ハイパーバイザ側)にログインした状態で、ゲストOSへ割り当てられたIPアドレスを確認できないか調べてみた。

IPアドレス確認方法

結論から先に書くと、下記のパスにあるファイルを確認すればよい。
IPアドレスが確認出来れば、あとはSSHでログインするだけである。

$ cat /var/lib/libvirt/dnsmasq/default.leases
1448180977 XX:XX:XX:XX:XX:XX 192.168.122.57 * *

複数のゲストOSが起動していて、どれが目的のゲストか分からない場合はvirsh dumpxmlでMACアドレスを確認するとよいだろう。

$ sudo virsh dumpxml guestname
...
    <interface type='network'>
      <mac address='XX:XX:XX:XX:XX:XX'/>
      <source network='default'/>
      <target dev='vnet0'/>
      <model type='virtio'/>
      <alias name='net0'/>
      <address type='pci' domain='0x0000' bus='0x00' slot='0x03' function='0x0'/>
    </interface>
...

詳細

KVMのNAT環境ではDHCPサーバとしてdnsmasqが使用されていて、defaultというネットワークにおいてDHCPのリクエストをすると192.168.122.0/24のIPアドレスが割り当てられる。

プロセスの引数からも推察されるようにdnsmasqが割り当てた情報は/var/lib/libvirt/dnsmasq/default.leasesに記載されている。

$ sudo virsh net-list
Name                 State      Autostart
-----------------------------------------
default              active     yes

$ ps ax |grep dnsmasq
1358 ?        S      0:00 /usr/sbin/dnsmasq -u libvirt-dnsmasq --strict-order --bind-interfaces --pid-file=/var/run/libvirt/network/default.pid --conf-file= --except-interface lo --listen-address 192.168.122.1 --dhcp-range 192.168.122.2,192.168.122.254 --dhcp-leasefile=/var/lib/libvirt/dnsmasq/default.leases --dhcp-lease-max=253 --dhcp-no-override

$ cat /var/lib/libvirt/dnsmasq/default.leases
1448180977 XX:XX:XX:XX:XX:XX 192.168.122.57 * *
3
4
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
3
4