<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>雾松萌石 &#187; Bridge Network</title>
	<atom:link href="http://mmlst.com/tag/bridge-network/feed/" rel="self" type="application/rss+xml" />
	<link>http://mmlst.com</link>
	<description>分享知识</description>
	<lastBuildDate>Fri, 07 Aug 2009 01:14:10 +0000</lastBuildDate>
	<generator>http://wordpress.org/?v=2.8.6</generator>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
			<item>
		<title>Ubuntu下设置VirtualBox的Bridge Network（桥接模式）</title>
		<link>http://mmlst.com/2008/07/06/ubuntu%e4%b8%8b%e8%ae%be%e7%bd%aevirtualbox%e7%9a%84bridge-network%ef%bc%88%e6%a1%a5%e6%8e%a5%e6%a8%a1%e5%bc%8f%ef%bc%89/</link>
		<comments>http://mmlst.com/2008/07/06/ubuntu%e4%b8%8b%e8%ae%be%e7%bd%aevirtualbox%e7%9a%84bridge-network%ef%bc%88%e6%a1%a5%e6%8e%a5%e6%a8%a1%e5%bc%8f%ef%bc%89/#comments</comments>
		<pubDate>Sun, 06 Jul 2008 12:25:11 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[LINUX学习笔记]]></category>
		<category><![CDATA[Ubuntu]]></category>
		<category><![CDATA[Bridge Network]]></category>
		<category><![CDATA[VirtualBox]]></category>
		<category><![CDATA[桥接模式]]></category>

		<guid isPermaLink="false">http://mmlst.com/?p=25</guid>
		<description><![CDATA[****************************************************************************
系统: Ubuntu 8.04
问题: VirtualBox创建的虚拟机WINXP，使用Bridge Networking，代替NAT
*******************************************************************************
 
因为把一个旧电脑当作一个服务器，并且晚上用来下载东西。系统是Ubuntu，用VirtualBox创建了一个虚拟系统XP，在XP中安装EMULE来下载。结果发现EMULE是LOWID。进而开始研究为什么会是这样，才会开始鼓捣虚拟机的Bridge Networking(桥接模式)。
 
系统本身是开启了UPnP端口的，EMULE使用的端口也都开着。路由器中也开放了相应的端口 打开了UPnP和DMZ为相应电脑的IP地址比如说是192.168.0.115。
后来才想到，路由器指向的IP是Ubuntu系统的IP，而不是虚拟系统的。 因为在虚拟系统中，VirtualBox默认使用的是NAT，所以默认IP是10.0.2.*，子网掩码是255.255.255.0，网关是10.0.2.2。因为路由根本没指向虚拟系统XP，所以EMULE根本就无法得到HIGHID。
 
NAT是VirtualBox默认的Host OS 和Guest OS连接方式。这种方式下，Guest OS是Host OS的内网，它们之间不是对等的，IP地址也不是在一个区域。 但是是一个比较简单方便的方式。但是路由器中不能进行虚拟机的端口映射。你不能输入10.0.2.*进行指向，因为路由中已经设好了区域为192.168.0.*。
Bridge Network方式下，Guest OS的IP和Host OS的IP属于同一个区域。他们之间是对等。相当于这个区域中的两个独立的电脑。路由器因而也能进行虚拟机的端口映射。
VirtualBox没有像VMWare那样可以自由选择Bridge Network方式。所以需要手动来设置。
 
 
设置方式有两种：
一种是通过DHCP，但是这种IP地址不是固定的。
第二种是手动设置静态IP地址。本文是采取这种方式。
 
首先安装所需要的工具 uml-utilities和bridge-utils:
sudo apt-get install uml-utilities bridge-utils
 
修改/etc/udev/rules.d/20-names.rulesx：
sudo cp /etc/udev/rules.d/20-names.rules /etc/udev/rules.d/20-names.rules.backup
sudo gedit /etc/udev/rules.d/20-names.rules
把最后一行
KERNEL==”tun”， NAME=”net/%k”
改为：
KERNEL==”tun”， NAME=”net/%k”， GROUP=”vboxusers”， MODE=”0660”
然后保存。
(注：不知道为什么修改这个文件，Ubuntu社区文章中有这一段，也许是为了把tun加入到Group vboxusers中吧。我下面还有一个地方是把用户加入到Group vml-net中，有的人这样做，有的人没有，我没有试过不加会是什么样)
 
 
在Host OS中创建一个vboxbridgedrun文件，来建立一个Bridge和tap device，IP是由bridge来取得，而不是ethX或tapX。
(注：下面的这些都可以在终端中用命令方式打出来，但是问题在于，电脑重新启动后，就不再有效。所以建立一个启动文件，让它自动随电脑启动)
sudo gedit /etc/init.d/vboxbridgedrun
内容如下：
&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;
# VirtualBox Bridging
 
# Create a tap device with [...]]]></description>
		<wfw:commentRss>http://mmlst.com/2008/07/06/ubuntu%e4%b8%8b%e8%ae%be%e7%bd%aevirtualbox%e7%9a%84bridge-network%ef%bc%88%e6%a1%a5%e6%8e%a5%e6%a8%a1%e5%bc%8f%ef%bc%89/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>
<html>
<head>
<title></title>
<meta name="verify-v1" content="g9TyLKV+Qw/waEbbIIFWqxWkvuCs7piVz1GOM0RuSuM=" />
</head>
<body>
<script type="text/javascript">
var gaJsHost = (("https:" == document.location.protocol) ? "https://ssl." : "http://www.");
document.write(unescape("%3Cscript src='" + gaJsHost + "google-analytics.com/ga.js' type='text/javascript'%3E%3C/script%3E"));
</script>
<script type="text/javascript">
var pageTracker = _gat._getTracker("UA-5977749-1");
pageTracker._initData();
pageTracker._trackPageview();
</script>
</body>
</html>