零、内容说明
本文简要扫盲了VMware虚拟机的网络连接方式及相关知识,并详细介绍了桥接模式下网络设置方法及本人在设置桥接网络时遇到的问题及解决办法。
说明:本人学习了一些Linux及网络结构基础知识,实际连接虚拟机时遇到的问题解决来自CSDN,但是全部解决方法都是自己亲自试过(未测试的会在文中注明)且以自己的知识能够解释为什么如此操作的,适合小白入门操作参考,文中的相关理论解释说明则需要批判性地看待,理解可能会肤浅或有错误。
系统:win10主机+虚拟机CentOS7。
一、VMware三种网络连接方式
VMware提供了三种网络连接方式,VMnet0, VMnet1, Vmnet8,分别代表桥接,Host-only及NAT模式。在VMware的编辑-虚拟网络编辑器可看到对应三种连接方式的设置(如下图)。
上图中每一个VMnet均代表一个虚拟交换机,用于真实主机和虚拟主机构成对应的局域网络。VMware实际可支持更多虚拟交换机,包括VMnet0-9,均可与真实主机相连;此外还可扩展更多虚拟交换机,这些则不再与主机相连。
1.1 桥接模式
VMnet0代表"桥接模式"的虚拟交换机,该交换机上连接真实主机及使用桥接模式的虚拟主机,虚拟主机与真实主机地位完全相同,因此必须给虚拟主机配置相应的IP地址等,当然也可以使用DHCP服务器动态分配IP地址。桥接模式下,虚拟主机与真实主要在VMnet0构成的局域网内通信,同时通过真实主机中的网关与外网通信。由上表可看出,VMnet0直接连接到真实主机的某块真实网卡上。
1.2 Host-only
VMnet1代表"仅主机模式"的虚拟交换机,该交换机建立一个仅连接真实主机和虚拟主机的网络,虚拟主机无法连接外网,因此称为仅主机模式。此种模式下,VMnet1包括一个无路由功能的DHCP服务器,它是VMnet1的一部分。VMnet1连接虚拟主机和VMware分配给真实主机的虚拟网卡VMware Network Adapter VMnet1(如下图),其地址就是对应虚拟主机的默认网关地址,但该网卡是不具备网关功能的,因此无法与外网通信。
1.3 NAT模式
VMnet8代表“NET”模式的虚拟交换机,该交换机用于虚拟主机需要访问外网而不希望被外网访问的情形下,也是实现虚拟机外网访问的最简单模式。此模式下,VMnet8包括一个NAT服务器。VMnet8连接虚拟主机和真实主机的虚拟网卡VMware Network Adapter VMnet8,该网卡地址就是此模式下虚拟主机的默认网关地址。此时真实主机通过NAT服务执行路由器功能,实现NAT模式的外网访问。
二、桥接模式下的网络设置
仅主机模式无法访问外网,NAT模式下外网访问设置相对简单,下面仅介绍下桥接模式下的外网访问设置方式。其他两种连接方式的设置可以参考(还是自行百度吧!)进行。
2.1 真实主机设置
使用桥接模式,首先要设置用于桥接的真实主机的网卡(一般是连接外网的网卡)。以win10为例,点击右下角网络和Internet设置-更改适配器选项,找到连接外网的网卡(我的就是下图中2位置啦),右键-属性,在WLAN属性中选中VMware Bridge Protocol,然后确定即可。
2.2 VMware虚拟交换机设置
设置好真实主机配置后,接下来需要设置VMware虚拟交换机的网络设置。
如上图,点击VMware上编辑-虚拟网络编辑器进入网络设置页面(下图)。你的界面有可能看不到VMnet0选项,这时需要你关闭VMware,然后通过管理员模式重新打开VMware,即可解决问题。如果仍不见VMnet0,问题可能比较复杂,请自行百度解决办法。然后按下图,依次选择2处桥接模式,桥接位置3处选择你的真实主机连接外网的那块网卡,点击4处确定。
有时候可能真实主机的网卡对应桥接配置有问题,可尝试先将2.1节中真实主机连接外网的网卡(即你使用桥接模式时设置的外部连接外卡)的Bridge Protocal卸载,依次网络适配器-右键-属性-点击VMware Bridge Protocal-卸载-确定,如下图),再回到上面虚拟网络编辑器页面,点击1处还原默认设置,此时VMware会重新分配VMnet0,1,8等3个虚拟网卡,待其完成后,重新从2.1节开始设置,此时你再次查看外网网卡的属性,会发现Bridge Protocal已经重新安装上了。
2.3 虚拟机设置
接下来就需要设置VMware上的虚拟主机设置,如下图所示,在虚拟机关闭的情况下,依次点击编辑虚拟机设置-网络适配器-启动时连接-桥接模式。点击右上角关闭按钮,设置完成。
2.4 系统网络设置
桥接模式下,虚拟机与真实主机的地位相同,因此想要配置虚拟机上网,当然还需要设置虚拟机的IP地址等。地址分配支持DHCP自动分配和静态IP。如下图,以CentOS7为例,依次点击1,2,3,进入设置-网络,点击4进入IP配置页面。
详细信息页面,可勾选自动连接,这样开机可自动联网;对其他用户可用,指当前配置是否对其他登录的用户可用(自己理解,未测试过)。
接着选择IPv4页面,如果使用DHCP模式,直接选择DHCP模式,点击应用(如下图),设置即可完成,此时应该大功告成,可以上网啦。
如果需要使用固定IP上网,则需要选择手动模式,此时需要设置IP地址,子网掩码,默认网关等。先在真实主机(假定为windows系统)上使用ipconfig命令查看下真实主机的IP地址,子网掩码,默认网关等。下面3、4处子网掩码和网关填写与真实主机相同的参数,IP地址保证与真实主机的IP地址在同一网段即可。DNS可以选择自动或者手动,手动模式下也保持和真实主机的设置一致即可。
2.5 Linux系统文件设置
如果使用静态IP地址,到上一步咱们算是胜利在望,就差临门一脚了。最后咱还需要设置一下系统文件。
首先,在虚拟机终端中,输入命令ifconfig,可以找到我们设置的希望用于和真实主机及外网通信的网卡名称,如下图,我的网卡名称是ens33,对应IP地址已经是我前面设置的静态IP了;
接着,输入如下命令,设置对应虚拟网卡的IP地址等信息。其中ifcfg-ens33就是我的ens33网卡对应的配置文件,这里你需要替换为你自己的文件,如果不知道文件名,可以先用ls查看下面目标路径中和上一步查询到的网卡名称相关的那个文件。然后再输入下面命令即可。由于这个是系统文件,因此其更新需要管理员权限,请使用sudo命令,当然更改时也要务必小心。
sudo vi /etc/sysconfig/network-scripts/ifcfg-ens33
在文件里面,需要设置以下项:BOOTPROTO设置为static;ONBOOT修改为yes,表示开机自动连接;添加IP地址IPADDR;子网掩码PREFIX=24,表示子网掩码1的个数是24,也可以写为NETMASK=255.255.255.0;添加网关地址GATEWAY。修改完成后,wq保存退出。
接着,需要设置默认网关文件,执行如下命令。
sudo vi /etc/sysconfig/network
然后在文件中添加如下信息。完成后wq保存退出。
如果你还设置了手动DNS服务器,则你还需要在上面添加IP地址的文件中添加一行DNS1=xxx添加文件地址;并使用如下命令设置DNS服务器(需要与真实主机DNS一致),由于我使用的是自动DNS,因此此项内容未验证。
sudo vi /etc/resolf.conf
以上设置完成后,运行如下命令,重启网络,一切大功告成!
service network restart
三、测试
3.1 测试访问本机
首先测试下访问本机地址;
[hy@study ~]$ ping localhost
PING localhost (127.0.0.1) 56(84) bytes of data.
64 bytes from localhost (127.0.0.1): icmp_seq=1 ttl=64 time=0.434 ms
64 bytes from localhost (127.0.0.1): icmp_seq=2 ttl=64 time=0.105 ms
64 bytes from localhost (127.0.0.1): icmp_seq=3 ttl=64 time=0.094 ms
64 bytes from localhost (127.0.0.1): icmp_seq=4 ttl=64 time=0.336 ms
64 bytes from localhost (127.0.0.1): icmp_seq=5 ttl=64 time=0.092 ms
访问本机(127.0.0.1),成功!这个其实与上面设置无关,它走的是本地local地址。
3.2 测试访问本机静态IP
输入如下命令:
[hy@study ~]$ ping 192.168.8.2
PING 192.168.8.2 (192.168.8.2) 56(84) bytes of data.
64 bytes from 192.168.8.2: icmp_seq=1 ttl=64 time=0.117 ms
64 bytes from 192.168.8.2: icmp_seq=2 ttl=64 time=0.095 ms
64 bytes from 192.168.8.2: icmp_seq=3 ttl=64 time=0.101 ms
访问本机静态IP,成功!说明静态IP地址设置成功。
3.3 测试访问真实主机IP
输入如下命令:
[hy@study ~]$ ping 192.168.8.114
PING 192.168.8.114 (192.168.8.114) 56(84) bytes of data.
64 bytes from 192.168.8.114: icmp_seq=1 ttl=128 time=1.31 ms
64 bytes from 192.168.8.114: icmp_seq=2 ttl=128 time=0.848 ms
64 bytes from 192.168.8.114: icmp_seq=3 ttl=128 time=0.689 ms
访问真实主机IP,成功!说明局域网通信正常。
很多情况下会发现ping真实主机没有应答,但是网络访问等都是正常的,这种情况多半是因为真实主机的防火墙设置问题。将防火墙设置一下即可。
以win10为例,进入控制面板-系统和安全-Windows Defender 防火墙-高级设置,进入高级安全设置,如下图所示。然后点击3处,设置防火墙属性,如果发现出现的页面和下图右侧不同,可以点击2处回到此显示页面。
虚拟机与真实主机属于局域网,因此首先需要在"专用配置文件"页将"入站连接"选择为"允许",表示允许局域网其他主机绕过防火墙访问本机。点击确定。
但此时可能仍然无法ping通,我们再点击入站规则,在右侧找到"文件和打印共享(回显请求 – ICMPv4-In)"项,"回显请求",指的就是ping请求的回显响应吧。如下图,设置之前,1处应该是"否",2处应该是"启用规则",点击"启用规则",就会变成下图的样子了,注意文件和打印共享之回显请求一共有4项,IPV4和IPV6各两项,每个下面包括"域"和“专用,公用”,我们要选择IPV4和"专用,公用"的那项,不要弄错。
完成上述操作之后,就会惊喜地发现,可以用虚拟机ping通真实主机地址啦,而且不用关闭windows防火墙!
3.4 测试访问外网
执行如下命令:
[hy@study ~]$ ping www.baidu.com
PING www.a.shifen.com (180.101.49.11) 56(84) bytes of data.
64 bytes from 180.101.49.11 (180.101.49.11): icmp_seq=1 ttl=51 time=34.3 ms
64 bytes from 180.101.49.11 (180.101.49.11): icmp_seq=2 ttl=51 time=201 ms
64 bytes from 180.101.49.11 (180.101.49.11): icmp_seq=3 ttl=51 time=142 ms
访问百度服务器,成功!说明连接外网成功。
3.5 测试真实主机访问虚拟本机
在真实主机的终端中,执行如下命令:
(base) C:\Users\huang>ping 192.168.8.2正在 Ping 192.168.8.2 具有 32 字节的数据:来自 192.168.8.2 的回复: 字节=32 时间<1ms TTL=64来自 192.168.8.2 的回复: 字节=32 时间<1ms TTL=64来自 192.168.8.2 的回复: 字节=32 时间<1ms TTL=64来自 192.168.8.2 的回复: 字节=32 时间<1ms TTL=64192.168.8.2 的 Ping 统计信息: 数据包: 已发送 = 4,已接收 = 4,丢失 = 0 (0% 丢失),往返行程的估计时间(以毫秒为单位): 最短 = 0ms,最长 = 0ms,平均 = 0ms
真实主机访问虚拟机,成功!
**粗体** _斜体_ [链接](http://example.com) `代码` - 列表 > 引用
。你还可以使用@
来通知其他用户。