Các tệp trong /etc/network/interfaces.d bị bỏ qua, nhưng không phải / etc / network / giao diện


19

Đối với Ubuntu 16.04 LTS (GNU / Linux 3.10.96-113 armv7l)

Khi tôi có những điều sau đây, cấu hình tĩnh của tôi bị bỏ qua:

/ etc / mạng / giao diện

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

Tuy nhiên, với những điều sau đây:

/ etc / mạng / giao diện

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

cấu hình tĩnh được đặt khi khởi động (độc lập với những gì tôi có trong giao diện.d /).

Trong trường hợp có liên quan, tôi đang sử dụng quy tắc udev để đổi tên giao diện eth0 (trước đây là "enx001e063110c0" ...)


Linh cảm của tôi là một cái gì đó để làm với Kernel phiên bản 3.10 thậm chí có thể không được hỗ trợ nữa.
WinEunuuchs2Unix

Nó không thực sự có vẻ như là một vấn đề hạt nhân đối với tôi. Nhưng tôi vẫn chưa biết cách khởi tạo mạng hoạt động sau khi chuyển sang systemd - không nói đó là vấn đề hệ thống
Luis de Arquer

Chỉ tò mò, tại sao bạn chạy Linux 3.10 thay vì phiên bản mới nhất?
wjandrea

Điểm quan trọng về kernel là tôi nghĩ rằng stystemd đã không xuất hiện cho đến phiên bản mới hơn nhưng tôi vẫn sử dụng điện thoại và không thể xác nhận.
WinEunuuchs2Unix

@LuisdeArquer Tôi đã trả lời vấn đề kernel bên dưới.
WinEunuuchs2Unix

Câu trả lời:


28

Tôi nghĩ rằng tôi đã tìm thấy nó. Từ hướng dẫn , vấn đề dường như là với source-directorytừ khóa. Có vẻ như, kể từ ngày 16.04, nó không được hỗ trợ nữa.

Vì vậy, thay thế

source-directory /etc/network/interfaces.d

với

source /etc/network/interfaces.d/*

dường như để khắc phục vấn đề.


Hà tốt cho bạn. +1 cho sự kiên trì :) Đừng quên quay lại sau hai ngày và đánh dấu câu trả lời của bạn là giải câu hỏi (nhấp vào dấu kiểm bên cạnh câu trả lời của bạn và làm cho nó thành màu xanh lá cây)
WinEunuuchs2Unix

@ WinEunuuchs2Unix Cảm ơn sự giúp đỡ của bạn! :)
Luis de Arquer

Điều này dường như cũng khắc phục vấn đề tương tự với phiên bản hiện tại (tháng 3 năm 2018) của raspbian .
iX3

1
Rất thú vị. Odroid Ubuntu 16.04 cũng bị ảnh hưởng bởi vấn đề này.
Marcus

5

Tôi đã có cùng một vấn đề. Hóa ra source-directorynó được hỗ trợ trên hệ thống của tôi, nhưng chỉ bao gồm các tệp có tên tệp bao gồm chữ cái, số, dấu gạch ngang và dấu gạch dưới.

Đó là lý do tại sao eth0.conf của tôi không được đọc, vì nó chứa một dấu chấm.


Đối với tất cả những gì của giá trị - Tôi đã xác minh với một số máy trên 14.04 và 16.04 rằng file w / o phần mở rộng trong /etc/network/interfaces.dnhận nguồn gốc tốt từ /etc/network/interfacesvới source-directory /etc/network/interfaces.d...;) Cũng đáng chú ý là trong môi trường của chúng tôi mạng quản lý sẽ bị gỡ khỏi các máy chủ; quá khó đoán: D
tink

2

Kernel 3.10 của bạn quá cũ đối với systemd IFF khi sử dụng systemd-v230 hoặc mới hơn .

Theo systemdyêu cầu kernel trong github tại ( github.com - systemd README ), bạn cần phiên bản> = 3.12 nếu bạn đang sử dụng systemd-v230hoặc mới hơn:

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

Dòng 37, 38 và 39 được in ở trên.

Bạn đang chạy theo kiến ​​trúc ARM mà tôi thực sự biết rất ít về. Tìm kiếm của Google cho tôi biết armvl7Raspberry Pi của bạn được sử dụng và là kernel 32 bit.

Cập nhật kernel của bạn lên thời hiện đại

Nếu bạn muốn bảo vệ bảo mật "Dirty COW" mới nhất ( ngày 21 tháng 10 năm 2016 ) ( Lỗi "Dirty COW" là gì và làm cách nào tôi có thể bảo mật hệ thống của mình chống lại nó? ) Cộng với một loạt các bản vá bảo mật, sửa lỗi và hệ thống khác cải tiến ( sau phiên bản 2013 của bạn ), bạn nên sử dụng kernel 4.4.0-47.

Thật không may, tôi không biết làm thế nào để làm điều đó cho RaspberryPi. Tôi đã liên kết câu hỏi này với những người sử dụng RaspberryPi và đã yêu cầu họ phê bình câu trả lời này.


Chỉ cần xác nhận: CPU ARM trong Pi thực sự là 32 bit.
Nathan Osman

@NathanOsman Cảm ơn bạn đã xác nhận lĩnh vực chủ đề mới này cho tôi :)
WinEunuuchs2Unix

+1 để chỉ ra điều này. Tuy nhiên, xin vui lòng xem điều này . Systemd thường hỗ trợ 2y kernel cũ, vì vậy ngay cả bạn có thể đúng, tôi sẽ ngạc nhiên khi đây là nguyên nhân gốc rễ. Tôi sẽ kiểm tra phiên bản systemd tôi đang chạy. Nhưng ngay cả khi đó là phiên bản mới, nó không giống vấn đề không gian người dùng hơn? Làm thế nào kernel có thể cho phép bạn đọc một tập tin nhưng ngăn bạn đọc một tập tin khác? Và cấu hình mạng được áp dụng rõ ràng mà không có vấn đề trong trường hợp thứ hai. [Thêm về nhận xét tiếp theo]
Luis de Arquer

Thông thường tôi sẽ chỉ nâng cấp kernel và kiểm tra, nhưng nó có thể khó khăn trong trường hợp này. Hệ thống này chạy trên ODROID XU4, trong đó bảo mật không phải là vấn đề đáng lo ngại, nhưng việc thay đổi hạt nhân có thể mất một thời gian và có lẽ không phải là giải pháp lâu dài do tính ổn định. Nếu không có giải pháp nào khác được đưa ra, tôi có thể thử nó mặc dù chỉ vì tò mò :)
Luis de Arquer

@NathanOsman Trên thực tế, bản thân CPU là 64 bit trên Raspberry 3 (nhưng thông thường nó được sử dụng với hạt nhân 32 bit)
Luis de Arquer
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.