トップページ > コンテンツ > 環境設定 > KVM関連

KVMを利用した仮想マシン準備の方法を備忘録として記載する。

1.KVMのインストール

$ sudo apt-get update
$ sudo apt-get upgrade
$ sudo apt-get install qemu-kvm virt-manager libvirt-clients libvirt-bin bridge-utils qemu-utils virtinst

パッケージ名 主な使い道
qemu-kvm kvm本体
virt-manager GUI操作
libvirt-clients libvirt-bin virshコマンド
bridge-utils brctlコマンド
qemu-utils qemu-img操作
virtinst virt-installコマンド

2.仮想マシン構築

2-1.GUIで仮想マシン構築する場合

0.ISOイメージを/var/lib/libvirtd/image/配下等に配置
1.virt-manager起動
# systemctl start libvitd
# systemctl enable libvirtd
# reboot
# virt-manager
2.コンピュータのアイコンをクリック
3.「ローカルのインストールメディア(ISOイメージまたはCD-ROMドライブ)」を指定して進む
4.配意したisoイメージを指定して進む
5.自動判定されない場合はOSの種類、バージョンを指定
6.メモリーとCPU数を指定
7.ディスクサイズを指定
8.仮想マシンと接続するネットワーク名を指定

2-2.CLIで仮想マシン構築する場合

0.ISOイメージを/var/lib/libvirtd/image/配下等に配置
1.virt-installコマンド実行
virt-install --name <ドメイン名> ¥
--vcpus 1 --memmory 512 ¥
--graphics spice,listen=0.0.0.0 ¥
--noauto console --network network=default,model=virtio ¥
--cdrom /var/lib/libvirt/images/<isoファイル名> ¥
--os-variant <OS名> ¥
--disk pool=default,size=5,bus=virtio,format=qcow2

3.ホスト側で仮想ネットワーク設定(仮想ブリッジ等)

3-1.GUIでネットワークを構築する場合

1.編集➡接続の詳細➡仮想ネットワークを選択
2.+ボタンで新しい仮想ネットワーク作成に進む
3.仮想ネットワーク名を指定して進む
4.IPv4アドレスとDHCPを有効化するかを指定して進む
5.IPv6を利用するかどうかを指定
6.物理ネットワークを作成を指定
 ネットワークの種類はhttps://www.virment.com/kvm-configuration/を参照すると良い。

3-2.CLIでネットワークを構築する場合

3-2-1.仮想ブリッジの設定

#vi /etc/network/interfaces
#仮想ブリッジにIPを振るので物理NICには振らない
auto eno1
iface eno1 inet manual
mtu 9000

auto bridgeA
iface bridgeA inet static
address xxx.xxx.xxx.xxx/xx
netmask xxx.xxx.xxx.xxx
bridge-ports eno1
mtu 9000

3-2-2.同じブリッジ内の仮想マシン間疎通のためのFirewall設定

# iptables -A INPUT -p tcp -s 0.0.0.0/0 -d 0.0.0.0/0 --dport 53 -j ACCEPT -i bridgeA
# iptables -A INPUT -p udp -s 0.0.0.0/0 -d 0.0.0.0/0 --dport 53 -j ACCEPT -i bridgeA
# iptables -A INPUT -p tcp -s 0.0.0.0/0 -d 0.0.0.0/0 --dport 67 -j ACCEPT -i bridgeA
# iptables -A INPUT -p udp -s 0.0.0.0/0 -d 0.0.0.0/0 --dport 67 -j ACCEPT -i bridgeA
# iptables -A FORWARD -p all -s 0.0.0.0 -d 0.0.0.0/0 -j ACCEPT -i bridgeA -o bridgeA
# iptables -A FORWARD -p all -s 0.0.0.0 -d 0.0.0.0/0 -j REJECT --reject-with icmp-port-unreachable -o bridgeA 
# iptables -A FORWARD -p all -s 0.0.0.0 -d 0.0.0.0/0 -j REJECT --reject-with icmp-port-unreachable -i bridgeA
# iptables -A OUTPUT -p udp -s 0.0.0.0/0 -d 0.0.0.0/0 --dport 68 -j ACCEPT -o bridgeA
※GUIで設定した隔離されたネットワーク相当の場合
※複数の仮想マシンにホスト側の同一仮想ブリッジとつないだインタフェースを持たせ、複数仮想マシン間で疎通を取りたい場合にはFirewall設定が必要。

4.ホスト側ネットワークと仮想マシンのアタッチ

4-1.GUIでネットワークをアタッチする場合

1.仮想マシンの画面を開く。表示➡詳細を選択。
2.ハードウェアを追加ボタンを押下。
3.ネットワークを選択
4.ネットワークソースに手順3作成したネットワークを選択。デバイスのモデルはvirtioあたりを指定しておく。
5.完了ボタンを押下

4-2.CLIでネットワークをアタッチする場合

1.virsh attach-interfaceコマンドを実行する
# virsh attach-interface --type bridge --source bridgeA --model モデル名 仮想マシン名

5.仮想マシン側でインタフェース情報を設定(CentOS7の場合)

$ nmcli connection add type ethernet eth1 con-name eth1
$ nmcli connection modify eth1 ipv4.method manual
$ nmcli connection modify eth1 ipv4.addresses xxx.xxx.xxx.xxx
$ nmcli connection down eth1
$ nmcli connection up eth1
最終更新:2020年04月26日 15:32