天天看點

RHEL/CentOS 7中的網絡暨network.service與NetworkManager.service詳解

在RHEL/CentOS 6及以前的版本中,網絡功能是通過一系列網絡相關的腳本檔案實作,如/etc/init.d/network檔案,及如下/sbin/if*檔案等。

[[email protected] ~]# 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

繼續閱讀