Sự khác nhau giữa /etc/dhcpcd.conf và / etc / network / interface?


63

Tôi có cấu hình này trong / etc / mạng / giao diện :

auto lo
iface lo inet loopback

allow-hotplug wlan0
iface wlan0 inet manual
    wpa-conf /etc/wpa_supplicant/wpa_supplicant.conf

allow-hotplug wlan1
iface wlan1 inet manual
    wpa-conf /etc/wpa_supplicant/wpa_supplicant.conf

allow-hotplug wlan0
#iface wlan0 inet dhcp
        iface wlan0 inet static
        address 192.168.0.110
        netmask 255.255.255.0
        network 192.168.0.1
        gateway 192.168.0.1
        wpa-conf /etc/wpa_supplicant/wpa_supplicant.conf
#iface default inet dhcp


iface eth0 inet static
    address 192.168.0.115
    netmask 255.255.255.0
    network 192.168.0.1
    gateway 192.168.0.1

IP tĩnh không dây hoạt động, nhưng eth0 thì không.

Vì vậy, tôi đã cố gắng thực hiện cấu hình trong /etc/dhcpcd.conf :

interface eth0
static ip_address=192.168.0.115/24
static routers=192.168.0.1
static domain_name_servers=192.168.0.1

Va no đa hoạt động. Tôi bối rối và đây là một số câu hỏi:

  1. Khi nào sử dụng tập tin nào?

  2. Tại sao wifi hoạt động với / etc / mạng / giao diện nhưng eth0 không hoạt động?

  3. dhcpcd bằng cách nào đó ưu tiên hơn / etc / mạng / giao diện ?

  4. Làm thế nào để kiểm tra dịch vụ nào được ưu tiên hoặc đôi khi? Và dịch vụ nào sử dụng / etc / network / interface ?


4
Câu hỏi tuyệt vời và một cái gì đó tôi sắp hỏi về #raspbian. Là một quản trị viên Un * x trong nhiều năm, tôi thấy sự thay đổi cơ bản này được kết hợp bởi một tài liệu tuyệt đối. Tôi tình cờ tìm thấy câu hỏi này sau khi dành một giờ dùng thử và lỗi. Tôi ước tôi đã tìm thấy raspberrypi.stackexchange.com/questions/37920/ trộm trước đó
Alastair McCormack

Tôi nghĩ rằng câu hỏi nên được hỏi trong các ý kiến ​​rằng làm thế nào chính xác eth0 thất bại? Là gì ip addrđầu ra và systemctl status networkingđầu ra? Bởi vì nếu OP cố gắng thực hiện điều đó qua ssh và sử dụng ip eth0 để ssh vào, thì ip eth0 đã sửa đổi sẽ được gán làm ip phụ cho eth0 để giữ cho phiên ssh đang diễn ra không bị gián đoạn, tôi đã cố gắng thay đổi ip eth0 thành OP đã đề cập nhưng sshing thông qua wlan0 và nó hoạt động và được ưu tiên hơn dhcp, trong trường hợp của tôi, nó là dhclient trên Stretch nhưng sshing thông qua eth0, trường hợp được đề cập trước đó diễn ra.
Pavel Sayekat

Và vâng, dhcpcd cũng đã được thử nghiệm, không có ưu tiên nào trong /etc/network/interfacescài đặt.
Pavel Sayekat

Câu trả lời:


65

Có những điểm tốt trong tất cả các câu trả lời cho câu hỏi này, nhưng tôi nghĩ rằng có một số phạm vi để giải quyết trực tiếp các câu hỏi cụ thể của bạn.

  1. Khi nào sử dụng tập tin nào?

Tôi sẽ đưa ra giả định rằng bạn đang phải chịu một mức độ nhầm lẫn chung đang xảy ra vào lúc này (trong cộng đồng Raspberry Pi rộng lớn hơn) với việc giới thiệu Debian ' Jessie ' thay cho Debian 'Wheezy'. Sự thay đổi này đã làm cho một số lượng lớn các hướng dẫn ở mức tồi tệ nhất và khó hiểu nhất.

Câu trả lời cho câu hỏi là khi sử dụng Wheezy, việc thay đổi /etc/network/interfacestệp với mục đích thiết lập giao diện mạng là điều bình thường (xem hình). Khi sử dụng Jessie, sẽ cần phải thay đổi thành '/etc/dhcpcd.conf'. Tuy nhiên, nếu thực hiện thay đổi đối với kết nối không dây ( wlan0), bạn cũng sẽ cần thực hiện các thay đổi đối với /etc/wpa_supplicant/wpa_supplicant.confnơi bạn thêm ssid và mật khẩu mạng.

  1. Tại sao wifi hoạt động với / etc / mạng / giao diện nhưng eth0 không hoạt động?

Tôi không chắc làm thế nào kết nối wifi có thể hoạt động được vì có một số thông tin bị thiếu trong các tệp của bạn (ít nhất là ssid). Như janos đã chỉ ra, mức độ ưu tiên của các chi tiết kết nối etho xuất hiện sau các chi tiết wlan0 có thể khiến chúng hoạt động (vì chúng sẽ được nhìn thấy lần cuối bởi quá trình đọc tệp).

  1. Có dhcpcd bằng cách nào đó ưu tiên hơn / etc / mạng / giao diện?

Không, chúng khác nhau và được thiết kế để phù hợp với các mục đích khác nhau theo Jessie. Theo mục đích của việc sử dụng Jessie theo một cách khá đơn giản, bạn có thể bỏ qua khá nhiều các interfacestập tin và làm việc với dhcpcd.confwpa_supplicant.conf.

  1. Làm thế nào để kiểm tra dịch vụ nào được ưu tiên hoặc đôi khi? Và dịch vụ nào sử dụng / etc / network / interface?

Một lần nữa tôi sẽ đưa ra giả định rằng câu hỏi này có nhiều hơn ' Tôi sử dụng tệp nào và nếu tôi phải sử dụng tệp nào được ưu tiên? 'câu hỏi. Câu trả lời là với sự thay đổi từ Wheezy sang Jessie (và theo nghĩa rộng hơn với việc áp dụng systemd ), cấu hình của `dhcpcd.conf 'và' wpa_supplicant.conf 'sẽ là chuẩn và tệp' giao diện 'sẽ được để lại cho các thiết bị của riêng nó.

Điều này có ý nghĩa gì với bạn?

Chà (một lần nữa) đưa ra một giả định rằng bạn đang cố gắng thiết lập kết nối có dây cứng (eth0) và không dây (wlan0) với các địa chỉ IP tĩnh, bạn sẽ muốn interfacestệp của mình được mặc định như lúc đầu được cài đặt;

# Please note that this file is written to be used with dhcpcd
# For static IP, consult /etc/dhcpcd.conf and 'man dhcpcd.conf'

# Include files from /etc/network/interfaces.d:
source-directory /etc/network/interfaces.d

auto lo
iface lo inet loopback

iface eth0 inet manual

allow-hotplug wlan0
iface wlan0 inet manual
    wpa-conf /etc/wpa_supplicant/wpa_supplicant.conf

allow-hotplug wlan1
iface wlan1 inet manual
    wpa-conf /etc/wpa_supplicant/wpa_supplicant.conf

Bạn sẽ muốn dhcpcd.conftệp của mình bao gồm các chi tiết kết nối ở cuối tệp cho cả hai giao diện và các mục nhập bổ sung có thể trông giống như thế này;

# Custom static IP address for eth0.
interface eth0
static ip_address=192.168.0.115/24
static routers=192.168.0.1
static domain_name_servers=192.168.0.1

# Custom static IP address for wlan0.
interface wlan0
static ip_address=192.168.0.115/24
static routers=192.168.0.1
static domain_name_servers=192.168.0.1

Cuối cùng, bạn sẽ muốn chỉnh sửa wpa_supplicant.conftệp của mình để nó bao gồm ssid cho mạng wifi và mật khẩu. Nó có lẽ nên trông hơi giống thế này;

ctrl_interface=DIR=/var/run/wpa_supplicant GROUP=netdev
update_config=1

network={
    ssid="homenetwork"
    psk="h0mepassw0rd"
}

Tôi hy vọng rằng nó bao gồm nó ra. Có khả năng rất thực là các giả định của tôi là không chính xác, nhưng vì gần đây tôi đã trải qua một đường cong học tập tương tự, tôi hy vọng dữ liệu này hữu ích.

Tôi thực sự đã viết nó lên và bạn có thể lấy thông tin trong ebook miễn phí Chỉ cần Raspberry Pi từ Leanpub.


1
Đừng làm việc. Nếu chúng tôi đưa cả hai giao diện với.eg, ifconfig eth0 lên ping ra bên ngoài và ssh từ bên ngoài không hoạt động. Nếu chúng ta đặt một trong các giao diện vào dhcp thì tất cả đều hoạt động.
giuseppe

Hy vọng ai đó sẽ có thể hỗ trợ câu hỏi
d3noob

Không làm việc cho tôi, vì một số lý do. Đầu tiên là câu hỏi rất chung chung và nếu câu trả lời dành cho jessie, đó là một thời gian dài trước đây và chúng tôi đã chuyển sang kéo dài, và chỉ trong tuần này là bận rộn hơn. Tệp giao diện của tôi không có nội dung nào bạn đang đề cập.
Brian Bulkowski

6

Ưu tiên phải làm với cấu hình init hoặc systemd của bạn. Liên quan đến dhcp: nếu bạn có giao diện được cấu hình tĩnh hoặc thủ công và dhcp bắt đầu yêu cầu một địa chỉ sau đó, nó sẽ ghi đè lên những gì bạn đã có. Trên Debian, dhcp được bắt đầu cho các giao diện mà bạn chỉ định dhcp và không chỉ là phép màu. Nếu bạn có hành vi không mong muốn, bạn có thể có một hệ thống khác đang chạy trong nền như NetworkManager.

Mỗi điểm:

  1. đừng sử dụng dhcpcd.conf, hãy để nguyên.
  2. Bạn không có eth0 cho phép dòng hotplug.
  3. Nếu dhcpcd được khởi động sau khi kết nối mạng và bạn đã thiết lập nó để tiếp quản một giao diện, nó sẽ.
  4. Kiểm tra thứ tự mà bạn bắt đầu các dịch vụ.

4

IP tĩnh không dây hoạt động, nhưng eth0 thì không.

Các eth0giao diện có lẽ không lớn lên lúc khởi động hệ thống bởi vì nó không được liệt kê trên autodòng. Từ man interfaces:

Các dòng bắt đầu bằng từ "tự động" được sử dụng để xác định các giao diện vật lý sẽ được đưa lên khi ifup được chạy với tùy chọn -a. (Tùy chọn này được sử dụng bởi các tập lệnh khởi động hệ thống.) Tên giao diện vật lý phải theo từ "tự động" trên cùng một dòng. Có thể có nhiều khổ thơ "tự động". ifup mang các giao diện được đặt tên lên theo thứ tự được liệt kê.

Thay đổi dòng này:

auto lo

Về điều này:

auto lo eth0

Và sau đó nó sẽ làm việc.

Các câu trả lời khác đã giải quyết các câu hỏi khác của bạn. Tôi hi vọng cái này giúp được.


2
Đây là câu trả lời. OP cũng có những vấn đề khác, nhưng với những người như tôi đã làm theo các hướng dẫn khác chỉ thêm thông tin tĩnh vào /etc/network/interfaces, phần còn thiếu chỉ là auto eth0và khởi động lại mạng hoặc khởi động lại!
Adam Kaplan

2

Xem Cách tôi thiết lập mạng / WiFi / IP tĩnh để biết chi tiết về cách thiết lập mạng.

Bạn có thể sử dụng /etc/network/interfacesphương pháp cũ hơn nếu bạn muốn. Thật không may, tập tin bạn đã liệt kê chứa nhiều lỗi. Bạn nên gắn bó với một trong những cấu hình tiêu chuẩn.

Nếu bạn thực sự muốn sử dụng /etc/network/interfaces (không phải mặc định của nó), bạn sẽ cần phải tắt dhcpcd.

Một lời giải thích dhcpcdquá phức tạp cho Diễn đàn này, nhưng liên kết https://wiki.archlinux.org/index.php/dhcpcd cung cấp một bản tóm tắt tốt.


2

Đầu tiên, lấy /etc/network/interfacestập tin trở lại phiên bản gốc của nó ...

# interfaces(5) file used by ifup(8) and ifdown(8)
# Please note that this file is written to be used with dhcpcd
# For static IP, consult `/etc/dhcpcd.conf` and `man dhcpcd.conf`

# Include files from `/etc/network/interfaces.d`:
source-directory /etc/network/interfaces.d

auto lo
iface lo inet loopback

iface eth0 inet manual

allow-hotplug wlan0
iface wlan0 inet manual
    wpa-conf /etc/wpa_supplicant/wpa_supplicant.conf

allow-hotplug wlan1
iface wlan1 inet manual
    wpa-conf /etc/wpa_supplicant/wpa_supplicant.conf

Sau đó, giữ cho các thay đổi của bạn đối với /etc/dhcpcd.conftệp đơn giản và chỉ dành cho không dây ...

(ở dưới cùng của tập tin ...)

nohook lookup-hostname

interface wlan0
    static ip_address=192.168.0.53/24
    static routers=192.168.0.1
    static domain_name_servers=8.8.8.8

/etc/wpa_supplicant/wpa_supplicant.conf:

ctrl_interface=DIR=/var/run/wpa_supplicant GROUP=netdev
update_config=1
country=US

network={
    ssid="The SSID of your Router"
    psk="daPassword"
    scan_ssid=1
    key_mgmt=WPA-PSK
}

0

Xin lưu ý rằng phiên bản mới nhất của Raspbian Jessie (30/12/2016) có một lỗ hổng trong dòng thứ hai của tệp giao diện. Dòng thứ hai thiếu biểu tượng # hàng đầu để chỉ định dòng dưới dạng nhận xét. Vấn đề này làm cho tập tin giao diện không thể đọc được bởi hệ thống. Tôi đã dành nhiều giờ cố gắng để wifi của tôi hoạt động trước khi tôi gặp lỗi này.

Để khắc phục, chỉ cần thêm biểu tượng # vào đầu dòng.

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.