Debian 7 WheezyにKVMをインストールする (iptables対応)

Debian 7 WheezyにKVMをインストールした際の手順をまとめます.

まず, qemu-kvmとlibvirt-binをインストールします. これらはKVMを利用するにあたって必ず必要になります.

$ sudo aptitude install qemu-kvm libvirt-bin

GUIを用いた仮想マシンの管理を行いたい場合は, virt-managerもインストールします.

$ sudo aptitude install virt-manager

一般ユーザーからも仮想マシンを管理できるようにlibvirtグループにユーザーを追加しておきます. rootからのみ使用する場合は必要ないですが, X上でGUIを用いて管理する場合は追加しておいた方が良いです.

$ sudo adduser <user> libvirt

次に, VMをネットワークに接続するためのブリッジインターフェースを作成します. VMをネットワークに接続するためにNATを用いる場合はこの手順は不要です. ブリッジを作成するためのユーティリティをインストールします.

$ sudo aptitude install bridge-utils

ブリッジの設定を/etc/network/interfacesに記入します. NetworkManagerが有効になっていると上書きされてしまう可能性があるので, 事前に無効化しておく必要があります. ここではeth0で接続していたものを, br0にブリッジすると仮定して設定します.

元の設定

auto eth0
iface eth0 inet static
    address 192.168.1.10
    network 192.168.1.0
    netmask 255.255.255.0
    broadcast 192.168.1.255
    gateway 192.168.1.1

ブリッジ追加後の設定

auto eth0
iface eth0 inet manual

auto br0
iface br0 inet static
    address 192.168.1.10
    network 192.168.1.0
    netmask 255.255.255.0
    broadcast 192.168.1.255
    gateway 192.168.1.1
    bridge_ports eth0

設定を変更したら, ネットワークを再起動します.

$ sudo service networking stop
$ sudo service networking start

これで, ブリッジの作成は出来ましたが, iptablesを使ってパケットフィルタリングを行っている場合, 設定によってはブリッジへパケットが通らなくなります. ブリッジ上でされたトラフィックは iptables を通らないようにするため, /etc/sysctl.conf に以下を追記しておきます.

net.bridge.bridge-nf-call-ip6tables=0
net.bridge.bridge-nf-call-iptables=0
net.bridge.bridge-nf-call-arptables=0

以下を実行して, 設定変更を反映させます.

sudo sysctl -p /etc/sysctl.conf

起動時に確実に sysctl.conf の設定が読み込まれるようにするため /etc/rc.local に以下を追記します.

# 〜〜〜 省略 〜〜〜

# 以下の行を追記
/sbin/sysctl -p /etc/sysctl.conf

exit 0

以上で, Debian 7 Wheezy上でKVMを使ったVMを作成できるようになります. VMの作成方法などについては以下を参考にして下さい.

参考

更新

  • 2015/5/9 一部表現を改善
  • 2015/5/14 sysctl について追記