RHEL/CentOS 7中的网络暨network.service与NetworkManager.service详解

在RHEL/CentOS 6及以前的版本中,网络功能是通过一系列网络相关的脚本文件实现,如/etc/init.d/network文件,及如下/sbin/if*文件等。

[root@myserver ~]# ll /sbin/if*
-rwxr-xr-x. 1 root root  3056 Apr 11  2018 /sbin/ifcfg
-rwxr-xr-x. 1 root root 82000 Aug  3  2017 /sbin/ifconfig
-rwxr-xr-x. 1 root root  1651 Jan  2  2018 /sbin/ifdown
-rwxr-xr-x. 1 root root 20216 Aug  4  2017 /sbin/ifenslave
-rwxr-xr-x. 1 root root 41568 Apr 11  2018 /sbin/ifstat
-rwxr-xr-x. 1 root root  5010 Jan  2  2018 /sbin/ifup

从RHEL/CentOS 7开始,网络功能默认由NetworkManager以服务的形式提供。NetworkManager是一个能够动态控制和配置网络的守护进程,管理网络服务和网络连接,对应NetworkManager.service服务,其配置文件/etc/NetworkManager/NetworkManager.conf(默认为空,无需任何配置)。

虽然RHEL/CentOS 6中的网络相关的脚本文件仍然以network.service的形式被支持,但是network.service是secondary,NetworkManager.service才是primary。

1. network.service

network.service是系统提供的服务之一,以兼容遗留的网络功能。该服务的运行也被纳入SystemD的管理,命令如下:
systemctl start|stop|restart|status network

事实上,在/etc/init.d/network脚本中,systemctl restart|reload|force-reload network是等价的。

也可以设置network.service在系统启动时自动加载:
systemctl enable network

注意,系统启动时,/etc/init.d/network会读取ifcfg文件,并检测NetworkManager是否已经已经启动该设备。如果NetworkManager已经启动该设备,则/etc/init.d/network脚本什么也不做;否则/etc/init.d/network会启动该设备。

2. NetworkManager.service

NetworkManager默认不会执行任何脚本。对于NetworkManager可运行的定制脚本,必须具备如下条件,NetworkManager才能按照字母顺序执行这些脚本:

  • 位于/etc/NetworkManager/dispatcher.d/目录下
  • root用户的可执行权限

3. 网络配置文件

无论是network.service,还是NetworkManager.service,都能够使用如下网络相关的配置文件。

1) 全局配置文件
/etc/sysconfig/network

2) 网卡相关的配置文件/etc/sysconfig/network-scripts/
/etc/sysconfig/network-scripts/ifcfg-ethX
/etc/sysconfig/network-scripts/route-ethX
/etc/sysconfig/network-scripts/route6-ethX
/etc/sysconfig/network-scripts/rule-ethX
/etc/sysconfig/network-scripts/rule6-ethX
...

修改网络配置文件后,可以通过NetworkManager.service的nmcli命令,重新加载网络连接:

nmcli connection reload

也可以通过network.service,重新加载网络连接:

systemctl restart network

 

参考链接:

https://access.redhat.com/documentation/en-us/red_hat_enterprise_linux/7/html-single/networking_guide/index

https://wiki.gnome.org/Projects/NetworkManager

 

你可能感兴趣的:(Linux)