Tuesday, December 30, 2008

Ubuntu 8.10 virtualbox transparent bridge configure

# 替换下面所有的david为实际的ubuntu用户名
$> sudo apt-get install uml-utilities
$> sudo gpasswd -a david uml-net
$> sudo apt-get install bridge-utils
# 重启ubuntu

$> sudo chmod 0666 /dev/net/tun #设置访问权限
$> sudo tunctl -t tap0 -u david #建立一个tap设备, 名字为tap0, 所有者为david
$> sudo ifconfig eth0 0.0.0.0 promisc #使eth0进入promiscuous模式
$> sudo ifconfig tap0 0.0.0.0 promisc #使tap0进入promiscuous模式
$> sudo brctl addbr br0 #增加一个网桥
$> sudo brctl addif br0 eth0 #将eth0加入网桥
$> sudo ifconfig eth0 up #激活eth0
$> sudo dhclient br0 #为br0设置IP地址
$> sudo brctl addif br0 tap0 #将tap0加入网桥
$> sudo ifconfig tap0 up #激活tap0

$> sudo /etc/init.d/networking restart
这个操作之后br0就应该会从局域网分配到ip地址,eth0和tap0则经由br0链到网络,不过这样机器重启之后这些配置就没有了,所以可以把这些信息写到/etc/network/interfaces中,
$> more /etc/network/interfaces

auto lo
iface lo inet loopback

auto eth0
iface eth0 inet manual

auto tap0
iface tap0 inet manual
tunctl_user david

# The primary network interface - use DHCP to find our address
auto br0
iface br0 inet dhcp
bridge_ports eth0 tap0

up ifconfig tap0 0.0.0.0 up
up ifconfig eth0 0.0.0.0 up

然后
$> sudo /etc/init.d/networking restart
就可以,并且下次重启之后br0和tap0会自动被激活,ifconfig命令可以看到如下类似信息。
$> ifconfig
br0 Link encap:Ethernet HWaddr 00:21:97:12:e5:9c
inet addr:192.168.1.226 Bcast:192.168.1.255 Mask:255.255.255.0
inet6 addr: fe80::221:97ff:fe12:e59c/64 Scope:Link
UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1
RX packets:145 errors:0 dropped:0 overruns:0 frame:0
TX packets:33 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:0
RX bytes:28802 (28.8 KB) TX bytes:4858 (4.8 KB)

eth0 Link encap:Ethernet HWaddr 00:21:97:12:e5:9c
inet6 addr: fe80::221:97ff:fe12:e59c/64 Scope:Link
UP BROADCAST RUNNING PROMISC MULTICAST MTU:1500 Metric:1
RX packets:3205 errors:0 dropped:0 overruns:0 frame:0
TX packets:965 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:1000
RX bytes:478611 (478.6 KB) TX bytes:146887 (146.8 KB)
Interrupt:17

lo Link encap:Local Loopback
inet addr:127.0.0.1 Mask:255.0.0.0
inet6 addr: ::1/128 Scope:Host
UP LOOPBACK RUNNING MTU:16436 Metric:1
RX packets:183 errors:0 dropped:0 overruns:0 frame:0
TX packets:183 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:0
RX bytes:15553 (15.5 KB) TX bytes:15553 (15.5 KB)

tap0 Link encap:Ethernet HWaddr 22:7c:6a:b3:1d:b8
inet6 addr: fe80::207c:6aff:feb3:1db8/64 Scope:Link
UP BROADCAST RUNNING PROMISC MULTICAST MTU:1500 Metric:1
RX packets:0 errors:0 dropped:0 overruns:0 frame:0
TX packets:0 errors:0 dropped:2294 overruns:0 carrier:0
collisions:0 txqueuelen:500
RX bytes:0 (0.0 B) TX bytes:0 (0.0 B)

这个配置在机器重起后,虽然已经可以上网,但是eth0其实没有分配ip,所以进入ubuntu桌面后,会看到右上角的network disabling的网络链接。
以上是基于virtualbox2.0.4设置的,新版的2.1.0设置应该更简单,不需要设置tap0。
最后设置virtualbox:启动virtualbox,在主界面上选中要使用刚才建立的虚拟网络接口tap0的虚拟机,点“设置”,在弹出的窗口中选“网络”,选中其中一块网卡(通常为“网络适配器 0”),选中“启用网络适配器”,“连接到”后面选“Host Interface”,选中“接入网线”,然后在“主机网络界面名称”中填入刚才建立的虚拟网络接口的名字“tap0”,确定。
Reference: http://download.virtualbox.org/virtualbox/2.0.4/UserManual.pdf
http://forum.ubuntu.org.cn/viewtopic.php?t=63120
http://linux.chinaunix.net/bbs/thread-1029090-1-1.html

No comments :