1.9. 使用 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
该命令接受多个文件名。这些命令需要 root 授权。有关用户授权及获取授权的信息,请查看《Red Hat Enterprise Linux 7 系统管理员》su(1)sudo(8) man page。
可使用类似 nmcli 的工具做出更改,这些工具不要求断开关联接口连接,然后再重新连接。该命令的运行格式如下:
nmcli dev disconnect interface-name
后接:
nmcli con up interface-name
NetworkManager 不会触发任何网络脚本,但在其运行时如果使用 ifup 命令,网络脚本会尝试启动 NetworkManager。有关网络脚本的说明,请查看 第 1.8 节 “NetworkManager 及网络脚本”
ifup 脚本是一个通用脚本,可完成一些任务,并调用具体接口脚本,比如 ifup-ethXifup-wirelessifup-ppp 等等。用户手动运行 ifup eth0 后:
  1. ifup 会查找名为 /etc/sysconfig/network-scripts/ifcfg-eth0 的文件;
  2. 如果存在 ifcfg 文件,ifup 会在那个文件中查找 TYPE 密钥,以确定要调用的脚本类型;
  3. ifup 根据 TYPE 调用 ifup-wirelessifup-ethifup-XXX
  4. 具体类型脚本执行具体类型设置;
  5. 然后具体类型脚本让通用功能执行与 IP 相关的任务,比如 DHCP 或静态设置。
引导时,/etc/init.d/network 会读取所有 ifcfg 文件,并检查每个包含 ONBOOT=yes 的文件,确定是否已在 ifcfg 列出的设备中启动 NetworkManager。如果 NetworkManager 正在启动或已经启动那个设备,则不需要对那个文件进行任何操作,然后检查下一个包含 ONBOOT=yes 的文件。如果 NetworkManager 尚未启动那个设备,则 initscripts 会继续采用传统方式运行,并为那个 ifcfg 文件调用 ifup
最终的结果是在系统启动后,会使用 NetworkManager 或 iniscripts 启动所有包含 ONBOOT=yesifcfg 文件。这样可保证在 NetworkManager 无法处理某些传统的网络类型时,比如 NetworkManager 不处理的类型(ISDN 或模拟拨号调制解调器),以及 NetworkManager 尚不支持的新应用程序时,仍可使用 initscripts 正常启动它们。

注意

建议不要在保存目前使用的 ifcfg 文件的同一位置保存其备份文件。该脚本会运行 ifcfg-*,扩展名 .old.orig.rpmnew.rpmorig.rpmsave 除外。最好是不要将备份文件保存在 /etc/ 目录下。