ArchLinux + libvirt + KVM + QEMU + bridge

ArchLinuxにKVMを入れて、なおかつssh接続しようと考えてbridge接続に挑戦した。
そもそもKVM自体も初めてだったこともあって、相当苦労したが、なんとかやり方がわかった。

準備

libvirtほか必要パッケージのインストール

host# pacman -S libvirt qemu-headless ebtables dnsmasq virt-install

NetWorkManagerを入れてる場合はdnsmasqはいらない(動かない)。

起動と自動起動設定

host# systemctl start libvirtd
host# systemctl enable libvirtd
host# systemctl start ebtables
host# systemctl enable ebtables
host# #必要に応じて
host# systemctl start dnsmasq
host# systemcrl enable dnsmasq

isoのインストール(ホームディレクトリ下に入れとくとパーミッションエラーが出てしまうので移動)

host# wget https://cdimage.debian.org/debian-cd/current/amd64/iso-cd/debian-9.4.0-amd64-netinst.iso
host# mv debian-9.4.0-amd64-netinst.iso /var/local

ネットワーク設定。ブリッジを使うようにする

# virsh net-edit default
<network>
  <name>default</name>
  <forward mode='nat'/>
  <bridge name='virbr0' stp='on' delay='0'/>
  <ip address='10.10.120.1' netmask='255.255.255.0'>
    <dhcp>
      <range start='10.10.120.3' end='10.10.120.254'/>
    </dhcp>
  </ip>
</network>

ネットワーク再起動

host# virsh net-destroy default && virsh net-start default

インストール

host# sudo virt-install \
--name debian-kvm \
--connect qemu:///system \
--memory 2048 \
--vcpus 1 \
--cpu host \
--disk size=4,format=qcow2 \
--network bridge=virbr0 \
--location /var/local/debian-9.4.0-amd64-netinst.iso \
--nographics \
--virt-type=kvm \
--extra-args=console=ttyS0,115200n8 \
--os-type=linux \
--os-variant=debian9

インストール画面が現れたら、順番に進めていく。
GRUBを入れなかったらどうやってもシリアルコンソールに繋げなくて詰んだので、GRUBも入れる。

Select a language: English
Select your location: other -> Asia -> Japan
Configure locates: en_US.UTF-8
Configure the keyboard: 自分のキーマップ(JIS:Japanese か US:AmericanEnglish)
Configure the network: ssh用のドメイン名を2回入力(1回目はhostname、2回目はドメイン。同じ名前にする)
Set up users and passwords: 決める
Partition disk: Guided - use entire disk
Virtual disk 1 (vda) - 4.3 GB Virtio Block Device
All files in one partition (recommended for new users)
Finish partitioning and write changes to disk
Write the changes to disks?: Yes
Scan another CD or DVD?: No
Configure the package manager: Japan -> ftp.jp.debian.org
HTTP proxy information: 空
Participate in the package usage survey?: No
Software Selection: SSH server, standard system utilities, (web server, 必要なら)
Install the GRUB boot loader on a hard disk: Yes
Device for boot loader installation: /dev/vda

ここでインストールが終わっても<Continue>を押さずにCtrl-aを押して2を押す(Screen移動)

Macアドレス記憶

guest# ip a

loでない方(手元ではens2だった)のlink/etherのmacアドレスを控える

シリアルコンソール接続

guest# chroot target bash
guest# cd boot/grub
guest# chmod +w grub.cfg
guest# vi grub.cfg

viを開いたら:%s/quiet/quiet console='ttyS0'/gc、確認メッセージでaを打って:wq

guest# chmod -w grub.cfg

Ctrl-a, 1でインストール画面に戻りContinueを選んで再起動
一度rootログインして

guest# poweroff

固定IP設定

host# virsh net-destroy default
host# virsh net-edit default

!!!の行を追加

<network>
  <name>default</name>
  <forward mode='nat'/>
  <bridge name='virbr0' stp='on' delay='0'/>
  <ip address='10.10.120.1' netmask='255.255.255.0'>
    <dhcp>
      <range start='10.10.120.3' end='10.10.120.254'/>
!!!   <host mac='xx:xx:xx:xx:xx:xx(仮想マシンのmacアドレス)' name='debian' ip='10.10.120.2'/>
    </dhcp>
  </ip>
</network>

ネットワーク再起動

host# virsh net-destroy default && virsh net-start default

ゲストOS再起動・IP確認

host# virsh start debian-kvm --console

rootログイン

guest# ip a

ここで固定IP(10.10.120.2)が取得できていればOK

うまく行かなかったら

ホストごと再起動したり、

host# systemctl restart ebtables
host# systemctl restart dnsmasq
host# systemctl restert libvirtd
host# virsh net-start default
host# virsh start debian-kvm --console

したりしてたらなおった。

自動起動設定

host# virsh autostart debian-kvm
host# virsh net-autostart default

SSH接続

host# ssh 10.10.120.2

 

課題

ネットワーク設定のところでname='debian'としたが、ssh debianでは入れなかった。
hostsいじるのでもいいんだけど、なんとかlibvirt側でできないかなぁ

後日談

あれこれ再起動しないと反映されなかった問題。

virsh net-editしなくてもコマンド1つで編集できるらしい。

host# virsh net-update default add ip-dhcp-host \
  "<host mac='xx:xx:xx:xx:xx:xx' name='debian' ip='10.10.120.2' />" \
  --live --config

参考:https://wiki.libvirt.org/page/Networking#virsh_net-update

もしくはvirsh net-destroyvirsh net-start defaultの間に

host# rm -rf /var/lib/libvirt/dnsmasq/default.leases

でDHCPリースのキャッシュを削除するといいらしい。
参考:http://momijiame.tumblr.com/post/84423976326/libvirtkvm-%E3%81%A7-vm-%E3%81%AB%E9%9D%99%E7%9A%84%E3%81%AA-ip-%E3%82%A2%E3%83%89%E3%83%AC%E3%82%B9%E3%82%92%E9%85%8D%E5%B8%83%E3%81%99%E3%82%8B

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です