/etc/network/interfaces.d中的文件被忽略,但/ etc / network / interfaces本身不被忽略


19

对于Ubuntu 16.04 LTS(GNU / Linux 3.10.96-113 armv7l)

当我具有以下内容时,我的静态配置将被忽略:

/ etc / network / interfaces

source-directory /etc/network/interfaces.d

/etc/network/interfaces.d/eth0

auto eth0
iface eth0 inet static
        address 192.168.40.112
        netmask 255.255.255.0
        gateway 192.168.40.1
        dns-nameservers 8.8.8.8

但是,具有以下内容:

/ etc / network / interfaces

auto eth0
iface eth0 inet static
        address 192.168.40.112
        netmask 255.255.255.0
        gateway 192.168.40.1
        dns-nameservers 8.8.8.8

source-directory /etc/network/interfaces.d

静态配置是在引导时设置的(独立于我在interfaces.d /中的配置)。

如果相关,我正在使用udev规则重命名eth0接口(它以前是“ enx001e063110c0” ...)


我的直觉与内核3.10版有关,甚至可能不再受支持。
WinEunuuchs2Unix

在我看来,这听起来真的不是内核问题。但我还一无所知,在对移动后如何初始化网络作品systemd -不是说这是一个systemd问题
路易斯·Arquer

只是好奇,为什么要运行Linux 3.10,而不是最新版本?
wjandrea

关于内核的要点是,我认为stystemd直到更高版本才发布,但我仍在电话中,无法确认。
WinEunuuchs2Unix

@LuisdeArquer我已经回答了下面的内核问题。
WinEunuuchs2Unix

Answers:


28

我想我找到了。从手册中看,问题似乎出在source-directory关键字上。从16.04开始,它似乎不再受支持。

所以更换

source-directory /etc/network/interfaces.d

source /etc/network/interfaces.d/*

似乎解决了问题。


哈对你有好处。+1表示坚韧:)不要忘记两天后回来并将您的答案标记为解决问题(单击您答案旁边的复选标记并使其
变为

@ WinEunuuchs2Unix感谢您的帮助!:)
Luis de Arquer

这似乎也解决了当前(2018年3月)的raspbian版本中的相同问题。
iX3

1
很有意思。Odroid Ubuntu 16.04也受此问题影响。
Marcus

5

我有大致相同的问题。事实证明source-directory,我的系统支持该文件,但仅包括文件名由字母,数字,破折号和下划线组成的文件。

这就是为什么我的eth0.conf未被读取的原因,因为它包含一个点。


一切都是值得的-我已经在14.04和16.04上的几台机器上进行了验证,这些文件中没有扩展名的文件都/etc/network/interfaces.d可以/etc/network/interfaces通过source-directory /etc/network/interfaces.d...;)来找到;)还值得注意的是,在我们的环境中,网络管理器已从服务器中删除;太不可预知的:d
天衣

2

对于systemd 使用systemd-v230或更高版本的IFF,您的内核3.10太旧了。

根据systemdgithub(github.com-systemd README)上的内核要求,如果使用的是systemd-v230更新版本,则需要版本> = 3.12 :

REQUIREMENTS:
        Linux kernel >= 3.12
        Linux kernel >= 4.2 for unified cgroup hierarchy support

第37、38和39行印在上方。

坦率地说,您正在ARM体系结构下运行。Google搜索告诉我您armvl7的Raspberry Pi已被使用,并且是32位内核。

将内核更新到现代

如果您需要最新的(2016年10月21日)“ Dirty COW”安全保护(什么是“ Dirty COW”错误,以及如何保护我的系统?)以及许多其他安全补丁,错误修复和系统改进(2013版之后),您应该位于内核4.4.0-47上。

不幸的是,我不知道如何为RaspberryPi做到这一点。我已将此问题链接到使用RaspberryPi的人,并请他们批评此答案。


只需确认一下:Pi中的ARM CPU确实是32位。
内森·奥斯曼

@NathanOsman感谢您为我确认这个新主题领域:)
WinEunuuchs2Unix

+1指出这一点。但是,请参阅。Systemd通常支持2y旧内核,因此即使您可能是对的,我也会惊讶这是根本原因。我将检查我正在运行的systemd版本。但是,即使它是新版本,听起来也不像是用户空间问题吗?内核如何允许您读取一个文件却又阻止您读取另一个文件?在第二种情况下,显然可以毫无问题地应用网络配置。[有关下
一条

通常,我只是升级内核并进行测试,但是在这种情况下可能会很困难。该系统在ODROID XU4上运行,安全性不是问题,但是更改内核可能需要一些时间,并且由于稳定性可能不是长期解决方案。如果没有其他解决方案,我可能会出于好奇而尝试
:)

@NathanOsman实际上,Raspberry 3上的CPU本身是64位(但通常与32位内核一起使用)
Luis de Arquer
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.