/etc/network/interfaces.d/* 在 /etc/network/interfaces 文件的顶部有什么作用?

Gre*_*reg 5 networking linux linux-networking

我注意到默认情况下,以下行包含在/etc/network/interfaces

source /etc/network/interfaces.d/*
Run Code Online (Sandbox Code Playgroud)

这条线的目的是什么,它实际上做了什么?

Pau*_*aul 6

从 Ubuntu接口手册页

以“source”开头的行用于包含来自其他文件的节,因此可以将配置拆分为多个文件。“源”一词后跟要获取的文件的路径。可以使用外壳通配符。目前只支持绝对路径名。

  • 它是一个绝对路径名(包括一个 shell 通配符)。“interfaces.d/*”将是一个相对的(路径不是从/开始) (3认同)

Ant*_*dge 6

讨论

source命令是.(源)语法的文本版本。这允许您从一个文件中包含/导入代码并将其合并到父文件中。但是,从 Ubuntu 16.04 的基本安装中不清楚的是为什么该source行会是第一个。这意味着,如果有人想使用接口的静态IPenp0s3之下,这是否意味着我必须首先注释掉/擦除iface线enp0s3在此处输入图片说明

文件file.d方案是很常见的。如果您运行 Apache HTTP Server,您可能已经看到apache24/conf/httpd.conf并且它附带了extra/目录,其中包含更多 *.conf 文件(通常是httpd-ssl.confhttpd-vhosts.confphp.confhttpd-default.conf等)。在这种情况下,不包括 shell 脚本,但原理基本相同。

为什么要这样做?

1. 关注点分离。

最好只搞乱一个接口配置,然后做一些可能影响多个接口的事情。通过将事情分开,实际上可以更容易地编写自动化的 shell 脚本。

您可以简单地使用基本文件通配符定位正确的文件,而不是/etc/network/interfaces使用sedgrep和筛选awk正确的界面/etc/network/interfaces.d/

通过将事情分开,你把事情搞砸的机会大大减少。

2. 从长远来看更好的组织。

如果您考虑一下 interfaces.d/ 保存的内容,它会保存网络接口配置的“实例”(可以相当详细)。这样,不必滚动所节省的时间可能会使interfaces.d/成为可行的方法。


结论

您是否正在计划专业设置?使用/etc/network/interfaces.d/保存的网络接口的配置(每个接口一个文件)。

在此处输入图片说明

您是一个在地下室使用 Linux(在具有一个界面的计算机上)的爱好者,并且不太关心让其他人的生活更轻松吗?使用/etc/network/interfaces并继续您的生活。注释掉默认配置设置,或完全删除它们。

请记住,尽管接口的手册页说接口配置命令是累积的,允许每个接口上有多个协议和多个 IP 地址(v4 和 v6)。在一天结束的时候,你决定什么进入/etc/network/interfaces. 喜欢默认的环回配置?将配置转储到文件中并将其放入/etc/netowork/interfaces.d/.

现在,对任何其他默认安装界面设置执行相同操作。请注意,/etc/network/interfaces“此文件不能用于更改接口配置!在 /etc/network/interfaces.d 中查找正确的接口文件。

/etc/netowork/interfaces.d/使用类似的约定命名文件。Red Hat 系统使用 ifcfg- 的接口文件前缀约定。

因此,我可能会在/etc/network/interfaces/d没有指导的情况下继续使用该约定。

/etc/network/interfaces.d/ifcfg-lo
/etc/network/interfaces.d/ifcfg-enp0s3
Run Code Online (Sandbox Code Playgroud)

一定要读man interfaces

祝你好运!