我在 VMWare Fusion 3.0.0 中设置了一个 Ubuntu Server 9.04 映像,使用 NAT 选项进行来宾网络连接。从 Mac 主机,我可以使用其 IP 地址顺利 ssh 到 Linux 来宾,但为了方便起见,我希望能够通过主机名引用它。即:
mac-host:~ ssh [email protected]
几年前,我使用 Parallels 进行了类似的设置,但我不记得它是如何设置的。它可能“刚好起作用”。
关于如何使其工作,有什么建议吗?
答案1
编辑我发布的第一个版本的说明与 VMware 在 vmnet8 上设置的名称服务器和网关发生冲突。此版本已更正此问题。
软件版本:
- MAC OS X 版本 10.6.3
- VMware Fusion 版本 3.1.0 (261058)
- Ubuntu 10.04 LTS
我做了什么:
在创建虚拟机期间,将网络设置为 NAT。
在 Linux Guest 上:运行 ifconfig 获取正在使用的硬件地址
HWaddr
、广播地址Bcast
、IPv4 互联网地址inet addr
和掩码Mask
。UbuntuGuest$ifconfig eth0 Link encap:Ethernet HWaddr 00:0c:29:53:bf:e5 inet addr:192.168.213.129 Bcast:192.168.213.255 Mask:255.255.255.0 <snip>
在 Linux Guest 上:查找名称服务器信息
UbuntuGuest$cat /etc/resolv.conf nameserver 192.168.213.2 domain localdomain search localdomain
在 Linux Guest 上:查找网关地址:(在以 0.0.0.0 作为目标的行的网关列中列出。)
UbuntuGuest$route -n Kernel IP routing table Destination Gateway Genmask Flags Metric Ref Use Iface 192.168.213.0 0.0.0.0 255.255.255.0 U 0 0 0 eth0 0.0.0.0 192.168.213.2 0.0.0.0 UG 100 0 0 eth0
在 OS X 主机上:编辑(NAT 虚拟交换机)
dhcpd.conf
文件,为 Linux 客户机分配静态 IP 地址。(在第四行使用您选择的编辑器)vmnet8
OSXHost$cd /Library/Application\ Support/VMware\ Fusion/vmnet8/ OSXHost$sudo chmod u+w dhcpd.conf OSXHost$sudo cp dhcpd.conf dhcpd.conf.bak.20100619 OSXHost$sudo emacs dhcpd.conf
在 OS X 主机上:该文件一开始看起来像这样:
# Configuration file for ISC 2.0 vmnet-dhcpd operating on vmnet8. # # This file was automatically generated by the VMware configuration program. # See Instructions below if you want to modify it. # # We set domain-name-servers to make some DHCP clients happy # (dhclient as configured in SuSE, TurboLinux, etc.). # We also supply a domain name to make pump (Red Hat 6.x) happy. # ###### VMNET DHCP Configuration. Start of "DO NOT MODIFY SECTION" ##### # Modification Instructions: This section of the configuration file contains # information generated by the configuration program. Do not modify this # section. # You are free to modify everything else. Also, this section must start # on a new line # This file will get backed up with a different name in the same directory # if this section is edited and you try to configure DHCP again. # Written at: 12/26/2009 10:35:10 allow unknown-clients; default-lease-time 1800; # default is 30 minutes max-lease-time 7200; # default is 2 hours subnet 192.168.213.0 netmask 255.255.255.0 { range 192.168.213.128 192.168.213.254; option broadcast-address 192.168.213.255; option domain-name-servers 192.168.213.2; option domain-name localdomain; default-lease-time 1800; # default is 30 minutes max-lease-time 7200; # default is 2 hours option routers 192.168.213.2; } host vmnet8 { hardware ethernet 00:50:56:C0:00:08; fixed-address 192.168.213.1; option domain-name-servers 0.0.0.0; option domain-name ""; option routers 0.0.0.0; } ####### VMNET DHCP Configuration. End of "DO NOT MODIFY SECTION" #######
注意事项:
此
subnet
部分应与在 Linux Guest 上收集的 IP 信息相匹配。inet addr
将在 之内range
,netmask
将匹配Mask
,option broadcast-address
将匹配Bcast
,option domain-name-servers
并将option domain-name
匹配使用 收集的信息,cat /etc/resolv.conf
并将option routers
匹配Gateway
从route -n
命令中收集的信息。我们想要分配一个静态 IP 地址,这样我们就可以向 OS X Host 的
hosts
文件添加一个条目。该地址必须在subnet
定义的范围内。无法分配的地址是range
子网部分、广播地址、用于fixed-address
、host vmnet8
DNS 服务器和网关内的地址。我认为不允许使用等于子网的地址。在此示例中,子网是192.168.213.0
因此可用的地址来自192.168.213.1 to 192.168.213.255
较少192.168.213.128 to 192.168.213.245
(范围)较少192.168.213.255
(广播)较少192.168.213.1
(主机 vmnet8)较少192.168.213.2
(网关和 DNS 服务器)。网络是地址192.168.213.3 to 192.168.213.127
可用的。
在OS X主机上:在下面创建一个新
host
条目 请勿修改部分。此条目将为 Linux Guest 分配一个静态 IP。hardware ethernet
需要匹配Linux Guest 上的。为 选择一个可用的静态地址HWaddr
。,,并且需要匹配部分中给出的选项。(我们已经将其与在 Linux Guest 上收集的信息进行了匹配。)在此示例中,主机条目为:ifconfig
fixed-address
option broadcast-address
option domain-name-servers
option domain-name
option routers
subnet
dhcpd.conf
####### VMNET DHCP Configuration. End of "DO NOT MODIFY SECTION" ####### host serpents-hold { hardware ethernet 00:0c:29:53:bf:e5; fixed-address 192.168.213.3; option broadcast-address 192.168.213.255; option domain-name-servers 192.168.213.2; option domain-name localdomain; option routers 192.168.213.2; }
在 OS X 主机上保存
dhcpd.conf
并关闭编辑器。在 OS X 主机和所有来宾上:关闭所有虚拟机和 VMware。
在 OS X 主机上:重新启动 VMware 服务:
OSXHost$cd /Library/Application\ Support/VMware\ Fusion/ OSXHost$sudo ./boot.sh --restart
在 OS X 主机上:查看
Activity Monitor
并确保两个进程都vmnet-dhcpd
在运行。(一个用于vmnet8
NAT 网络,另一个用于仅主机网络。)如果您没有看到这两个进程,则vmnet8/dhcpd.conf
OS X 主机上的文件可能有问题。修复该问题并重复重新启动 VMware 服务。在 OS X 主机上:启动 VMware 和 Linux Guest VM。
在 Linux Guest 上在来宾虚拟机上检查设置是否符合预期:
UbuntuGuest$ifconfig eth0 Link encap:Ethernet HWaddr 00:0c:29:53:bf:e5 inet addr:192.168.213.3 Bcast:192.168.213.255 Mask:255.255.255.0 inet6 addr: fe80::20c:29ff:fe53:bfe5/64 Scope:Link UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1 RX packets:103 errors:0 dropped:0 overruns:0 frame:0 TX packets:71 errors:0 dropped:0 overruns:0 carrier:0 collisions:0 txqueuelen:1000 RX bytes:10961 (10.9 KB) TX bytes:9637 (9.6 KB) lo <snip> UbuntuGuest$cat /etc/resolv.conf nameserver 192.168.213.2 domain localdomain search localdomain UbuntuGuest$route -n Kernel IP routing table Destination Gateway Genmask Flags Metric Ref Use Iface 192.168.213.0 0.0.0.0 255.255.255.0 U 0 0 0 eth0 0.0.0.0 192.168.213.2 0.0.0.0 UG 100 0 0 eth0 UbuntuGuest$
在 Linux Guest 上:检查外界是否可以访问:
UbuntuGuest$ping google.com PING google.com (72.14.213.104) 56(84) bytes of data. 64 bytes from pv-in-f104.1e100.net (72.14.213.104): icmp_seq=1 ttl=128 time=47.6 ms 64 bytes from 2.bp.blogspot.com (72.14.213.104): icmp_seq=2 ttl=128 time=48.7 ms 64 bytes from 2.bp.blogspot.com (72.14.213.104): icmp_seq=3 ttl=128 time=48.2 ms ^C --- google.com ping statistics --- 4 packets transmitted, 3 received, 25% packet loss, time 3093ms rtt min/avg/max/mdev = 47.687/48.223/48.714/0.491 ms UbuntuGuest$
在 OS X 主机上:将主机名映射添加到文件
hosts
:OSXHost$cd /etc OSXHost$sudo emacs hosts
使用 Linux Guest 的主机名和上面分配的 IP 地址在 hosts 文件末尾添加一行。
192.168.213.2 serpents-hold
在 OS X 主机上:保存文件并退出 emacs。
在 OS X 主机上:测试是否可以通过主机名访问 Linux Guest:
OSXHost$ping serpents-hold PING serpents-hold (192.168.213.3): 56 data bytes 64 bytes from 192.168.213.3: icmp_seq=0 ttl=64 time=0.169 ms 64 bytes from 192.168.213.3: icmp_seq=1 ttl=64 time=0.244 ms ^C --- serpents-hold ping statistics --- 2 packets transmitted, 2 packets received, 0.0% packet loss round-trip min/avg/max/stddev = 0.169/0.207/0.244/0.037 ms OSXHost$
答案2
对原始问题的一步回答是运行以下命令:
$ sudo apt-get 安装 libnss-mdns
安装此软件包后,该功能将立即启用。然后,您将能够访问您的虚拟机your-vm-hostname.local
。这仅在虚拟机的本地网络中有效,具体取决于您在虚拟化软件中如何配置它。
这项功能被 Apple 称为 Bonjour,其他公司则称为 Zeroconf。它内置于 OS X 和 iOS 中。在 Windows 上获取该功能最简单的方法是安装 iTunes for Windows。
答案3
您可以使用 Avahi 配置 zeroconf,这应该允许客户端无需 DNS 注册即可在网络上识别自己。
答案4
如果您使用 NAT,它可能会尝试向 DNS 服务器注册,但是对于主机以外的计算机,它的 IP 将与您的机器相同,并可能导致一些问题。
我建议您切换到桥接网络,因为这将为其提供自己的 IP 地址,并且对于任何机器来说,它看起来和感觉起来都与网络上的任何其他机器一样。如果您正确设置了所有 IP 设置(或使用 DHCP),它应该会自动注册,并且您通过 IP 或主机名在任何端口上执行任何操作都不会有问题。