当前时区为 UTC + 8 小时



发表新帖 回复这个主题  [ 18 篇帖子 ]  前往页数 1, 2  下一页
作者 内容
1 楼 
 文章标题 : [转帖]VirtualBox网络配置详解
帖子发表于 : 2007-03-02 16:22 

注册: 2005-12-25 1:42
帖子: 84
送出感谢: 0 次
接收感谢: 0 次
欢迎转载, 转载请注明作者, 谢谢

下面简单介绍一下Test-bed Environment:

Host : 偶的本本
OS : Arch Linux (Kernel Version 2.6.20) 已安装uml_utilities(包含tunctl工具)和bridge-utils(包含brctl工具)两个包.
Username : leemars
LAN IP : 192.168.1.106/24
Interface : ath0

Guest : 偶的本本上的一个虚拟机
OS : Win2003
Host Interface : tap0

Non-Host : 偶的台式机
OS : WinXP
LAN IP : 192.168.1.120/24

Wireless Router:
LAN IP : 192.168.1.1/24 Gateway
WAN IP : 172.18.60.55/24 绑定MAC
Router开启了DHCP

Network Environment :
Non-Host直接接在无线路由上, Host通过无线网卡与无线路由连接. 无线路由开启了DHCP功能.

===================================

最简单的方案 : NAT(by VirtualBox)

Host :
直接使用VirtualBox提供的NAT功能.

Guest :
网卡设置为使用DHCP.

Guest -> WAN :
由VirtualBox的NAT提供WAN的访问服务.

Guest -> Host :
需要注意的是, 如果直接访问Guest拿到的网关IP, 会发现这个IP似乎是Host. 不过事实上不能直接访问网关IP来访问Host. 因为这个IP是由VirtualBox负责的, 只实现了NAT的功能, 其他的一些功能并不能正常运行(如FTP). 如果要访问Host, 应该访问Host的真实IP.

Host -> Guest :
不可访问. 虽然VirtualBox的NAT功能中包括了Port Forwarding的功能, 但截至到1.3.6 Snapshot, 这个功能仍没有出现在GUI中. 不过在OSE Version中已经可以使用这个功能. 通过Port Forwarding可以实现部分的向内访问.

VirtualBox NAT没有什么玩法了. 下面的方案都是使用VirtualBox的Host Interface功能.

-----------------------------------------------------------------------------
方案一 : NAT(by Linux) + Route

Host :
#echo 1 > /proc/sys/net/ipv4/ip_forward #打开转发功能
#iptables -t nat -A POSTROUTING -j MASQUERADE #利用iptables完成NAT功能

#chmod 0666 /dev/net/tun #设置访问权限
#tunctl -t tap0 -u leemars #建立一个tap设备, 名字为tap0, 所有者为leemars
#ifconfig tap0 up #激活tap0
#ifconfig tap0 10.10.10.1 netmask 255.255.255.0 #为tap0指定IP和网段, 为10.10.10.1/24.

Guest :
网卡设置如下:
IP : 10.10.10.10
Netmask : 255.255.255.0
Gateway : 10.10.10.1

Guest -> WAN :
由Linux的iptables完成NAT功能, 提供WAN的访问服务.

Guest -> Host :
10.10.10.1是真实的Host. Guest对Host的任何访问都可以通过访问10.10.10.1来完成.

Host -> Guest :
10.10.10.10是真实的Guest. Host对Guest的任何访问都可以通过访问10.10.10.10来完成.

Non-Host -> Guest :
因为Guest是在Host的NAT之后的一个私有子网中, 所以直接访问是不行的. 不过可以通过iptables来完成Port Forwarding, 实现部分的向内访问.

-----------------------------------------------------------------------------

方案二 : Transparent Bridge (Layer 2)

在我的机器上测试下来的结果很遗憾, 无线网卡似乎不能配合Bridge工作. 建好Bridge之后, Guest只能访问Host, 连网关都访问不到. 所以我改用有线网卡来进行测试, 有线网卡为eth0, IP地址同ath0.

Host :

#chmod 0666 /dev/net/tun #设置访问权限
#tunctl -t tap0 -u leemars #建立一个tap设备, 名字为tap0, 所有者为leemars

#ifconfig eth0 0.0.0.0 promisc #使eth0进入promiscuous模式
#ifconfig tap0 0.0.0.0 promisc #使tap0进入promiscuous模式
#brctl addbr br0 #增加一个网桥
#brctl addif br0 eth0 #将eth0加入网桥
#ifconfig eth0 up #激活eth0
#dhclient br0 #为br0设置IP地址
#brctl addif br0 tap0 #将tap0加入网桥
#ifconfig tap0 up #激活tap0

Guest :
网卡设置为DHCP. 或者在设置为Host的Subnet中的一个IP地址, 如下例:
IP : 192.168.1.201
Netmask : 255.255.255.0
Gateway : 192.168.1.1

Guest -> WAN :
由网关提供WAN的访问服务.

Guest -> Host :
直接访问Host的IP地址即可.

Host -> Guest :
直接访问Guest的IP地址即可.

Non-Host -> Guest :
直接访问Guest的IP地址即可.
(由于建立了eth0和tap0的Bridge, Non-Host的ARP包被eth0接收到后, 被Brideg转发至tap0上, 数据链路得以建立.)

-----------------------------------------------------------------------------

方案三 : Transparent IP (Layer 3) proxy ARP bridge (by parprouted)

Host :
#echo 1 > /proc/sys/net/ipv4/ip_forward #打开转发功能

#chmod 0666 /dev/net/tun #设置访问权限
#tunctl -t tap0 -u leemars #建立一个tap设备, 名字为tap0, 所有者为leemars
#ip link set tap0 up #激活tap0
#ip addr add 169.1.1.1/32 dev tap0 #为tap0任意指定一个私有地址
#parprouted [-d] ath0 tap0 #启动parprouted监听ath0和tap0. -d参数为Debug模式

Guest :
网卡设置如下:
IP : 192.168.1.201
Netmask : 255.255.255.0
Gateway : 192.168.1.1

Guest -> WAN :
由网关来提供WAN的访问服务.

Guest -> Host :
直接访问Host的IP地址即可.

Host -> Guest :
直接访问Guest的IP地址即可.

Non-Host -> Guest :
直接访问Guest的IP地址即可.

Troubleshooting:
这个parprouted软件有时会出现无法连通的情况. 这时可以尝试更换Guest的IP地址来解决问题. 这个貌似是parprouted软件的BUG.

-----------------------------------------------------------------------------

方案四 : ARP Proxy(by Linux) + Route

Host :
#echo 1 > /proc/sys/net/ipv4/ip_forward #打开转发功能

#chmod 0666 /dev/net/tun #设置访问权限
#tunctl -t tap0 -u leemars #建立一个tap设备, 名字为tap0, 所有者为leemars
#ip link set tap0 up #激活tap0
#route add -host 192.168.1.201 dev tap0 #增加一个路由, 将192.168.1.201定向到tap0
#echo 1 > /proc/sys/net/ipv4/conf/ath0/proxy_arp #打开ath0上的ARP Proxy
#echo 1 > /proc/sys/net/ipv4/conf/tap0/proxy_arp #打开tap0上的ARP Proxy

Guest :
网卡设置如下:
IP : 192.168.1.201
Netmask : 255.255.255.0
Gateway : 192.168.1.1

Guest -> WAN :
由网关来提供WAN的访问服务.

Guest -> Host :
直接访问Host的IP地址即可.

Host -> Guest :
直接访问Guest的IP地址即可.

Non-Host -> Guest :
直接访问Guest的IP地址即可.

作者:leemars(linuxsir论坛)

原文位于:http://www.linuxsir.org/bbs/showthread.php?t=293771


页首
 用户资料  
 
2 楼 
 文章标题 :
帖子发表于 : 2007-03-02 16:38 
头像

注册: 2005-10-16 13:24
帖子: 958
地址: 四川成都
送出感谢: 2
接收感谢: 0 次
顶哦,这么好的帖子


_________________
Thank you Ubuntu Team!!!!
I still can't belive this is free...


页首
 用户资料  
 
3 楼 
 文章标题 :
帖子发表于 : 2007-03-02 17:26 
头像

注册: 2005-03-30 0:27
帖子: 3294
送出感谢: 0 次
接收感谢: 2
NAT 的话, guest 可以试着访问 10.0.2.4 来访问 host


_________________
跃过无数的时间断层,只为了在


页首
 用户资料  
 
4 楼 
 文章标题 :
帖子发表于 : 2007-03-03 7:18 
头像

注册: 2006-12-05 21:51
帖子: 475
地址: Vienna, Austria
送出感谢: 0 次
接收感谢: 0 次
太厉害的帖子了,正是我想要的,谢谢lz了!


_________________
Jimmy.Zhou

Acer Extensa 5620G
T5250 + HD 2400 XT + 2G DDR2 +160G SATA + iwp 3945
Ubuntu Intrepid Ibex + Firefox 3


页首
 用户资料  
 
5 楼 
 文章标题 : 原文地址
帖子发表于 : 2007-03-03 21:18 

注册: 2007-01-21 22:01
帖子: 76
送出感谢: 0 次
接收感谢: 0 次
原文地址是:http://www.linuxsir.org/bbs/showthread.php?t=293771
作者应该写明转载地址。
另外我也发现不能对无线网卡用bridge方式。而前面兄弟说在NAT方式下用guest得到的网关地址来访问host的方法,我实际测试行不通。


页首
 用户资料  
 
6 楼 
 文章标题 :
帖子发表于 : 2007-03-04 12:22 
头像

注册: 2006-12-14 20:33
帖子: 834
送出感谢: 0 次
接收感谢: 0 次
Good!


页首
 用户资料  
 
7 楼 
 文章标题 :
帖子发表于 : 2007-03-04 12:22 
头像

注册: 2006-12-23 13:46
帖子: 9203
地址: Azores Islands
送出感谢: 0 次
接收感谢: 1
关注下 :roll:


_________________
no security measure is worth anything if an attacker has physical access to the machine


页首
 用户资料  
 
8 楼 
 文章标题 :
帖子发表于 : 2007-03-05 17:39 

注册: 2006-05-25 7:55
帖子: 21
送出感谢: 0 次
接收感谢: 0 次
有人在ubuntu下根据这个成功过么?
我用方法一,第一步
引用:
#echo 1 > /proc/sys/net/ipv4/ip_forward #打开转发功能
执行就出问题了.
我用sudo,结果提示permissition denied.
查看文件权限root有写的权限的,于是我用sudo vi 直接编辑ip-forward文件, 但是没有办法保存


页首
 用户资料  
 
9 楼 
 文章标题 :
帖子发表于 : 2007-03-06 14:04 

注册: 2006-03-17 13:40
帖子: 147
送出感谢: 0 次
接收感谢: 0 次
一直以为Bridge有问题呢。原来是无线网卡才不能用Bridge,谢谢lz


页首
 用户资料  
 
10 楼 
 文章标题 :
帖子发表于 : 2007-07-04 1:23 

注册: 2007-06-21 22:25
帖子: 220
送出感谢: 0 次
接收感谢: 4
failsafe 写道:
有人在ubuntu下根据这个成功过么?
我用方法一,第一步
引用:
#echo 1 > /proc/sys/net/ipv4/ip_forward #打开转发功能
执行就出问题了.
我用sudo,结果提示permissition denied.
查看文件权限root有写的权限的,于是我用sudo vi 直接编辑ip-forward文件, 但是没有办法保存

先执行“sudo -s”。


页首
 用户资料  
 
11 楼 
 文章标题 :
帖子发表于 : 2007-07-29 12:06 

注册: 2007-06-23 2:31
帖子: 12
送出感谢: 0 次
接收感谢: 0 次
代码:
$ sudo -s
# echo 1 > /proc/sys/net/ipv4/ip_forward
# chmod 0666 /dev/net/tun
# tunctl -t tap0 -u hu
Set 'tap0' persistent and owned by uid 1000
# ip link set tap0 up
# route add -host 192.168.10.11 dev tap0
SIOCADDRT: No such device
#

为什么找不到硬件


_________________
ShenZhen PHPer
compaq EvoN600c 1 . 2G/512M/120G/ATI32M/DVD
Ubuntu7.10+Virtualbox+Deepin XP6.5


页首
 用户资料  
 
12 楼 
 文章标题 :
帖子发表于 : 2008-08-31 11:39 
头像

注册: 2008-07-21 9:44
帖子: 2371
地址: 深圳
送出感谢: 0 次
接收感谢: 0 次
留个记号


页首
 用户资料  
 
13 楼 
 文章标题 : Re: [转帖]VirtualBox网络配置详解
帖子发表于 : 2008-10-09 23:24 

注册: 2008-09-05 3:51
帖子: 19
送出感谢: 0 次
接收感谢: 0 次
好专业 ,看不大懂 呵呵 学习学习


页首
 用户资料  
 
14 楼 
 文章标题 : Re: [转帖]VirtualBox网络配置详解
帖子发表于 : 2008-11-04 22:12 

注册: 2008-11-04 22:11
帖子: 21
送出感谢: 0 次
接收感谢: 1
怎么恢复啊!!


页首
 用户资料  
 
15 楼 
 文章标题 : Re: [转帖]VirtualBox网络配置详解
帖子发表于 : 2008-11-09 16:06 

注册: 2007-07-08 19:21
帖子: 145
送出感谢: 0 次
接收感谢: 0 次
mark


页首
 用户资料  
 
显示帖子 :  排序  
发表新帖 回复这个主题  [ 18 篇帖子 ]  前往页数 1, 2  下一页

当前时区为 UTC + 8 小时


在线用户

正在浏览此版面的用户:没有注册用户 和 2 位游客


不能 在这个版面发表主题
不能 在这个版面回复主题
不能 在这个版面编辑帖子
不能 在这个版面删除帖子
不能 在这个版面提交附件

前往 :  
本站点为公益性站点,用于推广开源自由软件,由 DiaHosting VPSBudgetVM VPS 提供服务。
我们认为:软件应可免费取得,软件工具在各种语言环境下皆可使用,且不会有任何功能上的差异;
人们应有定制和修改软件的自由,且方式不受限制,只要他们自认为合适。

Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group
简体中文语系由 王笑宇 翻译