配置Ubuntu vmware guest虚拟机NAT

我有一个Windows主机,通过vmplayer运行来宾Ubuntu VM。 该虚拟机将被克隆,分布在多个人(运行Windows主机)中并用于进行编程研讨会。 我正在尝试 – 并且到目前为止失败 – 设置网络以满足以下要求:

  1. 客人必须使用互联网
  2. 所有克隆应该具有相同的主机名(让我们说工作室是具体的)
  3. 主机系统必须能够通过该名称访问其各自的guest虚拟机(例如, ping Workshop将ping该主机上运行的guest虚拟机,而不是任何其他克隆)

到目前为止我尝试了什么:

  • “已安装”来宾的NAT网络适配器
  • 试图通过DHCP在/ etc / network / interfaces中连接guest虚拟机:

    auto eth0 iface eth0 inet dhcp hostname Workshop 

就连接到互联网而言,这是有效的。 但是,我无法从主机连接到来宾。 (例如, ping Workshop不起作用;如果我使用ifconfig返回的地址,则它不能从主机工作)。

  • 然后我尝试为guest分配一个静态地址:

     auto eth0 iface eth0 inet static address 172.241.0.101 netmask 255.255.0.0 gateway 172.241.0.100 

(172.241.0.100是VMWare网络VMNet8适配器静态分配给主机的地址 – 这是上面的NAT适配器)。 现在,我可以ping 172.241.0.101并从主机telnet到它。 我也可以ping和telnet从访客到172.241.0.100(主机),但就是这样 – 没有连接到更广泛的网络。 (我也无法通过其主机名访问访客,但这并不重要,因为如果推动我可以直接使用其地址 – 只要它对每个人都一样 – 而不是名称)。

现在,我想我可以使用DHCP的桥接网络连接选项,这将给我一个VM的情况下我需要的(在这种情况下我没有尝试过,但我记得以前做过)。 但是,如果多个VM具有相同的主机名,并且它们的主机连接到同一个网络,则会出现问题,不是吗?

您的解决方案和其他建议将不胜感激。

首先,是的,您将无法使用桥接网络连接,因为所有guest虚拟机都具有相同的主机名,因此您必须使用NAT。

您有部分配置正确,但是,您的问题应该在您分配给guest虚拟机的默认网关中。 使用NAT时,默认网关不是主机的IP,而是连接到NAT网络的“虚拟交换机”的IP。 (主机VMnet8适配器只是连接到网络的另一个设备,允许主机与VM通信。)我们所讨论的这个虚拟交换机获取子网中的.2 IP。 所以在你的情况下, /etc/network/interfaces应该是:

 auto eth0 iface eth0 inet static address 172.241.0.101 netmask 255.255.0.0 gateway 172.241.0.2 

这应该授予您的访客VM访问Internet(通过172.241.0.2 ),并与您的主机( 172.241.0.100 )通信。 所以尝试一下,让我知道它是否有效。

如果它不起作用(极不可能),那么你需要找出虚拟交换机的IP是什么。 您可以做的是让VM通过DHCP获取IP(即将其更改为iface eth0 inet dhcp就像之前一样),然后执行route -n 这应该显示它正在使用的默认网关。 在静态配置中使用该IP。


为了能够使用其主机名Workshop来ping客户VM,这是您可以执行的操作。 您需要在Windows的hosts文件中添加一个条目,该文件位于C:\Windows\System32\drivers\etc\hosts 。 编辑该文件以在最后包含以下行:

但是要在Windows下编辑该文件,您需要在记事本或写字板中以管理员身份打开它…有时它甚至不允许您保存它,因此您需要在某处获取该文件的副本,编辑它,删除.txt扩展名如果有一个,然后返回并替换原来的扩展名,然后“确认”它……哦,我喜欢Linux。 但无论如何,这是你需要添加的行:

 172.241.0.101 Workshop 

完成此操作后,您应该能够从Windows主机成功ping Workshop

当然,为了能够在您的工作室中部署它,您需要在每个Windows主机中编辑hosts文件,除非您还要克隆Windows机器。

提示 :由于您要为访客分配静态IP,请确保所有Windows主机上的VMplayer中的“NAT网络”使用子网172.241.0.0/16 ,因为我认为VMware会随机分配子网到其虚拟网络(VMnet1,2等),因此VMnet8可能没有在另一台Windows主机上使用相同的子网。 如果不是,则需要使用VMware中的虚拟网络编辑器手动为VMnet8提供子网。


编辑

好的。 评论之后,这是您需要做的事情:

  1. 将您的(Windows)主机配置为“在VMnet8适配器上自动获取IP地址”。 它应该获得IP 192.168.186.1
  2. 将您的(Ubuntu)客户机配置为192.168.186.3 - 192.168.186.127范围内的静态IP。 我们使用192.168.186.3 。 另外,将默认网关和DNS服务器配置为192.168.186.2所以你的/etc/network/interfaces应该是:

     auto eth0 iface eth0 inet static address 192.168.186.3 netmask 255.255.255.0 gateway 192.168.186.2 dns-nameservers 192.168.186.2 
  3. 通过从来宾计算机ping 192.168.186.1192.168.186.2来测试本地连接。 您还应该能够从主机ping到guest虚拟机。

  4. 通过ping google.com或浏览互联网来测试来宾计算机中的互联网连接。
  5. 192.168.186.3 Workshop线添加到Windows主机中的hosts文件中。
  6. 从Windows主机测试ping Workshop

如果您想使用来自192.168.186.0/24以外的完全不同的网络/池中的IP,则需要转到VMware中的Edit > Virtual Network Editor ,找到VMnet8,并将其底部的DHCP设置更改为您想要的网络,并相应地更改静态IP(默认网关将始终是第二个可用的IP, xxx2 )。

在此处输入图像描述

我遇到了类似的问题,使用在Windows 7上运行的VMWare Player和Ubuntu来宾。 但我能够从主机连接到访客和访客主机,但问题是我无法从访客连接到互联网。 在阅读@Alaa回答后,我不得不再做一次调整,将DNS服务器名称添加到interfaces文件(dns-nameservers 192.168.150.2),然后一切都排好了。

这是我的配置工作。

主机上的VMWare接口配置:

以太网适配器VMware网络适配器VMnet8 :(客户端)

 Connection-specific DNS Suffix . : Description . . . . . . . . . . . : VMware Virtual Ethernet Adapter for VMnet8 Physical Address. . . . . . . . . : 00-50-56-C0-00-08 DHCP Enabled. . . . . . . . . . . : No Autoconfiguration Enabled . . . . : Yes Link-local IPv6 Address . . . . . : fe80::9c13:cbf2:1dc:259f%42(Preferred) IPv4 Address. . . . . . . . . . . : 192.168.150.1(Preferred) Subnet Mask . . . . . . . . . . . : 255.255.255.0 Default Gateway . . . . . . . . . : DHCPv6 IAID . . . . . . . . . . . : 704663638 DHCPv6 Client DUID. . . . . . . . : 00-01-00-01-19-06-50-32-88-53-2E-7A-D3-8E DNS Servers . . . . . . . . . . . : fec0:0:0:ffff::1%1 fec0:0:0:ffff::2%1 fec0:0:0:ffff::3%1 NetBIOS over Tcpip. . . . . . . . : Enabled 

Guest Ubuntu的界面发生了变化:

 auto eth0 iface eth0 inet static address 192.168.150.10 netmask 255.255.255.0 gateway 192.168.150.2 dns-nameservers 192.168.150.2 

192.168.150.2是VMWare的代理,它将客户流量转发给主机。