今天突然所有的虚拟机都连不上了,情景:虚拟机ping不通外网。解决的同时,回顾下网络相关知识。
环境
VM搭建了3台虚拟机(centos7),NAT模式,静态IP
桥接、nat和主机模式
-
桥接模式(bridge)
在桥接模式,VMWare的虚拟机就是相当于一台独立的主机,与主机处于同等地位,可以访问网内的任何一台机器,
-
NAT模式(地址转换模式)
NAT模式主要解决IP资源缺少的情况,IPv4不够用才被弄出来的,因为没法给世界上全部的机器分配一个独特的公共IP,只能让某个局域网共享一个公有IP,要想访问公网,所以想要访问公网,你先把数据包发送给路由器,路由器把你数据包里面的原地址修改成了公网地址然后再发出去。这样服务器才知道返回包要发给谁。路由器收到返回包后再根据之前的地址映射把数据包传给你。让内部私网ip地址共用 WAN口的ip地址来上网。
实验
-
NAT模式下,为虚拟机设置静态IP,需要将DHCP服务关掉
-
设置固定的子网IP
主机VMnet8的ip变成了192.168.176.1
-
设置NAT网关、端口转发
在校园网的环境下,可以把校园网内的其他主机看成是外网的主机。其实,虚拟机采用NAT联网的方式,可以让我们联想到计算机网络的相关知识,可以把我们的主机看成是一部路由器,然后虚拟机就是处在一个局域网中的一台主机,共享路由器一个端口的地址对外网进行访问,但是外网要访问这部主机,就需要在路由器上做 端口映射
- 配置虚拟机的静态IP
- 给CentOS配置网关。
# vi /etc/sysconfig/network
NETWORKING=yes
GATEWAY=192.168.176.2
- 设置静态ip
# vi /etc/sysconfig/network-scripts/ifcfg-eno16777736
TYPE=Ethernet
#BOOTPROTO=dhcp
BOOTPROTO=static
DEFROUTE=yes
IPV4_FAILURE_FATAL=no
IPV6INIT=yes
IPV6_AUTOCONF=yes
IPV6_DEFROUTE=yes
IPV6_FAILURE_FATAL=no
NAME=eno16777736
UUID=0ae9d555-0fa5-427b-a186-ffe9c2e98aa4
DEVICE=eno16777736
ONBOOT=yes
PEERDNS=yes
PEERROUTES=yes
IPV6_PEERDNS=yes
IPV6_PEERROUTES=yes
IPADDR=192.168.176.102
DNS1=192.168.176.2
- 修改resolv.conf
#vi /etc/resolv.conf
nameserver 192.168.176.2
- 重启网卡。
# service network restart
- 主机模式(Host-Only)
Host-Only模式其实就是NAT模式去除了虚拟NAT设备,然后使用VMware Network Adapter VMnet1虚拟网卡连接VMnet1虚拟交换机来与虚拟机通信的,Host-Only模式将虚拟机与外网隔开,使得虚拟机成为一个独立的系统,只与主机相互通讯。其网络结构如下图所示:
其他
网关(gateway)
网关就是网络与网络之间连接的入口,
网关:那么多人向谁问路呢?当然是小区门卫(路由器),可是门卫在哪呢?它有地址,必须事先设定好。网关必须在局域网内部,我出了小区就路痴你叫我去xx路xx号问xx大爷我找不到。同时网关必须和外部网络有连接,这样才问得到。(知乎)
将虚拟机的dns设置成网关的地址,实际上中间由网关做了层中转,有它来找dns服务器解析,还是真正的dns服务器工作。
//Todo
为什么常见路由器的网关默认 IP 都是 192.168.1.1?
路由器和交换机的区别
- 交换机
交换机主要是实现大家通过一根网线上网,但是大家上网是分别拨号的,各自使用自己的宽带,大家各自上网没有影响,哪怕其他人在下载,对自己上网也没有影响,并且所有使用同一条交换机的电脑都是在同一个局域网内。 - 路由器
路由器同时具有交换机的功能,多了虚拟拨号的功能,局域网主机共用一个网络