このサーバを作成した際のメモですが、誰かの役に立つかもしれないので公開します。
このページでは、既にDebian がインストールされている状態の物理的なコンピュータ(ホスト側とします)がある前提で、KVM をインストールし仮想環境にゲストOS をインストールして通信できるようにするところまで扱います。
KVM やXen、VMWare vSphere などがありますが、無料でパフォーマンスが良いKVM を選びました。最初vSphere にしようと思ったんですが、5系以降有料しかないのでパスしました。vSphere が使えるならそっちのほうが後々楽だと思います。
一度ゲストOS が動けばホスト側はほとんど使わない運用としますが、一応VNC を入れておきます。virt-manager が無いと最初辛いのでVNC でvirt-manager を操作しますし。
Debian をまずホストOS としてインストールしたマシンを用意します。
$ uname -a
Linux 4.19.0-5-amd64 #1 SMP Debian 4.19.37-5+deb10u1 (2019-07-19)
OS はこんな感じで、特にkernel に手は加えていません。
ゲストOS はKVM 内でブリッジした仮想ハブに接続して外に出るようにします。また、IP アドレスは全て固定します。
# apt-get update
# apt-get upgrade
# apt install ssh
Window Manager はjwm を使います。
# apt-get install xserver-xorg-core jwm vnc4server
$ cat .vnc/startup
#!/bin/sh
# Uncomment the following two lines for normal desktop:
# unset SESSION_MANAGER
# exec /etc/X11/xinit/xinitrc
[ -x /etc/vnc/xstartup ] && exec /etc/vnc/xstartup
[ -r $HOME/.Xresources ] && xrdb $HOME/.Xresources
xsetroot -solid grey
vncconfig -iconic &
xterm -bg black -fg gray &
jwm &
$ crontab -e
@reboot vncserver :1 -geometry 1024x768 -localhost no
crontab にリブートした時に自動起動するように設定します。Windows からアクセスするときは、UltraVNC で、
192.168.1.200:1
とします。
# apt -y install qemu-kvm libvirt-daemon libvirt-daemon-system virtinst libosinfo-bin bridge-utils virt-manager qemu-system
ネットワークの設定はこのタイミングでbr0 を作ります。dns-nameservers は8.8.8.8 でもプロバイダが用意したものでも構いません。
# cat /etc/network/interfaces
# The loopback network interface
auto lo
iface lo inet loopback
# The primary network interface
allow-hotplug enp3s0
iface enp3s0 inet manual
#iface enp3s0 inet static
#address 192.168.1.20
#netmask 255.255.255.0
#gateway 192.168.1.1
#dns-nameservers 8.8.8.8
iface br0 inet static
address 192.168.1.20
netmask 255.255.255.0
gateway 192.168.1.1
dns-nameservers 8.8.8.8
bridge_ports enp3s0
bridge_stp off
auto br0
VNC 経由でコンソールを開き、
$ virt-manager
でvirt-manager が起動します。
virt-manager を起動し、新しい仮想環境を作成したら、Ubuntu Server 16.04 をインストールします。
$ uname -a
Linux 4.4.0-142-generic #168-Ubuntu SMP Wed Jan 16 21:00:45 UTC 2019
update, ssh のインストールくらいはしておきます。
まずインターネットにNAT でつながることを確認したら、仮想ブリッジを再度設定します。
ホスト側は以下のようになっていると思います。
# brctl show
bridge name bridge id STP enabled interfaces
br0 8000.1c697a01fe43 no enp3s0
virbr0 8000.52540077885d yes virbr0-nic
ゲストOS Ubuntuのvirt-manager を設定します。
[Virtual Network Interface] - [Specify Shared device name]
then type [br0] manually and apply.
ゲストOS を再起動したら、次にIP アドレスを設定します。
# cat /etc/network/interfaces
source /etc/network/interfaces.d/*
# The loopback network interface
auto lo
iface lo inet loopback
# The primary network interface
auto ens3
#iface ens3 inet dhcp
iface ens3 inet static
address 192.168.1.23
netmask 255.255.255.0
gateway 192.168.1.1
dns-nameservers 8.8.8.8
これでローカルの別のPC からアクセスできるようになりました。