1.准备工具
- 虚拟软件:Vmware Workstation 11.0
- Linux系统:RedHat Enterprise Linux 7.0
- 远程工具:secureCRT 7.3.6
2.VM虚拟软件网络工作原理
2-1 VM三种网络模式
桥接、NAT、hostonly
在宿主机上对应的有VMware Network Adapter VMnet1和VMware Network Adapter VMnet8两块虚拟网卡
在VM软件中有三种虚拟网络(虚拟交换机):VMnet0、VMnet1、VMnet8
//由于VMnet0使用桥接模式,对应在宿主的网络配置中看不到VMnet0网卡的存在
2-2 桥接模式(Bridged)
桥接模式就是将宿主机网卡(真实网卡)与VM软件中的虚拟交换机0(VMnet0)利用虚拟网桥进行通信。在桥接的作用下,类似于把物理主机虚拟为一个交换机,所有桥接设置的虚拟机连接到这个交换机的一个接口上,物理主机也同样插在这个交换机当中,所以所有桥接下的网卡与网卡都是交换模式的,相互可以访问而不干扰。在桥接模式下,虚拟机ip地址需要与主机在同一个网段,如果需要联网,则网关与DNS需要与主机网卡一致
桥接模式网络实现
-
在VM中“编辑虚拟机设置”将实验虚拟机网络设置为“桥接模式”
-
在进入系统之前,确认宿主机真实网卡的ip地址、网关、DNS等信息。
-
进入虚拟机linux系统中编辑网卡(eno16777728)信息
[root@cricket-server Desktop]# vi /etc/sysconfig/network-scripts/ifcfg-eno16777728 TYPE=Ethernet BOOTPROTO=static NAME=eno16777728 UUID=d86ad442-6fd5-4470-9e07-5ad58525255e ONBOOT=yes HWADDR=00:0C:29:DC:14:31 IPADDR=192.168.43.202 //设置虚拟机IP与宿主机同一网段 NETMASK=255.255.255.0 //设置子网掩码 GATEWAY=192.168.43.1 //设置网关 DNS1=192.168.43.1 //设置dns
-
重启网卡
[root@cricket-server Desktop]# systemctl restart network
-
看网卡运行信息
[root@cricket-server Desktop]# ifconfig eno16777728: flags=4163<UP,BROADCAST,RUNNING,MULTICAST> mtu 1500 inet 192.168.43.202 netmask 255.255.255.0 broadcast 192.168.43.255 //网卡信息一致 inet6 fe80::20c:29ff:fedc:1431 prefixlen 64 scopeid 0x20<link> inet6 240e:2a:17f1:698c:20c:29ff:fedc:1431 prefixlen 64 scopeid 0x0<global> ether 00:0c:29:dc:14:31 txqueuelen 1000 (Ethernet) RX packets 140 bytes 16469 (16.0 KiB) RX errors 0 dropped 0 overruns 0 frame 0 TX packets 166 bytes 19324 (18.8 KiB) TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0 ………………省略其余部分网卡过程………………
-
测试网络连通性
使用ping命令ping外网ip,测试能否联网
[root@cricket-server Desktop]# ping www.baidu.com PING www.a.shifen.com (220.181.112.244) 56(84) bytes of data. 64 bytes from 220.181.112.244: icmp_seq=1 ttl=52 time=45.0 ms 64 bytes from 220.181.112.244: icmp_seq=2 ttl=52 time=55.0 ms 64 bytes from 220.181.112.244: icmp_seq=3 ttl=52 time=46.9 ms 64 bytes from 220.181.112.244: icmp_seq=4 ttl=52 time=42.9 ms 64 bytes from 220.181.112.244: icmp_seq=5 ttl=52 time=46.3 ms 64 bytes from 220.181.112.244: icmp_seq=6 ttl=52 time=44.0 ms ^C --- www.a.shifen.com ping statistics --- 6 packets transmitted, 6 received, 0% packet loss, time 5008ms rtt min/avg/max/mdev = 42.976/46.737/55.082/3.971 ms
使用CRT软件连接虚拟机
- 打开CRT软件
- 连接成功
2-3 NAT模式(地址转换)
NAT是Network address translate(网络地址转换)的简称
NAT模式是宿主机(真实网卡)和VM软件中的虚拟交换机(VMnet8)利用虚拟NAT设备进行通信,虚拟机发出的每一块数据包都会经过虚拟NAT设备(表面看不见),然后NAT后转发给宿主机网卡(真实网卡)。
虚拟交换机(VMnet8)和虚拟机处于一个地址段,虚拟机和宿主机处于不同一个地址段,VM软件中的虚拟NAT设备相当于虚拟机的网关,能通过路由转发到达宿主机(真实网卡)中,所以虚拟机能ping到宿主机的IP,但是宿主机ping不到虚拟机的IP(NAT属于多对一,虚拟NAT设备不具备外部访问内部功能),因而使用CRT等终端时无法连接虚拟机。
VMware Network Adapter VMnet8的作用:
实现主机与虚拟机之间的通信,使CRT等终端能通过宿主机来访问虚拟机,但是VM软件中的VMnet8设置的NAT网关是无法通过宿主机来连通的(虚拟NAT设备不具备外部访问内部功能)
NAT模式网络实现
- 在VM中“编辑虚拟机设置”将实验虚拟机网络设置为“NAT”
- 在VM中“虚拟网络编辑器”设置NAT参数及自定义参数
- 进入虚拟机linux系统中编辑网卡(eno16777728)信息
[root@cricket-server Desktop]# vi /etc/sysconfig/network-scripts/ifcfg-eno16777728 TYPE=Ethernet BOOTPROTO=static NAME=eno16777728 UUID=d86ad442-6fd5-4470-9e07-5ad58525255e ONBOOT=yes HWADDR=00:0C:29:DC:14:31 IPADDR=172.30.200.100 //设置虚拟机IP与NAT模式参数设置为同一网段 NETMASK=255.255.255.0 GATEWAY=172.30.200.1 DNS1=172.30.200.1
- 重启网卡
[root@cricket-server Desktop]# systemctl restart network
- 查看网卡运行信息
[root@cricket-server Desktop]# ifconfig eno16777728: flags=4163<UP,BROADCAST,RUNNING,MULTICAST> mtu 1500 inet 172.30.200.100 netmask 255.255.255.0 broadcast 172.30.200.255 ether 00:0c:29:dc:14:31 txqueuelen 1000 (Ethernet) RX packets 46 bytes 5304 (5.1 KiB) RX errors 0 dropped 0 overruns 0 frame 0 TX packets 185 bytes 14976 (14.6 KiB) TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0
- 测试网络连通性
使用ping命令ping外网ip,测试能否联网[root@cricket-server Desktop]# ping www.baidu.com //可以ping通百度 PING www.a.shifen.com (220.181.112.244) 56(84) bytes of data. 64 bytes from 220.181.112.244: icmp_seq=1 ttl=128 time=63.1 ms 64 bytes from 220.181.112.244: icmp_seq=2 ttl=128 time=57.0 ms ^C --- www.a.shifen.com ping statistics --- 2 packets transmitted, 2 received, 0% packet loss, time 1001ms rtt min/avg/max/mdev = 57.013/60.091/63.170/3.088 ms [root@cricket-server Desktop]# ping 192.168.43.202 //可以ping通宿主机IP PING 192.168.43.202 (192.168.43.202) 56(84) bytes of data. 64 bytes from 192.168.43.202: icmp_seq=1 ttl=128 time=5.96 ms 64 bytes from 192.168.43.202: icmp_seq=2 ttl=128 time=43.3 ms ^C --- 192.168.43.202 ping statistics --- 2 packets transmitted, 2 received, 0% packet loss, time 1001ms rtt min/avg/max/mdev = 5.968/24.636/43.304/18.668 ms [root@cricket-server Desktop]# ping 172.30.200.1 //可以ping通NAT网关 PING 172.30.200.1 (172.30.200.1) 56(84) bytes of data. 64 bytes from 172.30.200.1: icmp_seq=1 ttl=128 time=0.158 ms 64 bytes from 172.30.200.1: icmp_seq=2 ttl=128 time=0.261 ms ^C --- 172.30.200.1 ping statistics --- 2 packets transmitted, 2 received, 0% packet loss, time 1000ms rtt min/avg/max/mdev = 0.158/0.209/0.261/0.053 ms [root@cricket-server Desktop]# ping 172.30.240.254 //可以ping通VMnet8网卡(为了区别,VMnet8 IP 与NAT参数设置有别) PING 172.30.240.254 (172.30.240.254) 56(84) bytes of data. 64 bytes from 172.30.240.254: icmp_seq=1 ttl=128 time=0.669 ms 64 bytes from 172.30.240.254: icmp_seq=2 ttl=128 time=0.475 ms 64 bytes from 172.30.240.254: icmp_seq=3 ttl=128 time=0.537 ms ^C --- 172.30.240.254 ping statistics --- 3 packets transmitted, 3 received, 0% packet loss, time 2001ms rtt min/avg/max/mdev = 0.475/0.560/0.669/0.083 ms
- 利用宿主机CMD或者powershell 反ping虚拟机和时不通
- 使用CRT软件连接虚拟机
- 修改宿主机VMnet8配置,确保宿主机VMnet8网卡网段与VM软件中VMnet8网络网段一致
- 利用宿主机CMD或者powershell ping虚拟机和NAT网关
打开CRT连接虚拟机
- 连接成功
2-4 仅主机模式(Host-Only)
Host-Only模式其实就是NAT模式去除了虚拟NAT设备,然后使用VMware Network Adapter VMnet1虚拟网卡连接VMnet1虚拟交换机来与虚拟机通信的,Host-Only模式将虚拟机与外网隔开,使得虚拟机成为一个独立的系统,只与主机相互通讯。
Host-Only网络实现
本实验采用DHCP方式分配IP给虚拟机
-
在VM中“编辑虚拟机设置”将实验虚拟机网络设置为“Host-Only”
-
设置VM的“虚拟网络编辑器”(包括DHCP设置)
-
进入虚拟机linux系统中编辑网卡(eno16777728)信息
[root@cricket-server Desktop]# vi /etc/sysconfig/network-scripts/ifcfg-eno16777728
- 重启网卡
[root@cricket-server Desktop]# systemctl restart network
- 查看网卡运行信息
[root@cricket-server Desktop]# ifconfig
- 测试网络连通性
使用ping命令ping外网宿主机网络(VMnet8),测试能否联网
[root@cricket-server Desktop]# ping 172.30.100.254 //可以ping通宿主机IP PING 172.30.100.254 (172.30.100.254) 56(84) bytes of data.
64 bytes from 172.30.100.254: icmp_seq=1 ttl=128 time=0.388 ms
64 bytes from 172.30.100.254: icmp_seq=2 ttl=128 time=0.307 ms
^C
--- 172.30.100.254 ping statistics ---
2 packets transmitted, 2 received, 0% packet loss, time 1000ms
rtt min/avg/max/mdev = 0.307/0.347/0.388/0.044 ms
[root@cricket-server Desktop]# ping 192.168.43.201 //无法ping通宿主机真实IP
connect: Network is unreachable
[root@cricket-server Desktop]# ping www.baidu.com //无法ping百度
ping: unknown host www.baidu.com
- 使用CRT软件连接虚拟机
- 连接成功