http://dgd2010.blog.51cto.com/1539422/1592821/

为什么要进行一次测试?

在使用CentOS7的过程中发现网络部分有很多与CentOS6所不同的地方。

1.CentOS7默认使用NetworkManager管理系统的网络而不再是network

2.NetworkManager默认使用的是nmtui或nmcli进行管理,不再是sysconfig中的ifcfg配置文件,但这些ifcfg文件依然被支持

3.默认NetworkManager和network同时在系统中工作,但NetworkManager要先于network启动

4.实际使用过程中发现即使在ifcfg配置文件中使用了静态IP地址以及静态DNS,在NetworkManager中依然使用自动获取(DHCP)的方式,自动获取IP地址和DNS服务器地址

5.NetworkManager默认使用ip命令来配置网络而不是ifcfgxxx,ip命令配置的网络重启后失效

测试环境:

测试虚拟化环境:VMware ESXi 5.1.0

操作系统:CentOS7.0(1406-x86_64),采用最小化安装(默认即是NetworkManager管理网络服务)

网络环境:多vlan的网络环境、其中一vlan设有DHCP服务

测试结果:

  1. VMware VMXNET3 Ethernet Controller对应的网卡是ens160, VMware E1000 Ethernet Controller对应的网卡名称为ens32,CentOS7默认不支持VMXNET2,如果采用VMXNET3,则网卡编号为ens160、ens192和ens224,如果采用E1000则网卡编号为ens32、ens33、ens34。

  2. 如果在安装操作系统时在网络连接步骤中设定的是静态IP地址,则在ifcfg的配置文件中将会将IPADDR、PREFIX、GATEWAY的后面加一个0表示,并且将BOOTPROTO的值设为none,如果绑定一个公网IP地址的话将后面的数字将上加。

  3. ifcfg文件中默认使用“NAME=”而不是“DEVICE=”,ifup和ifdown这两个命令都是使用的是“DEVICE=”,测试过程中发现并不需要将ifcfg文件中默认使用的“NAME=”换成“DEVICE=”,network服务照样可以启动,但只有BOOTPROTO的值为none而不是dhcp时,nmcli中ipv4.method的值才是manual。

  4. 手动修改ifcfg文件不能触发NetworkManager应用这些变更,需要使用nmcli connection reload,或者使用systemctl restart NetworkManager.service,例如ifcfg中将BOOTPROTO从dhcp改为static,需要注意的是nmcli connection reload并不能代替systemctl restart NetworkManager.service,因为nmcli中的任何更改在save persistent之后将对ifcfg文件进行修改,但nmcli中的修改在系统中不会立刻生效,依然需要systemctl restart NetworkManager.service,此时通过ip a命令发现原先修改前的配置和修改后的配置都会留在系统中。

  5. 如果将NetworkManager禁用掉,那么nmcli、nmtui等命令将不再可用。

  6. nmcli中的结果集可能会叠加,例如IP地址或DNS服务器地址可能存在多个,remove只能删除一个配置属性但不能删除整个结果集。

  7. 偶然遇到NetworkManager中的连接名称不是网卡名称的情况,可以用nmcli手动更改。

测试总结:

NetworkManager不如network使用起来方便和不出错,因此在不明就里之前建议谨慎使用NetworkManager。

tips:

在配置服务器时尽可能按照如下提示进行配置,以免除NetworkManager 所带来的麻烦和困扰

  1. 在安装操作系统时将网络配置好,打算采用动态IP就使用dhcp,打算采用静态IP地址就手动设置,提前设定好DNS服务器地址,或将DNS地址写进文件并设定好计划任务或者开机自动更新配置

  2. 尽可能的将DHCP关掉,特别是需要静态IP地址的服务器不要使用DHCP来获取哪些可能没有使用的地址,以免遇到上述测试结果中遇到的nmcli的结果集存在重复的情况

  3. 将NetworkManager禁用掉使用network,并不需要将ifcfg文件中默认使用的“NAME=”换成“DEVICE=”,network服务照样可以启动,网络在ifcfg配置文件配置正确的情况下依然可用,由于systemctl与services的不同,systemctl status network时将显示此服务中命令行的运行状态,例如network调用的是/etc/rc.d/init.d/network start,正确情况下此命令会返回代码为0并退出,这并不意味着network服务已经停止,用户只需要关心此状态中是否是绿色的active即可。

最新文章

  1. 使用IntelliJ IDEA编写Scala在Spark中运行
  2. 获取wifi信息
  3. Asp.Net验证码3
  4. mmsql查看最近操作日志
  5. Java工具类:获取long型唯一ID
  6. Cmake 脚本对预处理器的宏定义
  7. 移动web前端的一些硬技能(二)动手前必须掌握的基本常识
  8. BZOJ 3040: 最短路(road) ( 最短路 )
  9. Web端的Tab控件在切换Tab时Load数据出错的处理
  10. 关于Eclipse+SVN 开发配置
  11. myeclipse的快捷键
  12. Python小爬虫
  13. 为什么说Java程序员到了必须掌握Spring Boot的时候?
  14. faster-rcnn 笔记
  15. Python解释器有哪些?Python解释器种类
  16. python之字符串常用的方法
  17. Swift5 语言指南(十一) 结构和类
  18. jQuery-contextMenu使用教程
  19. python中判断实例可迭代地几种方式
  20. Python自定义状态码枚举类

热门文章

  1. Ubuntu16.04安装wireshark
  2. INNODB索引与算法
  3. 20145118 《Java程序设计》 第2周学习总结
  4. 20145314郑凯杰《网络对抗技术》实验1 逆向及Bof基础实践
  5. 20145325张梓靖 《Java程序设计》第6周学习总结
  6. Windows10系统远程桌面连接出现卡顿如何解决
  7. Redis之持久化
  8. Learning Ansible with Vagrant
  9. 递归--练习11--noi9273 PKU2506Tiling
  10. 获取和设置HTML标签中的数据