<?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>apt-blog.net   无证程序员的PT桑 &#187; 虚拟机</title>
	<atom:link href="http://apt-blog.net/tag/%e8%99%9a%e6%8b%9f%e6%9c%ba/feed" rel="self" type="application/rss+xml" />
	<link>http://apt-blog.net</link>
	<description>潜逃中。</description>
	<lastBuildDate>Fri, 18 May 2012 11:25:05 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.3.2</generator>
		<item>
		<title>配置VirtualBox虚拟机通过NAT方式对外提供Web服务</title>
		<link>http://apt-blog.net/setup_virtualbox_guest_machine_server_to_outer_network_through_nat</link>
		<comments>http://apt-blog.net/setup_virtualbox_guest_machine_server_to_outer_network_through_nat#comments</comments>
		<pubDate>Sun, 22 Feb 2009 08:45:19 +0000</pubDate>
		<dc:creator>PT</dc:creator>
				<category><![CDATA[Unix/Linux]]></category>
		<category><![CDATA[NAT]]></category>
		<category><![CDATA[VirtualBox]]></category>
		<category><![CDATA[Web]]></category>
		<category><![CDATA[虚拟机]]></category>
		<guid isPermaLink="false">http://apt-blog.net/archives/79.html</guid>
		<description><![CDATA[使用虚拟机常常是为了调试服务器，因为在桌面系统安装服务程序，一来容易有安全问题，更重要是容易拖慢系统。 VirtualBox作为一款轻快的开源虚拟机软件，自从被Sun公司收购后，更新相当频繁，功能也逐渐完善，比起VMware动辄几百M的安装文件，VirtualBox几十M的身材而功能丝毫不在VMware之下，而且性能远远高出VMware。 如果把虚拟机作为服务器调试工具，VM默认是使用桥接方式连接虚拟机和主机，安装完后虚拟机直接对主机可见，调试很方便，但是VBox则默认是NAT方式，主机完全访问不了虚拟机。 除了设置VBox为桥接方式外（有点麻烦），另一更加简捷的方式是给虚拟机开端口。这和使用家用路由器映射端口原理是一样的，经过路由器后，局域网内的机器对公网外是不可见的，但是通过添加端口映射，公网就可以访问到内网的机器。 VirtualBox 的User Manual（2.1.4版）在6.4.1介绍了这个方法：使用VBox自带的VBoxManage工具设置端口映射。下面是介绍一个例子： 主机：Ubuntu 8.10虚拟机：Win XP + phpStudy 套件（Apache、MySQL....），Apache在81端口提供服务。 配置后通过主机的8080访问虚拟机：localhost:8080。 在虚拟机关机情况下，在主机终端执行： VBoxManage setextradata "xp" "VBoxInternal/Devices/pcnet/0/LUN#0/Config/web/Protocol" TCP VBoxManage setextradata "xp" "VBoxInternal/Devices/pcnet/0/LUN#0/Config/web/GuestPort" 81 VBoxManage setextradata "xp" "VBoxInternal/Devices/pcnet/0/LUN#0/Config/web/HostPort" 8080 VBoxManage是VirtualBox的配置工具，setextradata只是其中一个方法。"xp"是虚拟机的名称，而"VBoxInternal/Devices/pcnet/0/LUN#0/Config/web/..."是该虚拟机的一个属性，其中/web/是可以任意设置的名称。如果虚拟机用的虚拟网卡不是默认的PCNet，而是用了Intel PRO/1000，则需把路径中的“pcnet”替换为“e1000”，同样地，如果你为虚拟机配置了n个网卡，则要把/0/换成相应的序列。 重新运行虚拟机，在Host的浏览器里敲入http://localhost:8080/phpinfo.php，虚拟机里面的php环境显示出来了。注意此时对主机网络内的其他机器，也可以通过本机的8080端口访问到虚拟机的web服务（当然，前提是主机的防火墙没有拦截该端口）。不过无法为主机小于1024端口进行映射（设了之后虚拟机启动报错），这涉及到Unix/Linux的保护措施，可能在root账户下可用。有兴趣的在Windows平台试试，可能没此限制。 注意在虚拟机运行的时候这样配置是无效的，必须重新启动一次，休眠（save state）了再开也可以。 如果想删除这些映射，同样执行以上的命令，而把最后的命令值留空即可，如： VBoxManage setextradata "xp" "VBoxInternal/Devices/pcnet/0/LUN#0/Config/web/Protocol" VBoxManage工具是VirtualBox自带的配置工具，不论是Linux、Mac还是Windows平台下，都有这个工具，使用方法都是一样的。 apt-blog.net&#160; PT据 VirtualBox User Manual编译2009-2-22]]></description>
			<content:encoded><![CDATA[<p>使用虚拟机常常是为了调试服务器，因为在桌面系统安装服务程序，一来容易有安全问题，更重要是容易拖慢系统。</p>
<p>VirtualBox作为一款轻快的开源虚拟机软件，自从被Sun公司收购后，更新相当频繁，功能也逐渐完善，比起VMware动辄几百M的安装文件，VirtualBox几十M的身材而功能丝毫不在VMware之下，而且性能远远高出VMware。</p>
<p>如果把虚拟机作为服务器调试工具，VM默认是使用桥接方式连接虚拟机和主机，安装完后虚拟机直接对主机可见，调试很方便，但是VBox则默认是NAT方式，主机完全访问不了虚拟机。</p>
<p>除了设置VBox为桥接方式外（有点麻烦），另一更加简捷的方式是给虚拟机开端口。这和使用家用路由器映射端口原理是一样的，经过路由器后，局域网内的机器对公网外是不可见的，但是通过添加端口映射，公网就可以访问到内网的机器。</p>
<p>VirtualBox 的User Manual（2.1.4版）在6.4.1介绍了这个方法：使用VBox自带的VBoxManage工具设置端口映射。下面是介绍一个例子：</p>
<div style="text-align: center;"><img style="max-width: 800px; width: 419px; height: 298px;" src="http://apt-blog.net/wp-content/uploads/2009/02/apache-in-vbox.png" /></div>
<p><span id="more-79"></span><br />主机：Ubuntu 8.10<br />虚拟机：Win XP + phpStudy 套件（Apache、MySQL....），Apache在81端口提供服务。</p>
<p>配置后通过主机的8080访问虚拟机：localhost:8080。</p>
<p>在虚拟机关机情况下，在主机终端执行：</p>
<blockquote><p>VBoxManage setextradata "xp" "VBoxInternal/Devices/pcnet/0/LUN#0/Config/web/Protocol" TCP</p>
<p>VBoxManage setextradata "xp" "VBoxInternal/Devices/pcnet/0/LUN#0/Config/web/GuestPort" 81</p>
<p>VBoxManage setextradata "xp" "VBoxInternal/Devices/pcnet/0/LUN#0/Config/web/HostPort" 8080</p></blockquote>
<p>VBoxManage是VirtualBox的配置工具，setextradata只是其中一个方法。"xp"是虚拟机的名称，而"VBoxInternal/Devices/pcnet/0/LUN#0/Config/web/..."是该虚拟机的一个属性，其中/web/是可以任意设置的名称。如果虚拟机用的虚拟网卡不是默认的PCNet，而是用了Intel PRO/1000，则需把路径中的“pcnet”替换为“e1000”，同样地，如果你为虚拟机配置了n个网卡，则要把/0/换成相应的序列。</p>
<p>重新运行虚拟机，在Host的浏览器里敲入http://localhost:8080/phpinfo.php，虚拟机里面的php环境显示出来了。注意此时对主机网络内的其他机器，也可以通过本机的8080端口访问到虚拟机的web服务（当然，前提是主机的防火墙没有拦截该端口）。不过无法为主机小于1024端口进行映射（设了之后虚拟机启动报错），这涉及到Unix/Linux的保护措施，可能在root账户下可用。有兴趣的在Windows平台试试，可能没此限制。</p>
<p>注意在虚拟机运行的时候这样配置是无效的，必须重新启动一次，休眠（save state）了再开也可以。</p>
<p>如果想删除这些映射，同样执行以上的命令，而把最后的命令值留空即可，如：<br />
<blockquote>VBoxManage setextradata "xp" "VBoxInternal/Devices/pcnet/0/LUN#0/Config/web/Protocol"</p></blockquote>
<p>VBoxManage工具是VirtualBox自带的配置工具，不论是Linux、Mac还是Windows平台下，都有这个工具，使用方法都是一样的。</p>
<div style="text-align: right;"><a target="_blank" href="http://apt-blog.net">apt-blog.net</a>&nbsp; <br />PT据 VirtualBox User Manual编译<br />2009-2-22</div>
]]></content:encoded>
			<wfw:commentRss>http://apt-blog.net/setup_virtualbox_guest_machine_server_to_outer_network_through_nat/feed</wfw:commentRss>
		<slash:comments>6</slash:comments>
		</item>
	</channel>
</rss>

