RedHat 网络配置文件的优先顺序是什么?

VxJ*_*nxV 6 networking linux redhat

这一直困扰着我一段时间,因为我没有费心坐下来写下到底发生了什么。

我们的 RedHat 服务器网络配置随处可见。在安装了 RH4 和 RH5 的一组服务器中,我们/etc/sysconfig/networking/devices有时在/etc/sysconfig/networking/profiles/default、有时在、有时在 中管理网络信息/etc/sysconfig/network-scripts

我知道当“配置文件”开始发挥作用时,redhat-config-network应用程序(也称为 CentOS 和其他分支的 system-config-network)在使用时将文件写入那里,否则我相信默认值最初是在networking/devices.

假设配置文件驻留在所有这三个关键目录中,它们按使用顺序进行评估,它们是在原子目录级别上,还是对每个单独的文件进行排序?

意思是,如果我在最高排序的目录中有一个 ifcfg-eth1,没有别的,并且在第二个顺序目录中有一个 ifcfg-eth0,那么 eth0 配置会被考虑,还是会被跳过而 eth1 是唯一配置的设备?

小智 5

首先,我没有通过 RHEL 认证。:p

我检查了我的 RHEL 5.4 框之一:

1.在开机或网络服务重启时,会用到这个启动脚本“/etc/init.d/network”,这是一个普通的bash脚本,你可以自己详细查看。

2.关于启动脚本的两个主要事情:

a. 在继续之前检查“/etc/sysconfig/network”是否存在。

b.然后将目录更改为“/etc/sysconfig/network-scripts”,这意味着这是它引用的主目录并加载配置文件。

 16 if [ ! -f /etc/sysconfig/network ]; then
 17     exit 0
 18 fi
 19
 20 . /etc/sysconfig/network
 21
 22 if [ -f /etc/sysconfig/pcmcia ]; then
 23         . /etc/sysconfig/pcmcia
 24 fi
 25
 26
 27 # Check that networking is up.
 28 [ "${NETWORKING}" = "no" ] && exit 0
 29

 38
 39 CWD=`pwd`
 40 cd /etc/sysconfig/network-scripts
 41
 42 . ./network-functions
 43
 44 # find all the interfaces besides loopback.
 45 # ignore aliases, alternative configurations, and editor backup files
 46 interfaces=$(ls ifcfg* | \
 47             LANG=C sed -e "$__sed_discard_ignored_files" \
 48                        -e '/\(ifcfg-lo\|:\|ifcfg-.*-range\)/d' \
 49                        -e '/ifcfg-[A-Za-z0-9\._-]\+$/ { s/^ifcfg-//g;s/[0-9]/ &/}' | \
 50             LANG=C sort -k 1,1 -k 2n | \
 51             LANG=C sed 's/ //')
 52
Run Code Online (Sandbox Code Playgroud)

3.关于另外两个目录或最终一个“/etc/sysconfig/networking/”,RHEL手册中已经警告过这是一个禁飞区。我相信当您使用“system-config-network”时,它会按照 2(b) 将文件最终复制到主目录。

4.如果你真的需要非常确定,你可以在“/usr/share/system-config-network”中浏览“system-config-network”的开发人员python源代码。这可能会让您回到 (3) 该工具最终将在“/etc/sysconfig/network-scripts”中复制或写入配置文件。


Mar*_*ner 5

假设配置文件驻留在所有这三个关键目录中,它们按使用顺序进行评估,它们是在原子目录级别上,还是对每个单独的文件进行排序?

/etc/sysconfig/network-scripts/是唯一使用的目录。证明是开始阅读/etc/rc.d/init.d/network。忽略/etc/sysconfig/networking/

如果你好奇的型材系统是如何实现的看到updateNetworkScripts的功能/usr/share/system-config-network/netconfpkg/NC_functions.py

基本上,它使的硬链接ifcfg-*的文件/etc/sysconfig/network-scripts//etc/sysconfig/networking/devices//etc/sysconfig/networking/profiles/*

例如,鉴于您在个人资料中 foo

  • /etc/sysconfig/network-scripts/ifcg-eth0
  • /etc/sysconfig/networking/devices/ifcg-eth0
  • /etc/sysconfig/networking/profiles/foo/ifcg-eth0

都是同一个文件。

PS 我是 RHCE,所以我说的一定是正确的。;)