<?xml version="1.0" encoding="utf-8" standalone="yes"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:content="http://purl.org/rss/1.0/modules/content/">
  <channel>
    <title>Virtualization on TripleZ&#39;s Blog</title>
    <link>https://blog.triplez.cn/tags/virtualization/</link>
    <description>Recent content in Virtualization on TripleZ&#39;s Blog</description>
    <generator>Hugo -- gohugo.io</generator>
    <language>zh-cn</language>
    <lastBuildDate>Mon, 13 Nov 2017 14:45:02 +0000</lastBuildDate><atom:link href="https://blog.triplez.cn/tags/virtualization/index.xml" rel="self" type="application/rss+xml" />
    <item>
      <title>虚拟机软件中 NAT 网络模式的差别</title>
      <link>https://blog.triplez.cn/posts/the-network-difference-between-vm-applications/</link>
      <pubDate>Mon, 13 Nov 2017 14:45:02 +0000</pubDate>
      
      <guid>https://blog.triplez.cn/posts/the-network-difference-between-vm-applications/</guid>
      <description>&lt;p&gt;VMware Workstation 和 VirtualBox 在 NAT 网络的模式上是有差异的，写篇 Blog 记录之。&lt;/p&gt;</description>
      <content:encoded><![CDATA[<p>VMware Workstation 和 VirtualBox 在 NAT 网络的模式上是有差异的，写篇 Blog 记录之。</p>
<h2 id="preface">Preface</h2>
<p>最近要做云计算的实验，配置一个  <code>Hadoop</code>  并运行一个  <code>MapReduce</code> 任务。在帮助同学配置虚拟机网络的时候，我最先使用的方法是对每个节点都新配置一个 <code>Host-only</code> 自定义网段的网卡，并对每台 VM<sup id="fnref:1"><a href="#fn:1" class="footnote-ref" role="doc-noteref">1</a></sup> 都分配唯一的静态地址（因为需要加入 <code>hosts</code> 文件）。这样，就不存在因为 <code>DHCP</code> 而产生地址变动的问题了。</p>
<p>本以为这样就配好了，然而同学后来跟我说，其实不用 <code>Host-only</code> ，只用 <code>NAT</code> 也能够互相连接。我就开始感到奇怪了，怕不是之前我一直理解错了？于是就做了一些小实验，最后发现其实是虚拟机软件的差异，也就有了这篇 <code>blog</code> 。</p>
<h2 id="vmware-workstation">VMware Workstation</h2>
<p>同学用的虚拟机软件就是这个 <code>VMware Workstation</code> 。这款软件因为要收费也不开源，对倡导开源精神的我来说，自然不会选择使用了。但是不得不承认，其出色的性能的确赢得了用户市场的青睐。不然也不会大家都费尽心思去找这款软件的破解版来使用。在个人使用方面，在其管理虚拟资源以及使用的体验上，的确要比其他虚拟机软件更胜一筹，赢得市场也就不足为奇了。</p>
<p><code>VMware Workstation</code> 的网络有三种：<code>NAT</code>, <code>Host-only</code> 和 <code>Bridge</code>。接下来我会分别介绍这三种网络之间的区别。</p>
<h3 id="nat">NAT</h3>
<p>当在 <code>Windows</code> 上安装 <code>VMware Workstation</code> 之后，会发现在网络适配器中多出了一个 <code>VMnet8</code> 的连接，这个连接就是 <code>VMware</code> 的默认 <code>NAT</code> 连接。这个 <code>NAT</code> 的连接方式和平常理解上的 <code>NAT</code> 的工作原理有点差异，<code>VMware</code> 是建立了一个路由器，<code>WAN</code> 连着宿主机的网络，因此可以访问到 <code>Internet</code> <del>如果你的宿主机可以的话</del>，<code>LAN</code> 连接不同的 VM。而 VM 的网络是由 <code>VMware</code> 的一个 <code>DHCP</code> 服务器分配的，也就是说 <code>VMware</code> 内部还拥有一个局域网，该网络连接着软件所管理的所有 VM。</p>
<p>所以，在 <code>VMware</code> 的 <code>NAT</code> 网络模式下：</p>
<ul>
<li>宿主机<strong>能够</strong>访问到 VM；</li>
<li>VM <strong>能够</strong>访问到宿主机；</li>
<li>VM 互相<strong>能够</strong>直接访问；</li>
<li>VM <strong>能够</strong>访问到宿主机可访问的外部网络资源，如 <code>Internet</code>。</li>
</ul>
<h3 id="host-only">Host-only</h3>
<p>这种模式也叫做仅主机网络，与 <code>VMware</code> 与中 <code>NAT</code> 的区别在于 VM 不能访问到宿主机可访问到的外部网络资源，因此在这种模式下，VM 无法连接到 <code>Internet</code> ，作用一般是在内网环境中增加安全性。</p>
<p>在 <code>VMware</code> 的 <code>Host-only</code> 网络模式下：</p>
<ul>
<li>宿主机<strong>能够</strong>访问到 VM；</li>
<li>VM <strong>能够</strong>访问到宿主机；</li>
<li>VM 互相<strong>能够</strong>直接访问；</li>
<li>VM <strong>不能</strong>访问到宿主机可访问的外部网络资源，如 <code>Internet</code>。</li>
</ul>
<h3 id="bridge">Bridge</h3>
<p>桥接模式，桥接网络之后虚拟机的虚拟网卡在网络拓扑结构中将与宿主机物理网卡地位等同，这样只要 VM 的网卡能够被正确配置，VM 可以直接访问到外部网络资源。</p>
<h2 id="virtualbox">VirtualBox</h2>
<p>我自己一直都使用的是免费开源的 <code>VirtualBox</code> , 然而 <code>VirtualBox</code> 的 <code>NAT</code> 模式和 <code>VMware</code> 的工作原理并不一样，因此也就产生了前面的闹剧。</p>
<h3 id="nat-1">NAT</h3>
<p>在 <code>VirtualBox</code> 中，<code>NAT</code> 网络模式是直接 &ldquo;复制&rdquo; 宿主机的网络，也就是传统 <code>NAT</code> 的连接方式。因此 VM 所获得的 IP 应该是宿主机的网络 IP，而不是一个内部局域网 IP。这是这两个软件在网络上区别最大的地方。</p>
<p>因此，在 <code>VirtualBox</code> 的 <code>NAT</code> 网络模式下：</p>
<ul>
<li>
<p>宿主机<strong>不能</strong>访问到 VM；</p>
</li>
<li>
<p>VM <strong>不能</strong>访问到宿主机；</p>
</li>
<li>
<p>VM 之间<strong>不能</strong>相互访问；</p>
</li>
<li>
<p>VM <strong>能够</strong>访问到宿主机可访问的外部网络资源，如 <code>Internet</code>。</p>
</li>
</ul>
<h3 id="host-only-1">Host-only</h3>
<p>这种模式也叫做仅主机网络，在这种模式下，VM 无法连接到 <code>Internet</code> ，但是可以和宿主机互通。</p>
<p>在 <code>VirtualBox</code> 的 <code>NAT</code> 网络模式下：</p>
<ul>
<li>
<p>宿主机<strong>能够</strong>访问到 VM；</p>
</li>
<li>
<p>VM <strong>能够</strong>访问到宿主机；</p>
</li>
<li>
<p>VM 之间<strong>能够</strong>相互访问（需要连接到相同子网中）；</p>
</li>
<li>
<p>VM <strong>不能</strong>访问到宿主机可访问的外部网络资源，如 <code>Internet</code>。</p>
</li>
</ul>
<h3 id="bridge-1">Bridge</h3>
<p>基本与 <code>VMware</code> 的 <code>Bridge</code> 模式相同。</p>
<p>诶，看来之前自己还是 <em>Too young too simple, sometimes naive</em> 啊。</p>
<div class="footnotes" role="doc-endnotes">
<hr>
<ol>
<li id="fn:1">
<p>虚拟机 (Virtual Machine).&#160;<a href="#fnref:1" class="footnote-backref" role="doc-backlink">&#x21a9;&#xfe0e;</a></p>
</li>
</ol>
</div>]]></content:encoded>
    </item>
    
  </channel>
</rss>
