Answers:
编辑我发布的第一版说明导致与VMware放置在vmnet8上的名称服务器和网关发生冲突。此版本解决了该问题。
软件版本:
我做了什么:
在创建VM的过程中,将网络设置为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
文件,vmnet8
以将静态IP地址分配给Linux Guest。(在第四行使用您选择的编辑器)
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主机的hosts
文件中添加一个条目。地址必须在subnet
定义的范围内。不能分配的地址是range
子网部分中的地址,广播地址,fixed-address
for 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来宾分配一个静态IP。hardware ethernet
需要HWaddr
从ifconfig
Linux Guest上进行匹配。选择一个可用的静态地址fixed-address
。option broadcast-address
,option domain-name-servers
,option domain-name
并且option routers
需要匹配在给定的选项subnet
的部分dhcpd.conf
。(这已经与Linux Guest上收集的信息相匹配。)在此示例中,主机条目为:
####### 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主机和所有来宾上:关闭所有VM和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虚拟机上在guest虚拟机VM上检查设置是否符合预期:
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$
原始问题的第一步答案是运行以下命令:
$ sudo apt-get install libnss-mdns
安装此软件包应立即启用该功能。然后,您可以通过进入虚拟机your-vm-hostname.local
。这仅在VM的本地网络内有效,这取决于您在虚拟化软件中对其进行配置的方式。
苹果将此功能称为Bonjour,其他人称为Zeroconf。它内置在OS X和iOS中。在Windows上获取它的最简单方法是安装Windows版iTunes。
ubuntu-guest.local
,当我从主机端引用它时。除此之外,这很棒!