我试图理解为什么我的 CentOS 6.4 服务器上有 3 个 ifcfg-eth0,它们是指向同一个文件的硬链接。
有人知道为什么吗?
$ ll /etc/sysconfig/network-scripts/ifcfg-eth0
-rw-r--r--. **3** root root 166 Jul 31 2012 /etc/sysconfig/network-scripts/ifcfg-eth0
$ find / -type f -name ifcfg-eth0 -exec openssl dgst -md5 {} \;
MD5(/etc/sysconfig/network-scripts/ifcfg-eth0)= **c5cd670606e1feb78752a9644f021c1f**
MD5(/etc/sysconfig/networking/devices/ifcfg-eth0)= **c5cd670606e1feb78752a9644f021c1f**
MD5(/etc/sysconfig/networking/profiles/default/ifcfg-eth0)= **c5cd670606e1feb78752a9644f021c1f**
答案1
2 转/分钟
这些文件是 2 个 RPM 软件包的残余。如果运行以下命令,您可以查看哪些 RPM 负责这些目录:
# centos 6.4
$ for i in /etc/sysconfig/networking /etc/sysconfig/network-scripts; do echo "==> $i"; rpm -qf $i;done
==> /etc/sysconfig/networking
system-config-network-tui-1.6.0.el6.2-1.el6.noarch
initscripts-9.03.31-2.el6.centos.1.x86_64
==> /etc/sysconfig/network-scripts
initscripts-9.03.31-2.el6.centos.1.x86_64
这 2 个 RPM 相当老了,我有一个古老的 Fedora Core 3 系统,这两个目录的所有者是initscripts
,因此看起来是原始所有者。
# fedora core 3
$ rpm -qf /etc/sysconfig/networking /etc/sysconfig/network-scripts/
initscripts-7.93.7-1
initscripts-7.93.7-1
在某些时候,该工具的配置文件system-config-network
也会扩展到这些目录中:
# centos 6.4
$ rpm -ql system-config-network-tui-1.6.0.el6.2-1.el6.noarch|grep "^/etc/.*/network.*"
/etc/sysconfig/networking
/etc/sysconfig/networking/devices
/etc/sysconfig/networking/profiles
/etc/sysconfig/networking/profiles/default
使用上述目录的 GUI
顺便说一句,GUI 同样令人困惑,但实际上只有一个 GUI 可以检测它是在 X 环境中还是在终端中调用,并为给定环境显示适当的“GUI”。
$ more /usr/sbin/system-config-network
#!/bin/sh
if [ -n "$DISPLAY" -a -f /usr/sbin/system-config-network-gui ]; then
exec /usr/sbin/system-config-network-gui "$@"
else
exec /usr/sbin/system-config-network-tui "$@"
系统配置网络 GUI
系统配置网络tui
笔记:GUI 的 tui 版本和 gui 版本都具有“配置文件”和“设备”的概念,这些信息通过这些概念保存在目录中/etc/sysconfig/networking/*
。
ifcfg-* 文件怎么样?
所以我们剩下的就是一堆令人困惑的乐趣。以下服务和脚本依赖于这些ifcfg-*
文件,这些文件对于 Red Hat 机器上的网络管理来说非常关键:
- 网络服务
/etc/init.d/network
- 向上脚本
/etc/sysconfig/network-scripts/ifup
- 向下脚本
/etc/sysconfig/network-scripts/ifdown
那么 GUI 又如何呢?
上面提到的 GUI 确实是古董,它们仍然可以工作,但一般来说,如果您不使用 NetworkManager,从长远来看,通过管理
/etc/sysconfig/network-scripts/ifcfg-*
.除非您正在进行基本类型的网络配置,否则设置网络时可用的某些特性/功能可能无法通过 tui/gui 访问,所以实际上
NetworkManager
或ifcfg-*
文件是最好的选择。tui/gui 工具最终只是
/etc/sysconfig/network-scripts/ifcfg-*
通过您最初询问的链接将数据写入,因此您不妨直接编辑文件。
答案2
之前NetworkManager
是一件事,红帽有(我猜你的输出中仍然有,我有目录,但在我检查的两台服务器上没有文件)一个sysconfig-*
工具,你可以用来指定要使用的网络配置文件,之后您只需重新启动network
服务,其他设置就会生效。
输出中的最后一个find
是配置文件的 ifcfg default
,顶部一个是network
服务实际看起来的位置,devices
我从来没有搞过,所以我不知道它们应该服务于 sysconfig 过程的哪一部分,但如果它在其中,networking
那就是该计划的一部分。这是非常古老的东西,现在不太可能相关,因为 NM 可以很好地处理定期移动到不同网络的机器(如笔记本电脑)上的网络配置。
编辑: 这里是 CentOS 邮件列表中对同一事物的另一个描述。