我注意到默认情况下包含以下行/etc/network/interfaces
:
source /etc/network/interfaces.d/*
这条线的用途是什么以及它实际上起什么作用?
答案1
从 Ubuntu接口手册页:
以“source”开头的行用于包含来自其他文件的节,因此配置可以拆分为多个文件。单词“source”后面是要获取的文件的路径。可以使用 Shell 通配符。目前仅支持绝对路径名。
答案2
讨论
该source
命令是(源)语法的文本版本.
。这允许您包含/导入一个文件中的代码并将其合并到父级中。但是,从 Ubuntu 16.04 的基本安装中不清楚的是为什么该source
行会排在第一位。意思是,如果有人想在下面的接口中使用静态 IP enp0s3
,这是否意味着我必须先注释掉/删除该iface
行enp0s3
?
这文件和文件.d方案非常常见。如果你运行 Apache HTTP 服务器,你可能已经看到过apache24/conf/httpd.conf并且它的侧踢额外的/目录,包含更多 *.conf 文件(通常httpd-ssl.conf,httpd-vhosts.conf,php.conf,httpd 默认配置文件等等)。这种情况下,不包括shell脚本,但是原理基本相同。
为什么要这么做?
1.关注点分离。
最好只弄乱一个接口配置,然后再做一些可能影响多个接口的事情。通过保持分离,实际上可以更轻松地编写自动化操作的 shell 脚本。
您无需通过/etc/network/interfaces
、sed
和grep
来筛选正确的界面,只需使用基本的文件通配符awk
就可以定位正确的文件。/etc/network/interfaces.d/
通过把事情分开,把事情搞糟的可能性就会大大降低。
2. 从长远来看,组织得更好。
如果你考虑一下interfaces.d/包含的内容,它包含网络接口配置的“实例”(可能相当复杂)。这样一来,节省下来的滚动时间可能会让接口.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
一定读man interfaces
。
祝你好运!