2007年1月8日 星期一

QEMU network

一台機器兩張網路卡,一張是主機網路,另一張是虛擬機器的網路,兩個獨立的IP。雖然在網路端最後是合併,但是這樣相當簡單。然後經由bridge把一張網路卡連上虛擬機器的網路裝置,因此設定虛擬機器的網路跟主機網路設定相當類似,只是IP不同而已。
詳細狀況如下
/etc/network/interfaces
auto eth0
...
是主機網路設定

br0是bridge一端是接eth1

auto br0
iface br0 inet static
address 140.113.x.a
network 140.113.x.0
netmask 255.255.255.255
broadcast 140.113.x.255
gateway 140.113.x.254
bridge_ports eth1
bridge_fd 9
bridge_hello 2
bridge_maxage 12
bridge_stp off
再來是qemu啟動的時候的設定

使用下面的script可以把另一端的網路裝置連上bridge
#!/bin/sh
sudo /sbin/ifconfig $1 0.0.0.0 promisc up
sudo /usr/sbin/brctl addif br0 $1
sleep
但是這部份是在qemu啟動的時候,才會出現另一個網路裝置,
所以script是"qemu -net tap,script=script_file"的部份所設定的

所以qemu網路部份是 qemu-system-arm -net nic -net tap,script=script_file

這樣模擬環境的虛擬網路已經設定完成,

再來是模擬器上的arm linux網路設定
ifconfig eth0 addr 140.113.x.a
ifconfig eth0 netmask 255.255.255.0
ping 140.113.1.1
-> network is unreachable
ip route add default via 140.113.x.254

小故事一則,一個狗窩有兩隻狗,一隻大狗一隻小狗,主人就做了兩個狗門,大狗走大門小狗走小門。人家就問他為什麼不只做一個大門,給兩隻狗走。

但是我們的機器就是有兩張網路卡阿,也就是他本來就有兩個門幹麼不用呢。

ps

If you get an error message like warning: could not open /dev/net/tun: no virtual network emulation, install vtun package, run it ( /etc/init.d/vtun start) and set /dev/net/tun universally read-writable (chmod a+rw /dev/net/tun).

沒有留言: