Файлы в /etc/network/interfaces.d игнорируются, но не в / etc / network / interfaces.

19

Для Ubuntu 16.04 LTS (GNU / Linux 3.10.96-113 armv7l)

Когда у меня есть следующее, моя статическая конфигурация игнорируется:

/ и т.д. / сеть / интерфейсы

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

Тем не менее, со следующим:

/ и т.д. / сеть / интерфейсы

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
Луис де Аркер
Просто любопытно, почему вы используете Linux 3.10 вместо самой последней версии?
wjandrea
Суть ядра в том, что я думал, что stystemd не вышел до более поздней версии, но я все еще на своем телефоне и не могу подтвердить.
WinEunuuchs2Unix
@ LuisdeArquer Я ответил на проблему с ядром ниже.
WinEunuuchs2Unix

Ответы:

28

Я думаю, что нашел это. Из руководства проблема, кажется, с source-directoryключевым словом. Похоже, что с 16.04 он больше не поддерживается.

Так что замена

source-directory /etc/network/interfaces.d

с

source /etc/network/interfaces.d/*

кажется, чтобы решить проблему.

Луис де Аркер
источник
Ха хорошо для тебя. +1 за упорство :) Не забудьте вернуться через два дня и пометить свой ответ как решение вопроса (нажмите на флажок рядом с вашим ответом и сделайте его зеленым)
WinEunuuchs2Unix
@ WinEunuuchs2Unix Спасибо за вашу помощь! :)
Луис де Аркер
Похоже, это решает ту же проблему с текущей (март 2018 года) версией raspbian .
iX3
1
Очень интересно. Odroid Ubuntu 16.04 также подвержен этой проблеме.
Маркус
5

У меня была примерно такая же проблема. Оказывается, source-directoryподдерживается в моей системе, но включает только файлы, имена файлов которых состоят из букв, цифр, тире и подчеркиваний.

Вот почему мой eth0.conf не был прочитан, потому что он содержал точку.

Сьерд
источник
За все это стоит - я проверить несколько машин на 14.04 и 16.04 , что файлы без расширения в /etc/network/interfaces.dполучить источников просто отлично от /etc/network/interfacesс source-directory /etc/network/interfaces.d...;) Также стоит отметить , что в нашей среде сетевой менеджер получает удалены с серверов; слишком непредсказуемо: D
Дзынь
2

Ядро 3.10 слишком старое для systemd IFF, использующего systemd-v230 или новее .

В соответствии с systemdтребованиями ядра в github по адресу ( github.com - systemd README ) вам нужна версия> = 3.12, если вы используете systemd-v230или новее:

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

Строки 37, 38 и 39 напечатаны выше.

Вы работаете под архитектурой ARM, о которой я, честно говоря, мало что знаю. Поиск в Google сообщает, что ваше armvl7устройство используется Raspberry Pi и является 32-битным ядром.

Обновление вашего ядра до современности

Если вам нужна последняя ( 21 октября 2016 г. ) защита безопасности «Dirty COW» ( что такое ошибка «Dirty COW» и как я могу защитить свою систему от нее? ), А также множество других исправлений безопасности, исправлений ошибок и системы улучшения ( после вашей версии 2013 ) вы должны быть на ядре 4.4.0-47.

К сожалению, я не знаю, как это сделать для RaspberryPi. Я связал этот вопрос с людьми, которые используют RaspberryPi, и попросил их критиковать этот ответ.

WinEunuuchs2Unix
источник
Просто чтобы подтвердить: ARM CPU в Pi действительно 32-битный.
Натан Осман
@NathanOsman Спасибо за подтверждение этой новой предметной области для меня :)
WinEunuuchs2Unix
+1 за указание на это. Однако, пожалуйста, посмотрите это . Systemd обычно поддерживает 2-х летнее ядро, так что даже вы можете быть правы, я был бы удивлен, что это коренная причина. Я проверю версию systemd, которую я использую. Но даже если это новая версия, разве это не похоже на проблему в пользовательском пространстве? Как ядро ​​может позволить вам прочитать один файл, но помешать вам прочитать другой? И конфигурация сети явно применяется без проблем во втором случае. [Больше на следующий комментарий]
Луис де Аркер
Обычно я просто обновляю ядро ​​и тестирую, но в этом случае это может быть сложно. Эта система работает на ODROID XU4, где безопасность не имеет значения, но смена ядер может занять некоторое время и, вероятно, не является долгосрочным решением из-за стабильности. Если нет другого решения, я могу попробовать его хотя бы для любопытства
:)
@NathanOsman На самом деле, сам процессор 64-битный на Raspberry 3 (но обычно он используется с 32-битными ядрами)
Луис де Аркер