VmWare与宿主主机通信STEPBYSTEP(适用于初学者)


基本原理

在虚拟机中有三种通信方式,如下图所示\

\

1. Bridged(桥接模式)

在桥接模式下,VMware虚拟出来的操作系统就像是局域网中的一独立的主机,它可以访问网内任何一台机器不过你需要多于一个的IP地址,并且需要手工为 虚拟系统配置IP地址子网掩码,而且还要和宿主机器处于同一网段,这样虚拟系统才能和宿主机器进行通信

如果你想利用VMware在局域网内新建一个虚拟服务器,为局域网用户提供网络服务,就应该选择桥接模式

2. NAT(网络地址转换模式)

使用NAT模式,就是让虚拟系统借助NAT(网络地址转换)功能,通过宿主机器所在的网络来访问公网也就是说,使用NAT模式可以实现在虚拟系统里访问互 联网NAT模式下的虚拟系统的TCP/IP配置信息是由VMnet8(NAT)虚拟网络的DHCP服务器提供的,无法进行手工修改,因此虚拟系统也就无法 和本局域网中的其他真实主机进行通讯,采用NAT模式最大的优势是虚拟系统接入互联网非常简单,你不需要进行任何其他的配置,只需要宿主机器能访问互联网即 可

如果你想利用VMware安装一个新的虚拟系统,在虚拟系统中不用进行任何手工配置就能直接访问互联网,建议你采用NAT模式

3. Host-only(主机模式)

在某些特殊的网络调试环境中,要求将真实环境和虚拟环境隔离开,这时你就可采用Host-only模式在Host-only模式中,所有的虚拟系统是可以 相互通信的,但虚拟系统和真实的网络是被隔离开的可以利用Windows XP里面自带的Internet连接共享(实际上是一个简单的路由NAT)来让虚拟机 通过主机真实的网卡进行外网的访问虚拟系统的TCP/IP配置信息(如IP地址网关地址DNS服务器等),都是由VMnet1(Host-only)虚拟 网络的DHCP服务器来动态分配的
 

如果你想利用VMware创建一个与网内其他机器相隔离的虚拟系统,进行某些特殊的网络调试工作,可以选择Host-only模式

NAT方式配置

NAT(静态IP)的配置方法

1 确保虚拟机的网卡正常。选择Edit - Virtunal Network Editor

\\

2 查看网卡属性,确保VMnet8 Host Connection(主机连接) 的状态是Connected。如果没有连接上可以点击左下角的Restore Default按钮恢复默认设置。

\\

3 点击 NAT Settings按钮,可以查看到网关为192.168.84.2。记下此时的网关,为后面的配置做准备。

\\

4 进入虚拟机,修改eth0的配置信息

[root@TESTATEWAY=192 ~]# vi /etc/sysconfig/network-scripts/ifcfg-eth0

BDEVICE=eth0
HWADDR=00:0C:29:7F:EF:4C

TYPE=Ethernet
UUID=34adef05-91e5-4f4a-9776-df983b2a8787

ONBOOT=yes
NM_CONTROLLED=yes

BOOTPROTO=static
NETMASK=255.255.255.0

IPADDR=192.168.84.101
GATEWAY=192.168.84.2
DNS1=192.168.84.2
IPV6INIT=no
ARPCHECK=no
确保以下的参数如下设置
ONBOOT=yes
NM_CONTROLLED=yes
BOOTPROTO=static<span style="white-space:pre">	</span>//静态地址
NETMASK=255.255.255.0
IPADDR=192.168.84.101<span style="white-space:pre">	</span>//虚拟机IP地址(随意)
GATEWAY=192.168.84.2<span style="white-space:pre">	</span>//网关(与之前看到的网关一致)
5 保存后重启网络服务,确保正常启用。
[root@TESTATEWAY=192 ~]# service network restart
Shutting down interface eth0:                              [  OK  ]
Shutting down loopback interface:                          [  OK  ]
Bringing up loopback interface:                            [  OK  ]
Bringing up interface eth0:                                [  OK  ]
6 查看此时的ip地址是否按上面的配置那样设置
[root@TESTATEWAY=192 ~]# ifconfig
eth0      Link encap:Ethernet  HWaddr 00:0C:29:7F:EF:4C  
          inet addr:192.168.84.101  Bcast:192.168.84.255  Mask:255.255.255.0
          inet6 addr: fe80::20c:29ff:fe7f:ef4c/64 Scope:Link
          UP BROADCAST RUNNING MULTICAST  MTU:1500  Metric:1
          RX packets:448 errors:0 dropped:0 overruns:0 frame:0
          TX packets:223 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:1000 
          RX bytes:39552 (38.6 KiB)  TX bytes:19385 (18.9 KiB)
          Interrupt:19 Base address:0x2000 

lo        Link encap:Local Loopback  
          inet addr:127.0.0.1  Mask:255.0.0.0
          inet6 addr: ::1/128 Scope:Host
          UP LOOPBACK RUNNING  MTU:65536  Metric:1
          RX packets:0 errors:0 dropped:0 overruns:0 frame:0
          TX packets:0 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:0 
          RX bytes:0 (0.0 b)  TX bytes:0 (0.0 b)
7 在宿主机上查看网卡信息(WIN7环境) 控制面板\网络和 Internet\网络连接下找到【VMware Network Adapter VMnet8】这块网卡
\
\

8 查看IPv4的属性将默认网关改成与虚拟机中的网关一致192.168.84.2 \

\

9 在命令提示行中ping虚拟机的地址192.168.84.101

C:\Users\Administrator>ping 192.168.84.101

正在 Ping 192.168.84.101 具有 32 字节的数据:
来自 192.168.84.101 的回复: 字节=32 时间=3ms TTL=64
来自 192.168.84.101 的回复: 字节=32 时间=1ms TTL=64
来自 192.168.84.101 的回复: 字节=32 时间<1ms TTL=64
来自 192.168.84.101 的回复: 字节=32 时间<1ms TTL=64

192.168.84.101 的 Ping 统计信息:
    数据包: 已发送 = 4,已接收 = 4,丢失 = 0 (0% 丢失),
往返行程的估计时间(以毫秒为单位):
    最短 = 0ms,最长 = 3ms,平均 = 1ms
10 此时可以ping通大功告成

ping通后可以使用如Xshell等 支持SSH协议的工具连接虚拟机,简化操作。

\
\

虚拟机上网设置

1 当前模式下,检查能否ping通外网。下面结果说明可以ping通

[root@TESTATEWAY=192 ~]# ping baidu.com
PING baidu.com (220.181.111.86) 56(84) bytes of data.
64 bytes from 220.181.111.86: icmp_seq=1 ttl=128 time=7.75 ms
64 bytes from 220.181.111.86: icmp_seq=2 ttl=128 time=51.3 ms
64 bytes from 220.181.111.86: icmp_seq=3 ttl=128 time=9.57 ms
64 bytes from 220.181.111.86: icmp_seq=4 ttl=128 time=8.38 ms
64 bytes from 220.181.111.86: icmp_seq=5 ttl=128 time=7.39 ms
64 bytes from 220.181.111.86: icmp_seq=6 ttl=128 time=7.83 ms
64 bytes from 220.181.111.86: icmp_seq=7 ttl=128 time=7.16 ms
64 bytes from 220.181.111.86: icmp_seq=8 ttl=128 time=91.2 ms
^C
--- baidu.com ping statistics ---
8 packets transmitted, 8 received, 0% packet loss, time 7194ms
rtt min/avg/max/mdev = 7.163/23.834/91.244/29.166 ms
2 如果是下面结果则说明ping不通外网。返回未知的主机名。
[root@TESTATEWAY=192 ~]# ping baidu.com
ping: unknown host baidu.com
3 如果虚拟机想上外网,则需要修改网卡的配置信息。在文件中加入DNS地址,与网关相同即可。
[root@TESTATEWAY=192 ~]# vi /etc/sysconfig/network-scripts/ifcfg-eth0

BDEVICE=eth0
HWADDR=00:0C:29:7F:EF:4C

TYPE=Ethernet
UUID=34adef05-91e5-4f4a-9776-df983b2a8787

ONBOOT=yes
NM_CONTROLLED=yes

BOOTPROTO=static
NETMASK=255.255.255.0

IPADDR=192.168.84.101
GATEWAY=192.168.84.2
<span style="color:#ff0000;">DNS1=192.168.84.2</span>
IPV6INIT=no
ARPCHECK=no
4 重启网络服务,并再次ping外网。发现此时可以ping通外网了。
[root@TESTATEWAY=192 ~]# service network restart
Shutting down interface eth0:                              [  OK  ]
Shutting down loopback interface:                          [  OK  ]
Bringing up loopback interface:                            [  OK  ]
Bringing up interface eth0:                                [  OK  ]
[root@TESTATEWAY=192 ~]# ping baidu.com
PING baidu.com (220.181.111.86) 56(84) bytes of data.
64 bytes from 220.181.111.86: icmp_seq=1 ttl=128 time=7.64 ms
64 bytes from 220.181.111.86: icmp_seq=2 ttl=128 time=8.44 ms
64 bytes from 220.181.111.86: icmp_seq=3 ttl=128 time=8.43 ms

相关内容