Red Hat Training

A Red Hat training course is available for Red Hat Enterprise Linux

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 时
  1. 如果查找名为 /etc/sysconfig/network-scripts/ifcfg-enp1s0 的文件;
  2. 如果 ifcfg 文件存在,如果该文件中查找 TYPE 键,以确定要调用的特定类型脚本;
  3. ifup 会调用 ifup-wirelessifup-device_name,基于 TYPE
  4. 特定于类型的脚本进行特定于类型的设置;
  5. 特定于类型的脚本可让常见功能执行 IP相关任务,如 DHCP 或静态设置。
在引导时,/etc/init.d/network 会遍历所有 ifcfg 文件,以及每个具有 ONBOOT=yes 的文件读取所有 ifcfg 文件,它将检查 NetworkManager 是否已经从该 ifcfg 文件中启动 DEVICE。如果 NetworkManager 正在启动该设备或已启动该设备,则不再为该文件执行任何操作,并检查下一个 ONBOOT=yes 文件。如果 NetworkManager 尚未启动该设备,则 initscripts 会继续其传统行为并调用 ifup(如果是该 ifcfg 文件)。
其结果是,任何具有 ONBOOT=yesifcfg 文件应该在系统启动时(NetworkManager )或 initscripts 启动。这样可确保 NetworkManager 无法处理的某些传统网络类型(如 ISDN 或模拟的拨号模式ms)以及 NetworkManager 尚不支持的新应用程序仍能由 initscripts 正确启动,即使 NetworkManager 无法处理它们。
重要
建议不要将备份文件存储在 /etc 目录中的任何位置,或存储在与实时文件相同的位置,因为脚本在字面上执行 ifcfg-* 仅排除这些扩展:.old 、.orig 、.rpmnew 、.rpmorig 和.rpmsave
有关使用 sysconfig 文件的详情请参考 第 3.5 节 “使用 ifcfg 文件配置 IP 网络”ifcfg(8) man page。