KVM を使ったブリッジ接続設定について
前々回のエントリーにて KVM を使った仮想OS設定手順についてご紹介いたしました。
今回はホストOSとゲストOS間でのブリッジ接続設定についてのメモとなります。
ブリッジ接続を行うことで、ホストOSとゲストOSが同じネットワークセグメント内で通信を行うことが可能になります。
前々回と同様にホストOSには Xubuntu 10.04 を、ゲストOSには Debian 3.1 Sarge を使用します。
KVM のネットワーク設定については下記のサイトを参照させていただきました。
ホストOSの環境
- モデル名:MacBook
- CPU:Intel Core 2 Duo(2 GHz)
- メモリ:1GB
- OS:Xubuntu 10.04
ネットワーク環境
- ネットワークアドレス:192.168.0.1/24
ゲストOS側での準備
本手順では、ホスト0S と ゲスト0S間の通信テストに ssh を使用します。
Debian 3.1 を最小構成でインストールした場合は、ssh がインストールされていないので、apt-get コマンドを使ってインストールします。
ゲストOSの起動
kvm -hda debian_sarge.img -boot c -m 256 -redir tcp:2200::22
上記コマンドを実行してゲストOSを起動します。
コマンドの詳細内容は以下のようになります。
source.list ファイルの編集
deb http://ftp.riken.jp/Linux/debian/debian-archive/ sarge main contrib deb-src http://ftp.riken.jp/Linux/debian/debian-archive/ sarge main contrib
root ユーザとしてログインし、/etc/apt/source.list ファイルに上記の2行を追加します。
ssh のインストール
apt-get update
まず、上記コマンドを実行してパッケージリストを更新します。
apt-get install ssh
次に、上記コマンドを実行して ssh パッケージをインストールします。
sshインストール時に設定確認画面が表示されます。
ssh プロトコル2 のみをインストール -> Yes
/usr/lib/ssh-keysign を root に SUID (setuid) *1する -> Yes
sshd サーバの実行 -> Yes
/etc/init.d/ssh start
ホストOSからゲストOSへの接続テスト
ssh keitaro@127.0.0.1 -p 2200
ホストOSから上記コマンドを実行してゲストOSにssh接続します。
The authenticity of host '[127.0.0.1]:2200 ([127.0.0.1]:2200)' can't be established. RSA key fingerprint is a3:58:28:c3:e9:e5:af:96:ae:41:96:19:a1:1a:56:5e. Are you sure you want to continue connecting (yes/no)? yes Warning: Permanently added '[127.0.0.1]:2200' (RSA) to the list of known hosts. Password: Linux sarge 2.4.27-2-386 #1 Wed Aug 17 09:33:35 UTC 2005 i686 GNU/Linux The programs included with the Debian GNU/Linux system are free software; the exact distribution terms for each program are described in the individual files in /usr/share/doc/*/copyright. Debian GNU/Linux comes with ABSOLUTELY NO WARRANTY, to the extent permitted by applicable law. You have mail. keitaro@sarge:~$ hostname sarge
ログインできました。
keitaro@sarge:~$ su - root Password: sarge:~# ifconfig eth0 Link encap:Ethernet HWaddr 52:54:00:12:34:56 inet addr:10.0.2.15 Bcast:10.0.2.255 Mask:255.255.255.0 UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1 RX packets:179 errors:1 dropped:0 overruns:0 frame:0 TX packets:117 errors:0 dropped:0 overruns:0 carrier:0 collisions:0 txqueuelen:1000 RX bytes:18425 (17.9 KiB) TX bytes:15391 (15.0 KiB) Interrupt:11 Base address:0xc100 lo Link encap:Local Loopback inet addr:127.0.0.1 Mask:255.0.0.0 UP LOOPBACK RUNNING MTU:16436 Metric:1 RX packets:0 errors:0 dropped:0 overruns:0 frame:0 TX packets:0 errors:0 dropped:0 overruns:0 carrier:0 collisions:0 txqueuelen:0 RX bytes:0 (0.0 b) TX bytes:0 (0.0 b)
IPアドレスが「10.0.2.15」になっていることも確認できました。
確認後は、一旦ゲストOSをシャットダウンします。
shutdown -h now
ゲストOSの画面にて上記コマンドを実行し、OSをシャットダウンします。
ブリッジ接続を行う
ssh 接続の準備ができましたので、次はブリッジ接続を行います。
ホストOS側でのネットワーク設定
以下は ホストOSの root 権限で作業を行います。コマンドラインにて順番に実行します。
ifconfig eth0 0.0.0.0 promisc up
eth0 をプロミスキャス・モード*2にします。
brctl addbr br0
br0 という名前でブリッジを作成
brctl addif br0 eth0
eth0 を br0 ブリッジのポートにする
ifconfig br0 up
br0 を起動
ifconfig br0 192.168.0.2 netmask 255.255.255.0 route add default gw 192.168.0.1
ホストOSのIPアドレス、デフォルトゲートウェイ*3を設定します。
ゲストOSを起動
kvm -hda debian_sarge.img -boot c -m 256 -net nic,macaddr=52:54:00:12:34:56 -net tap,ifname=tap0,script=/etc/qemu-ifup
上記コマンドを実行してゲストOSを起動します。
コマンドの詳細内容は以下のようになります。
ホストOSからゲストOSへの接続テスト
ssh keitaro@192.168.0.3
ホストOSから上記コマンドを実行してゲストOSにssh接続します。
The authenticity of host '192.168.0.3 (192.168.0.3)' can't be established. RSA key fingerprint is a3:58:28:c3:e9:e5:af:96:ae:41:96:19:a1:1a:56:5e. Are you sure you want to continue connecting (yes/no)? yes Warning: Permanently added '192.168.0.3' (RSA) to the list of known hosts. Password: Linux sarge 2.4.27-2-386 #1 Wed Aug 17 09:33:35 UTC 2005 i686 GNU/Linux The programs included with the Debian GNU/Linux system are free software; the exact distribution terms for each program are described in the individual files in /usr/share/doc/*/copyright. Debian GNU/Linux comes with ABSOLUTELY NO WARRANTY, to the extent permitted by applicable law. You have mail. Last login: Sat Jun 26 17:15:07 2010 from 10.0.2.2 keitaro@sarge:~$
ゲストOSに接続することができました。
ホストOS - ゲストOS 間では、それぞれのIPアドレスを指定して疎通がとれる状態になりました。
*1:ssh-keysign を root に SUID についての詳細はTempus - 昨今明日: ssh で HostBased 認証を行うには ssh-keysign に setuid する必要があるが参考になります。SUIDについてはUNIXの部屋 コマンド検索:setuid (*BSD/Linux)が参考になります。