当前位置:网站首页>网络虚拟化

网络虚拟化

2022-08-10 19:01:00 wespten

无论是vmware,virtual box,virtual pc等虚拟机软件,一般来说,虚拟机有三种网络模式:

1.桥接

2.NAT

3.Host-Only

在VMware虚拟网网络编辑器中我们可以看到有三个虚拟交换机分别对应不同的网络模式:

VMnet0:用于桥接模式下的虚拟交换机

VMnet1:用于仅主机模式下的虚拟交换机

VMnet8:用于NAT模式下的虚拟交换机

对应地,在Windows主机上对应虚拟了VMware Network Adapter VMnet1和VMware Network Adapter VMnet8两块虚拟网卡,至于为什么没有VMnot0的虚拟网卡,且看下文。

可见物理机其实有3个IP地址:192.168.80.1,192.168.224.1。通过这几个ip地址都可以访问到主机。

宿主机:虚拟机存放寄托的主机,比如在win10主机中安装了Linux的虚拟机,那么宿主机就是win10电脑主机。 

一、Host-Only

在Host-Only模式下,虚拟网络是一个全封闭的网络,它唯一能够访问的就是主机。其实Host-Only网络和NAT网络很相似,不同的地方就是Host-Only网络没有NAT服务,所以虚拟网络不能连接到Internet。主机和虚拟机之间的通信是通过VMware Network Adepter VMnet1虚拟网卡来实现。

Host-Only的宗旨就是建立一个与外界隔绝的内部网络,来提高内网的安全性。这个功能或许对普通用户来说没有多大意义,但大型服务商会常常利用这个功能。如果你想为VMnet1网段提供路由功能,那就需要使用RRAS,而不能使用XP或2000的ICS,因为ICS会把内网的IP地址改为192.168.0.1,但虚拟机是不会给VMnet1虚拟网卡分配这个地址的,那么主机和虚拟机之间就不能通信了。

Host-Only模式将虚拟机与外网隔开,使得虚拟机成为一个独立的系统,只与主机相互通讯。

Host-Only模式配置 

1. 进入VmWare->主菜单->虚拟网络编辑器

2. 在网络列表中选择“VMnet1”,如果没有,可以点击“添加网络”按钮增加,为什么是VMnet1呢,这个应该是VMWare默认设置,当然是用其他网卡也是可以的。

3. 选择“仅主机模式”,选择“将主机虚拟适配器连接到此网络”和“是用本地DHCP服务将IP地址分配给虚拟机”选项。

4. 子网IP:10.10.10.0,子网掩码:255.255.255.0,我习惯将“仅主机模式”的子网网段配置为“10.10.10.0”,这个可以根据自己的喜好来设置。

5. 然后修改虚拟机设置,将网络适配器修改为“仅主机模式” 。

6. 查看VMnet1 

所以肯定ping不同外网。

 

有趣的是,主机能ping通虚拟机,而虚拟机不能ping通192.168.1.107。

所以我们可以推测,虚拟机ping主机很可能是通过NAT模式下的NAT虚拟设备,而仅主机模式没有这个设备;而主机ping虚拟机是通过VMnet1网卡。而禁用NAT虚拟设备有些困难,我们也不太好验证。

虚拟机自然可以ping通192.168.224.1。

二、桥接

桥接网络是指本地物理网卡和虚拟网卡通过VMnet0虚拟交换机进行桥接,物理网卡和虚拟网卡在拓扑图上处于同等地位,那么物理网卡和虚拟网卡就相当于处于同一个网段,虚拟交换机就相当于一台现实网络中的交换机,所以两个网卡的IP地址也要设置为同一网段。

所以当我们要在局域网使用虚拟机,对局域网其他pc提供服务时,例如提供ftp,提供ssh,提供http服务,那么就要选择桥接模式。

例如大学宿舍里有一个路由器,宿舍里四个人连接这个路由器,路由器的wanip就不理会了,这个ip是动态获取的,而lanip默认是192.168.1.1,子网掩码是255.255.255.0。而其他四个人是自动获取ip,假设四个人的ip是:

A:192.168.1.100/255.255.255.0,  B:192.168.1.101/255.255.255.0,  C:192.168.1.102/255.255.255.0,  D:192.168.1.103/255.255.255.0

那么虚拟机的ip可以设置的ip地址是192.168.1.2-192.168.1.99,192.168.1.104-192.168.1.254(网络地址全0和全1的除外,再除去ABCD四个人的ip地址)。

那么虚拟机的ip地址可以设置为192.168.1.98/255.255.255.0,设置了这个ip地址,ABCD这四个人就可以通过192.168.1.98访问虚拟机了,如果虚拟机需要上外网,那么还需要配置虚拟机的路由地址,就是192.168.1.1了,这样,虚拟机就可以上外网了,但是,上网我们一般是通过域名去访问外网的,所以我们还需要为虚拟机配置一个dns服务器,我们可以简单点,把dns服务器地址配置为google的dns服务器:8.8.8.8,到此,虚拟机就可以上网了。

桥接模式就是将主机网卡与虚拟的网卡利用虚拟网桥进行通信。类似于把物理主机虚拟为一个交换机,所有桥接设置的虚拟机连接到这个交换机的一个接口上,物理主机也同样插在这个交换机当中,所以所有桥接下的网卡与网卡都是交换模式的,相互可以访问而不干扰。

在桥接模式下虚拟机IP地址需要与主机在同一网段,如果需要联网,则网关与DNS需要与主机网卡一致。

桥接特点:

1、可以将虚拟机看做一台新电脑,接入了宿主机所在的网络,如果是在工作单位,可能造成虚拟机IP占用单位同事电脑的IP地址,小心单位网管会找你呦;

2、虚拟机从单位局域网自动获取IP地址,如果未获取到IP地址,需要自己指定IP;

3、虚拟机允许访问宿主机所在局域网内的其他电脑,宿主机和虚拟机同时接入工作单位局域网络;

4、虚拟机允许访问Internet互联网(当然宿主机必须可以访问互联网才行)。 主机和虚拟机通过单位局域网,互联互通。这里如果网络不通要检查一下防火墙配置,或者直接关闭防火墙;

桥接模式配置

1. 进入VmWare->主菜单->虚拟网络编辑器

2.  在网络列表中选择“VMnet0”,如果没有,可以点击“添加网络”按钮增加,为什么是VMnet0呢,这个应该是VMWare默认设置,当然是用其他网卡也是可以的。

更改设置:

3. 选择“桥接模式”

选择宿主机访问外部网络的物理网卡,可以是有线网卡也可以是无线网卡。

确定,保存:

 

这里已桥接至 的网卡选择一定要选择宿主机正在使用的物理网卡,一般笔记本是wifi网卡,台式机是有线网卡,如果不知道网卡型号可以到宿主机系统设置中的网络适配器中查看。 

4. 修改虚拟机配置,点击编辑虚拟机配置,修改网络配置为桥接模式,确定即可。

5. 因为桥接模式虚拟机与宿主机在同一网段下,我们先查看下宿主机的网络信息: 

6. 接下来在虚拟机中配置网卡(/etc/sysconfig/network-scripts/ifcfg-etho0文件):

注意,网关与DNS需要与主机相同,因为他们在同一网段下~

 

7. 重启网络服务,测试: 

三、NAT模式

NAT模式中,就是让虚拟机借助NAT(网络地址转换)功能,通过宿主机器所在的网络来访问公网。

NAT模式中,虚拟机的网卡和物理网卡的网络,不在同一个网络,虚拟机的网卡,是在vmware提供的一个虚拟网络。

在NAT模式中,主机网卡直接与虚拟NAT设备相连,然后虚拟NAT设备与虚拟DHCP服务器一起连接在虚拟交换机VMnet8上,这样就实现了虚拟机联网。VMware Network Adapter VMnet8网卡是为了实现主机与虚拟机之间的通信。

可见NAT模式下主机更像是虚拟机们的"路由器",通过VMnet8虚拟网卡为虚拟机分发地址。所以虚拟机和主机不再同一网段下,可以理解为主机是虚拟机的"上级",这也就是为什么桥接模式没有VMnet0这个虚拟网卡,因为桥接模式下的虚拟机和主机是"平等"的,共用同一个路由器呀。

NAT和桥接的比较:

(1) NAT模式和桥接模式虚拟机都可以上外网。

(2) 由于NAT的网络在vmware提供的一个虚拟网络里,所以局域网其他主机是无法访问虚拟机的,而宿主机可以访问虚拟机,虚拟机可以访问局域网的所有主机,因为真实的局域网相对于NAT的虚拟网络,就是NAT的虚拟网络的外网,不懂的人可以查查NAT的相关知识。

 (3) 桥接模式下,多个虚拟机之间可以互相访问;NAT模式下,多个虚拟机之间也可以相互访问。

如果你建一个虚拟机,只是给自己用,不需要给局域网其他人用,那么可以选择NAT,毕竟NAT模式下的虚拟系统的TCP/IP配置信息是由VMnet8(NAT)虚拟网络的DHCP服务器提供的,只要虚拟机的网路配置是DHCP,那么你不需要进行任何其他的配置,只需要宿主机器能访问互联网即可,就可以让虚拟机联网了。

例如你想建多个虚拟机集群,作为测试使用,而宿主机可能是一个笔记本,ip不固定。这种应用场景,我们需要采用nat模式了,但是我们要考虑一个问题,虚拟机之间是需要互访的,默认采用dhcp,虚拟机的ip每次重启,ip都是不固定的,所以我们需要手工设置虚拟机的ip地址。

但是我们对虚拟机网卡所在的虚拟网络的信息还一无所知,例如虚拟机网络的路由地址,子网掩码,所以我们需要先查下nat虚拟网络的信息。

使用vmware,在Edit->Virtual Network Editor中配置好虚拟网络信息后看到下图所示,注意VMnet8,VMnet8相当于是本机的一个路由,虚拟机设置NAT后就通过这个路由进行上网的,可以查看其网络地址,路由地址,子网掩码。

选择VMnet8->NAT设置,可以看到子网ip显示为192.168.233.0,子网掩码是255.255.255.0,那路由地址呢,其实就是网关IP了,都是同个东西,这里是192.168.233.2。

接下来就好办了,在对应的虚拟机设置好ip,子网掩码,路由地址就可以上外网了,至于dns可以设置为8.8.8.8。

NAT模式配置

1. 进入VmWare->主菜单->虚拟网络编辑器:

2.  在网络列表中选择“VMnet8”,如果没有,可以点击“添加网络”按钮增加,为什么是VMnet8呢,这个应该是VMWare默认设置,当然是用其他网卡也是可以的。

3. 选择“NAT模式”,选择“将主机虚拟适配器连接到此网络”和“是用本地DHCP服务将IP地址分配给虚拟机”选项,子网IP:20.20.20.0,子网掩码:255.255.255.0,为了与“仅主机模式”区分,我习惯将“NAT模式”的子网网段配置为“20.20.20.0”,这个可以根据自己的喜好来设置。

4. 然后修改虚拟机设置,将网络适配器修改为“NAT模式” 。

5. 因为主机是虚拟机的"路由器",所以我们需要去查看"路由器"给VMnet8这个交换机分配了哪一网段: 

6. 同上,修改网卡配置: 

7.  重启网络服务,测试:

8.  测试主机能否ping通虚拟机:

也就是说,VMnet8网卡的作用仅仅是主机与虚拟机之间的通信,访问外网是不通过VMnet8网卡的!

我们可以来做个测试,先把Windows系统中的VMnet8网卡禁用了:

 

再来测试一下: 

主机ping不通虚拟机:

虚拟机可以ping通外网,不过也可以ping通192.168.1.107,而肯定ping不通192.168.80.1。

 

我的理解是这样的,这时候主机和虚拟机就像一个路由器下的两个"主机",但虚拟机的ip是由与主机相连的VMnet8网卡决定的;虚拟机ping主机时,通过共同的路由器可以找到主机;而主机ping虚拟机时,如果有两个物理机,他们给虚拟机分发的网段是相同的,所以对应的虚拟机的ip是可能相同,而此时禁用了VMnet8,一个主机就无法找到对应的虚拟机了(可能与另一台主机下的虚拟机ip相同,此时虚拟机的ip无法再整个网络结构中唯一标识了)。

所以啊,NAT模式下的虚拟机时通过真实主机的ip访问外网。

四、虚拟机ping不通主机,但是主机可以ping通虚拟机

我在Windows10系统安装了虚拟机,设置的主机与虚拟机的连接方式是桥接,安装好后,发现虚拟机ping不通主机,但是主机可以ping通虚拟机。

我的操作是:关闭防火墙,发现虚拟机可以ping通主机了。说明是Windows10防火墙阻止了。

现在存在的问题是:如果我一直关闭防火墙也不是个事啊?这样做会影响我的电脑安全的。于是我想我要先确定防火墙阻止了什么,导致需要关闭防火墙?

于是网上查看资料,原来是Windows10的防火墙没有打开ICMPv4-in这个规则,那怎么打开呢:

选择高级设置:

入站规则,找到配置文件类型为“公用”的“文件和打印共享(回显请求 – ICMPv4-In)”规则,设置为允许。 

虚拟机可以ping通主机了。

 

如果上面步骤没有问题还ping不通,别急,可能是这个原因,我们一般都是自动获取ip地址和网关,设置为手动就可以了。

打开cmd查看你的IP地址,ipconfig,记住IP地址和默认网关,然后打开网络和Internet设置: 

选择WIAN右键单击属性:

上面防火墙是虚拟机ping不通本机ip的主要原因,但是如果开启了入站规则没管用那就是其他问题了,我的把自动获取改为手动就好了,之前设置的入站规则也管用了,现在防火墙也都开着。 

五、Linux禁止ping、开启ping设置

Linux默认是允许Ping响应的,系统是否允许Ping由2个因素决定的:A、内核参数,B、防火墙,需要2个因素同时允许才能允许Ping,2个因素有任意一个禁Ping就无法Ping。

具体的配置方法如下:

A、内核参数设置

1、允许PING设置

 A.临时允许PING操作的命令为:

echo 0 >/proc/sys/net/ipv4/icmp_echo_ignore_all

B.永久允许PING配置方法:

vim /etc/sysctl.conf 

net.ipv4.icmp_echo_ignore_all=1 #增加一行

如果已经有net.ipv4.icmp_echo_ignore_all这一行了,直接修改=号后面的值即可的(0表示允许,1表示禁止)。

修改完成后执行sysctl -p使新配置生效。

2、禁止Ping设置     

 A.临时禁止PING的命令为:

echo 1 >/proc/sys/net/ipv4/icmp_echo_ignore_all    

B. 永久允许PING配置方法:

vim /etc/sysctl.conf 

net.ipv4.icmp_echo_ignore_all=0 #增加一行

如果已经有net.ipv4.icmp_echo_ignore_all这一行了,直接修改=号后面的值即可的。(0表示允许,1表示禁止)

修改完成后执行sysctl -p使新配置生效。

 

B、防火墙设置(注:此处的方法的前提是内核配置是默认值,也就是没有禁止Ping)

这里以Iptables防火墙为例,其他防火墙操作方法可参考防火墙的官方文档。

1、允许PING设置:      

iptables -A INPUT -p icmp --icmp-type echo-request -j ACCEPT
iptables -A OUTPUT -p icmp --icmp-type echo-reply -j ACCEPT

或者也可以临时停止防火墙操作的:

service iptables stop

2、禁止PING设置:

iptables -A INPUT -p icmp --icmp-type 8 -s 0/0 -j DROP

总结:

在VMware的3中网络模式中,NAT模式是最简单的,基本不需要手动配置IP地址等相关参数。至于桥接模式则需要额外的IP地址,如果是在内网环境中还很容易,如果是ADSL宽带就比较麻烦了,ISP一般是不会大方的多提供一个公网IP的。

原网站

版权声明
本文为[wespten]所创,转载请带上原文链接,感谢
https://blog.csdn.net/qq_35029061/article/details/126264203