Mona/仮想化/05.QEMU TAP


Top / Mona / 仮想化 / 05.QEMU TAP

05.QEMU TAP

背景

QEMU でのパケット送受信を -net user で行っていたが、-net user はただの proxy プログラムなので問題がある。
Mona がお行儀の良くないパケットを出力していても、QEMU が正しく整形して外に出してしまう可能性がある。
結果として Mona のパケットの欠陥に気づかないことを引き起こしかねない。

これを防ぐために -net tap の tap でのネットーワークでの動作確認に切り替える。
注意 ユーザーに Mona を配布する際には -net user で動作するようにする。TAP の動作は root 権限など多くの面倒な作業があるため。

Ubuntu 9.10(ホスト) での設定例

/etc/qemu-ifup が存在しない場合は用意する。

#!/bin/sh
sudo /sbin/ifconfig tap0 192.168.50.2 up

192.168.50.2 の部分が QEMU を起動するとホスト側に作成される tap0 インターフェースの IP アドレスになる。

起動する。root 権限で起動することに注意。

sudo qemu -virtioconsole stdio -net
nic,model=virtio -net tap,if_name=tap0 
-cdrom /home/taro/mona/tool/mkimg/mona.iso
-fda /home/taro/mona/tool/mkimg/mona.img -boot d

Mona(ゲスト)の設定例

Mona には tap0 と同じサブネットの 192.168.50.3 を割り当てる。
「割り当てる」とは Mona の IP ヘッダの src アドレスに 192.168.50.3 を設定するという意味。

Mona からホストに ping をする場合。

  1. 192.168.50.2 と IP アドレスしか分からないので ARP で問い合わせて MAC アドレスを調べる。(うまく行った)
    • ホストで ifconfig した tap0 の MACアドレスと答え合わせをすればよい
  2. 該当 MAC アドレスに IP(ICMP) パケットを送信する (うまくいった)
  3. 受信する (まだできていない)

パケットを確認しやすく

この状態でも開発は可能だがパケットを Wireshark または tcpdump -i tap0 で見る場合に問題が発生する。
それは起動順序。

  1. QEMU 起動
  2. パケット監視ツール起動

の順序でないとみられない。tap0 が QEMU の起動時に動的に起動されるので事前に起動して監視ができない。
つまり静的にずっと監視できる何かが必要。静的に tap を作る方法もあるらしいのだけど今回はブリッジを作る。

Mona(virtual NIC) ==> tap0 ==> bridge [終端]

のような構成。本来ブリッジは、異種NW をつなぐものだが、「つなぐ」を目的にするのではなくて、「つないだ先でパケットを見る」という方針。

sudo apt-get install bridge-utils
sudo brctl addbr br
sudo ifconfig br 192.168.50.2 up
ifconfig # で確認

と言う方法はうまくいかなかった。。。

sudo brctl delbr br

で消した。

sudo apt-get install uml-utilitie
sudo tunctl -t tap0 # tap0 を静的に作成。
sudo ifconfig tap0 192.168.50.2 up
/etc/qemu-ifup は元通り

としたが現状 ARP リクエストは見えず、応答も返らなくなった。

Wireshark でのパケットの確認

設定から監視対象のインターフェースを tap0 にして、パケットを見る。
(まだ見えていない。原因不明)

解決

QEMU の tap でパケットを見たい - ひげぽん OSとか作っちゃうかMona-

コメント

コメントはありません。 コメント/Mona/仮想化/05.QEMU TAP?

お名前:

MENU

now: 1

リンク


最新の20件
2018-09-03 2018-05-09 2017-09-29 2017-01-10 2016-12-11 2016-10-04 2016-08-14 2016-06-05 2016-05-29 2016-04-15 2015-12-28 2013-02-25 2013-02-21 2013-02-20 2013-02-12 2013-02-11 2013-02-10
最新の20件
2010-02-01 2010-01-31 2010-01-30 2010-01-29 2010-01-16

Counter: 3148, today: 1, yesterday: 0

リロード   新規 編集 凍結 差分 添付 複製 改名   トップ 一覧 検索 最終更新 バックアップ   ヘルプ   最終更新のRSS

Last-modified: 2009-05-24 (日) 21:50:15 (3409d);  Modified by mona
PukiWiki 1.4.6 Copyright © 2001-2005 PukiWiki Developers Team. License is GPL.
Based on "PukiWiki" 1.3 by yu-ji
Powered by PHP 5.2.17
HTML convert time to 0.021 sec.