2.7. 使用 NetworkManager 和 sysconfig 文件
/etc/sysconfig/
目录是配置文件和脚本的位置。除 VPN、移动宽带和 PPPoE 配置外,大多数网络配置信息都存储在 /etc/NetworkManager/
子目录中。例如,特定于接口的信息存储在 /etc/sysconfig/network-scripts/
目录下的 ifcfg
文件中。
对于全局设置,请使用
/etc/sysconfig/network
文件。VPN、移动宽带和 PPPoE 连接的信息存储在 /etc/NetworkManager/system-connections/
中。
在 Red Hat Enterprise Linux 7 中,如果您编辑了
ifcfg
文件,NetworkManager 会自动不知道该更改,且必须提示您注意到更改。如果您使用其中一个工具更新 NetworkManager 配置集设置,NetworkManager 不会实现这些更改,直到您使用该配置集重新连接为止。例如,如果使用编辑器更改了配置文件,NetworkManager 必须再次读取配置文件。
要确定这一点,以
root
用户身份输入 以重新载入所有连接配置集:
~]# nmcli connection reload
或者,只重新载入一个更改的文件
,ifcfg-ifname :
~]# nmcli con load /etc/sysconfig/network-scripts/ifcfg-ifname
请注意,您可以使用上述命令指定多个文件名。
使用 nmcli 等工具所做的更改不需要重新加载,但需要关闭关联的接口,然后再次启动:
~]# nmcli dev disconnect interface-name
~]# nmcli con up interface-name
有关 nmcli 的详情请参考 第 3.3 节 “使用 nmcli 配置 IP 网络”。
NetworkManager 不会触发任何网络脚本,尽管网络脚本在使用
ifup
命令时会尝试触发 NetworkManager。有关网络脚本的说明,请参阅 第 2.6 节 “将 NetworkManager 与网络脚本搭配使用”。
ifup
脚本是一个通用脚本,可执行一些操作,然后调用特定于接口的脚本,如 ifup-device_name
、ifup-wireless
、ifup-ppp
等。当用户手动运行 ifup enp1s0 时 :
如果查找名为
/etc/sysconfig/network-scripts/ifcfg-enp1s0
的文件;- 如果
ifcfg
文件存在,如果该文件中查找
TYPE
键,以确定要调用的特定类型脚本; ifup
会调用ifup-wireless
或ifup-device_name
,基于TYPE
;- 特定于类型的脚本进行特定于类型的设置;
- 特定于类型的脚本可让常见功能执行
IP
相关任务,如DHCP
或静态设置。
在引导时,/etc/init.d/network
会遍历所有 ifcfg
文件,以及每个具有 ONBOOT=yes 的文件读取所有 ifcfg 文件,它将检查 NetworkManager 是否已经从该 ifcfg
文件中启动 DEVICE。如果 NetworkManager 正在启动该设备或已启动该设备,则不再为该文件执行任何操作,并检查下一个 ONBOOT=yes 文件。如果 NetworkManager 尚未启动该设备,则 initscripts 会继续其传统行为并调用 ifup(如果是该
ifcfg
文件)。
其结果是,任何具有 ONBOOT=yes 的
ifcfg
文件应该在系统启动时(NetworkManager )或 initscripts 启动。这样可确保 NetworkManager 无法处理的某些传统网络类型(如 ISDN 或模拟的拨号模式ms)以及 NetworkManager 尚不支持的新应用程序仍能由 initscripts 正确启动,即使 NetworkManager 无法处理它们。
重要
建议不要将备份文件存储在
/etc
目录中的任何位置,或存储在与实时文件相同的位置,因为脚本在字面上执行 ifcfg-*。 仅排除这些扩展:.old
、.orig
、.rpmnew
、.rpmorig
和.rpmsave
。
有关使用 sysconfig 文件的详情请参考 第 3.5 节 “使用 ifcfg 文件配置 IP 网络” 和 ifcfg(8) man page。