背景:今天突然远程不上自己VM上的Centos7, 使用root用户登录后 使用ifconfig命令查看ip 发现只有如下显示内容:
没有我熟悉的 eth0的信息;
然后、使用命令cd /etc/sysconfig/network-scripts 跳到network-scripts目录下发现只有 ifcfg-ens33 和 ifcfg-lo两个文件;
不知道哪里有问题了,而且原来一直使用的是dhcp来给vm上的centos系统分配ip,刚好也想给他分配个静态IP,因此开始了设置,采用NAT网络模式来设置静态IP具体步骤如下:
主题:NAT方式配置VM上CentOS7的静态ip
第一步:查看宿主主机的ip,主要查看宿主主机的VMnet8的ipv4地址、子网掩码等
控制面板 网络和Internet 网络连接
注意:本机的VMnet8的ipv4地址为:ipv4:192.168.145.1,子网掩码为255.255.255.0
备注:在这种联网方式下,宿主主机相当于一台路由器,给虚拟机分配IP地址,所以要保证二者IP在同一网段
第二步:打开VM12的虚拟网络编辑器进行设置
注意:子网:192.168.145.0
第三步:进行NAT设置 设置网关为192.168.145.2:
第四步:使用root登录到Centos7进行网络配置
首先 在network-scripts文件下创建一个ifcfg-eth0的文件,采用从 ifcfg-ens33复制过来
cd /etc/sysconfig/network-scripts;
//拷贝文件
cp ifcfg-ens33 ifcfg-eth0
其次 对ifcfg-eth0文件进行编辑,配置静态ip
vim ifcfg-etho
进行配置参数如下:
TYPE=Ethernet
BROWSER_ONLY=no
BOOTPROTO=static
IPADDR=192.168.145.110
BROADCAST=192.168.145.255
NETMASK=255.255.255.0
GATEWAY=192.168.145.2
NM_CONTROLLED=no
DEFROUTE=yes
IPV4_FAILURE_FATAL=no
IPV6INIT=yes
IPV6_AUTOCONF=yes
IPV6_DEFROUTE=yes
IPV6_FAILURE_FATAL=no
IPV6_ADDR_GEN_MODE=stable-privacy
NAME=eth0
HWADDR=00:0c:29:a3:20:6f
UUID=4df8a3b0-50fd-4f92-90f4-4e6aafd37058
DEVICE=eth0
ONBOOT=yes
注解:这些参数值不区分大小写,不区分单引号和双引号,甚至可以不用引号。
关键参数名称解释:
TYPE:配置文件接口类型。在/etc/sysconfig/network-scripts/目录有多种网络配置文件,有Ethernet 、IPsec等类型,网络接口类型为Ethernet。
BOOTPROTO: 设置为none禁止DHCP,设置为static启用静态IP地址,设置为dhcp开启DHCP服务
IPADDR: 配置的静态ip地址(要和NAT中设置的网关地址(192.168.145.2)在一个网段)
BROADCAST: 广播地址 最后以255结尾
NETMASK: 子网掩码
GATEWAY: 网关地址 (要和NAT中设置的网关一模一样)
NAME: 网络连接的名字
DEVICE : 网络接口名称
ONBOOT: 系统启动时是否激活该网络接口
HWADDR: MAC地址
UUID : 唯一标识
NM_CONTROLLED:是否由Network Manager控制该网络接口。修改保存后立即生效,无需重启,建议为no。
DEFROUTE:就是default route,是否把这个eth设置为默认路由
IPV4_FAILURE_FATAL=yes : 如果ipv4配置失败禁用设备
IPV6_FAILURE_FATAL=yes : 如果ipv6配置失败禁用设备
IPV6INIT:是否执行IPv6
进而:配置DNS服务器地址
保险设置:
(1) 在 /etc/sysconfig/network-scripts下的ifcfg-eth0文件中加入dns设置
/etc/sysconfig/network-scripts/ifcfg-eth0
//增加DNS设置 是你设置的NAT的网关的值
DNS1=192.168.145.
#也可以直接配置成宿主机使用的DNS
#nameserver ***.150.150.150
(2) 在/etc/resolv.conf中加入域名解析服务器地址
/etc/resolv.conf
nameserver 192.168.140.2
#也可以直接配置成宿主机使用的DNS
#nameserver ***.150.150.150
不保险设置:只设置/etc/resolv.conf文件,网上说在cent0S早期版本,如果只设置这个,可能在从起网络时,文件被重置,目前我的CentOS7 只设置这个没有问题;
在vm下的Windows系统下设置DNS值为:
或者在dns上设置成自己宿主机使用的dns地址
查看宿主机的dns地址:
cmd
ipconfig/all
将查到的dns配置也就是自己宿主机上用的DNS服务器地址配置了;
最后: 使ifcfg-eth0网络接口生效:
ifconfig ifcfg-eth0 up
问题说明: 由于我最开始没有配置MAC地址值,也就是没有下面这一行;
HWADDR=00:0c:29:a3:20:6f
导致我在 ifconfig命令时没有ipv4的信息,只有ipv6的如下:
使用 ip addr查看mac地址值
将MAC地址的值加入到 ifcfg-eth0文件中,再ifconfig发现正常
==================================================================
附注内容:
NAT模式 网桥模式 和路由模式三者的区别是什么:
这里有一篇挺好的文章:NAT模式 网桥模式 路由模式的区别
NAT模式
如果内网使用了一个私有的网络地址段,比如10.x.x.x/172.16.x.x/192.168.x.x,并且需要访问互联网,则路由器需要工作在NAT 模式下。路由器工作在NAT 模式时,内网中的出访数据包的源地址将被转换为路由器WAN 口配置的合法IP地址。通俗说就是多个内网的IP地址转化成一个或者多个外网的IP地址出访。目前包括家庭用户和企业用户在内的绝大多数用户使用的是这种工作模式。
路由模式
如果内网的主机全部是合法的公网地址,则可以将路由器WAN口配置在路由模式(Router Mode)下。
路由器工作在路由模式时,内网中出访数据包的源地址将使用本机的合法公网地址,不会被转换为路由器WAN 口配置的IP 地址。(即内网的电脑都是公网的IP地址,不转化为WAN口配置的IP地址访问外网)。目前使用这种工作模式的用户比较少,一般以企业用户为主,家庭用户极为少见。
桥接模式
桥接模式(Bridge Mode)能在不改变原有网络结构的前提下,为局域网提供一些管理功能,比如上网行为管理。在这种模式下,飞鱼星路由器相当于一个交换机,在数据链路层进行数据转发,并不需要配置IP,对用户而言桥接模式的路由器是透明的。
网关:
网关(Gateway)就是一个网络连接到另一个网络的“关口”。
按照不同的分类标准,网关也有很多种。TCP/IP协议里的网关是最常用的,在这里我们所讲的“网关”均指TCP/IP协议下的网关。
那么网关到底是什么呢?网关实质上是一个网络通向其他网络的IP地址。比如有网络A和网络B,网络A的IP地址范围为“192.168.1.1~192. 168.1.254”,子网掩码为255.255.255.0;网络B的IP地址范围为“192.168.2.1~192.168.2.254”,子网掩码为255.255.255.0。在没有路由器的情况下,两个网络之间是不能进行TCP/IP通信的,即使是两个网络连接在同一台交换机(或集线器)上,TCP/IP协议也会根据子网掩码(255.255.255.0)判定两个网络中的主机处在不同的网络里。而要实现这两个网络之间的通信,则必须通过网关。
如果网络A中的主机发现数据包的目的主机不在本地网络中,就把数据包转发给它自己的网关,再由网关转发给网络B的网关,网络B的网关再转发给网络B的某个主机。网络B向网络A转发数据包的过程也是如此。
所以说,只有设置好网关的IP地址,TCP/IP协议才能实现不同网络之间的相互通信。那么这个IP地址是哪台机器的IP地址呢? 网关的IP地址 是具有路由功能的设备的IP地址,具有路由功能的设备有路由器、启用了路由协议的服务器(实质上相当于一台路由器)、代理服务器(也相当于一台路由器)。
参考文献:
1》VMware中CentOS配置静态IP进行网络访问(NAT方式和桥接模式)
2》Centos7中用ifconfig命令,只有lo和virbr0,没有eth0,同时service network restart 失败解决方法
3》centos7 无法启动网络(service network restart)错误解决办法
4》飞鱼星讲坛(二)丨NAT模式、路由模式和桥接模式有什么区别?
5》Linux中ifcfg-eth0配置详解