Pliki w /etc/network/interfaces.d są ignorowane, ale same pliki / etc / network / interfaces nie są ignorowane

19

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

Gdy mam następujące elementy, moja konfiguracja statyczna jest ignorowana:

/ 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

Jednak z następującymi:

/ 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

konfiguracja statyczna jest ustawiana przy rozruchu (niezależnie od tego, co mam w interfejsach.d /).

Jeśli jest to istotne, używam reguły udev, aby zmienić nazwę interfejsu eth0 (kiedyś była to „enx001e063110c0” ...)

Luis de Arquer
źródło
Moje przeczucie ma coś wspólnego z wersją jądra 3.10, która może nawet nie być obsługiwana.
WinEunuuchs2Unix
To nie brzmi dla mnie jak problem z jądrem. Ale nie wiem jeszcze, jak działa inicjalizacja sieci po przejściu na systemd - nie mówiąc, że to problem systemowy
Luis de Arquer,
Ciekawe, dlaczego używasz Linuksa 3.10 zamiast najnowszej wersji?
wjandrea,
Najważniejsze w jądrze jest to, że myślałem, że system nie pojawił się aż do późniejszej wersji, ale wciąż jestem na telefonie i nie mogę potwierdzić.
WinEunuuchs2Unix
@LuisdeArquer Odpowiedziałem na problem z jądrem poniżej.
WinEunuuchs2Unix

Odpowiedzi:

28

Myślę, że to znalazłem. Z instrukcji wynika , że problem dotyczy source-directorysłowa kluczowego. Wygląda na to, że od 16.04 nie jest już obsługiwany.

Więc zastępuję

source-directory /etc/network/interfaces.d

z

source /etc/network/interfaces.d/*

wydaje się rozwiązać problem.

Luis de Arquer
źródło
Ha dla ciebie. +1 za wytrwałość :) Nie zapomnij wrócić za dwa dni i zaznaczyć swoją odpowiedź jako rozwiązującą pytanie (kliknij znacznik wyboru obok swojej odpowiedzi i
ustaw
@ WinEunuuchs2Unix Dziękujemy za pomoc! :)
Luis de Arquer
Wydaje się, że to rozwiązuje identyczny problem z obecną wersją raspbian (marzec 2018 r.) .
iX3
1
Bardzo interesujące. Problem ten dotyczy także Odroid Ubuntu 16.04.
Marcus
5

Miałem w przybliżeniu ten sam problem. Okazuje się, że source-directoryjest obsługiwany w moim systemie, ale obejmuje tylko pliki, których nazwy plików składają się z liter, cyfr, myślników i znaków podkreślenia.

Dlatego mój plik eth0.conf nie został odczytany, ponieważ zawiera kropkę.

Sjoerd
źródło
Mimo wszystko warto - zweryfikowałem na kilku komputerach w dniach 14.04 i 16.04, że pliki bez rozszerzeń /etc/network/interfaces.dsą dobrze pozyskiwane /etc/network/interfacesz source-directory /etc/network/interfaces.d...;) Warto również zauważyć, że w naszym środowisku menedżer sieci jest usuwany z serwerów; zbyt nieprzewidywalne: D
zadzwoń
2

Twoje jądro 3.10 jest za stare dla systemd IFF przy użyciu systemd-v230 lub nowszego .

Zgodnie z systemdwymaganiami jądra w github na ( github.com - systemd README ) potrzebujesz wersji> = 3.12, jeśli używasz systemd-v230lub nowszej:

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

Linie 37, 38 i 39 zostały wydrukowane powyżej.

Działasz w architekturze ARM, o której szczerze mało wiem. Wyszukiwarka Google mówi mi, że armvl7jest używany przez Raspberry Pi i jest 32-bitowym jądrem.

Aktualizacja jądra do współczesności

Jeśli chcesz mieć najnowszą ( 21 października 2016 r. ) Ochronę bezpieczeństwa „Dirty COW” ( Co to jest błąd „Dirty COW” i jak mogę zabezpieczyć mój system przed nim? ) Oraz wiele innych poprawek bezpieczeństwa, poprawek błędów i systemu ulepszenia ( po wersji 2013 ) powinieneś być w jądrze 4.4.0-47.

Niestety nie wiem, jak to zrobić dla RaspberryPi. Połączyłem to pytanie z ludźmi, którzy używają RaspberryPi i poprosiłem ich o krytykę tej odpowiedzi.

WinEunuuchs2Unix
źródło
Tylko dla potwierdzenia: procesor ARM w Pi jest rzeczywiście 32-bitowy.
Nathan Osman,
@NathanOsman Dziękujemy za potwierdzenie tej nowej dziedziny tematycznej dla mnie :)
WinEunuuchs2Unix
+1 za wskazanie tego. Proszę to jednak zobaczyć . Systemd ogólnie obsługuje 2-letnie jądra, więc nawet ty masz rację, byłbym zaskoczony, że jest to podstawowa przyczyna. Sprawdzę uruchomioną wersję systemową. Ale nawet jeśli jest to nowa wersja, czy to nie brzmi bardziej jak problem z przestrzenią użytkownika? Jak jądro może pozwolić ci odczytać jeden plik, ale powstrzymać cię przed czytaniem innego? A konfiguracja sieci jest wyraźnie zastosowana bez problemów w drugim przypadku. [Więcej na następny komentarz]
Luis de Arquer,
Normalnie po prostu aktualizowałbym jądro i testowałem, ale w tym przypadku może to być trudne. Ten system działa na ODROID XU4, gdzie bezpieczeństwo nie jest problemem, ale zmiana jądra może zająć trochę czasu i prawdopodobnie nie jest rozwiązaniem długoterminowym ze względu na stabilność. Jeśli nie pojawi się żadne inne rozwiązanie, mogę spróbować tylko z ciekawości
:)
@NathanOsman Właściwie sam procesor jest 64-bitowy na Raspberry 3 (ale zwykle jest używany z 32-bitowymi jądrami)
Luis de Arquer,