这个问题困扰了我一段时间,因为我懒得坐下来写下到底发生了什么。
我们的 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