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

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 作为唯一配置的设备?

答案1

假设配置文件位于所有这三个关键目录中,那么它们按照什么顺序进行使用评估,它们是否处于原子目录级别,或者每个单独的文件是否按顺序排列?

/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,所以我说的一定是正确的。;)

答案2

首先,我没有获得 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

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”中的配置文件。

答案3

/etc/sysconfig/network 是系统的全局网络配置文件。它包含默认路由和主机名

/etc/sysconfig/network-scripts/ifcfg-eth? 应该是您需要编辑的唯一文件,以便获得有效的网络配置。您可以根据以下情况手动编辑这些文件本文档或者使用 system-config-network 来启动并运行。

/etc/sysconfig/networking/profiles/ 仅用于system-config-network存储网络配置文件。默认情况下,该目录下的任何内容都不会被网络启动/停止脚本使用。

说实话,我不知道 /etc/sysconfig/networking/devices 是用来做什么的,也从来没有编辑过这个目录下的任何文件。

使用 RHEL 的网络脚本时,它们将从 /etc/sysconfig/network-scripts/ifcfg-eth? 获取信息。如果您使用 ifconfig 设置网络接口,请记住,您需要复制这些文件中的更改,以使您的配置在重新启动或service network restart

相关内容