在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