Perbedaan antara /etc/dhcpcd.conf dan / etc / network / interfaces?

64

Saya memiliki konfigurasi ini di / etc / network / interfaces :

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 statis nirkabel berfungsi, tetapi eth0 tidak.

Jadi saya mencoba melakukan konfigurasi di /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

Dan itu berhasil. Saya bingung dan ini ada beberapa pertanyaan:

  1. Kapan harus menggunakan file yang mana?

  2. Mengapa wifi bekerja dengan / etc / network / interfaces tetapi eth0 tidak?

  3. Apakah dhcpcd memiliki prioritas lebih dari / etc / network / interface ?

  4. Bagaimana cara memeriksa layanan mana yang memiliki prioritas atau sesuatu? Dan layanan mana yang menggunakan / etc / network / interface ?

CuriousGuy
sumber
4
Pertanyaan besar dan sesuatu yang akan saya tanyakan #raspbian. Sebagai admin Un * x selama bertahun-tahun, saya menemukan perubahan mendasar yang membingungkan ini diperparah oleh kelangkaan dokumentasi. Saya kebetulan menemukan pertanyaan ini setelah menghabiskan satu jam trial and error. Saya berharap saya telah menemukan raspberrypi.stackexchange.com/questions/37920/... sebelumnya
Alastair McCormack
Saya pikir pertanyaannya seharusnya ditanyakan dalam komentar bahwa bagaimana tepatnya eth0 gagal? Apa ip addroutput dan systemctl status networkingoutputnya? Karena jika OP mencoba untuk melakukan itu lebih dari ssh dan menggunakan ip eth0 ke ssh ke, maka ip eth0 yang dimodifikasi akan ditugaskan sebagai ip sekunder ke eth0 untuk menjaga sesi ssh yang sedang berlangsung tidak terganggu, saya mencoba mengubah ip eth0 sebagai OP disebutkan tetapi sshing melalui wlan0 dan berfungsi dan lebih disukai daripada dhcp, dalam kasus saya itu dhclient pada Stretch tetapi sshing melalui eth0, kasus yang disebutkan sebelumnya terjadi.
Pavel Sayekat
Dan ya, dhcpcd juga telah diuji, tidak ada yang lebih suka /etc/network/interfacespengaturan.
Pavel Sayekat

Jawaban:

65

Ada beberapa poin bagus dalam semua jawaban untuk pertanyaan ini, tetapi saya pikir ada beberapa ruang untuk menjawab pertanyaan spesifik Anda secara langsung.

  1. Kapan harus menggunakan file yang mana?

Saya akan membuat asumsi bahwa Anda menderita tingkat kebingungan umum yang terjadi saat ini (di komunitas Raspberry Pi yang lebih luas) dengan diperkenalkannya Debian ' Jessie ' sebagai pengganti Debian 'Wheezy'. Perubahan ini telah membuat sejumlah besar tutorial pada usang terburuk dan paling membingungkan.

Jawaban atas pertanyaan itu adalah bahwa ketika menggunakan Wheezy itu normal untuk membuat perubahan pada /etc/network/interfacesfile untuk keperluan pengaturan antarmuka jaringan (gambar). Saat menggunakan Jessie, Anda perlu melakukan perubahan ke '/etc/dhcpcd.conf'. Namun, jika membuat perubahan pada koneksi nirkabel ( wlan0) Anda juga perlu membuat perubahan /etc/wpa_supplicant/wpa_supplicant.confyang merupakan tempat Anda menambahkan kata sandi dan kata sandi jaringan.

  1. Mengapa wifi bekerja dengan / etc / network / interfaces tetapi eth0 tidak?

Saya tidak yakin bagaimana koneksi wifi bisa berfungsi karena ada beberapa informasi yang hilang dari file Anda (paling tidak ssid). Seperti yang ditunjukkan oleh janos, prioritas detail koneksi etho yang muncul setelah detail wlan0 mungkin menjadikannya operatif (karena mereka akan terlihat terakhir dengan proses membaca file).

  1. Apakah dhcpcd memiliki prioritas lebih dari / etc / network / interface?

Tidak, mereka berbeda dan dirancang untuk memenuhi tujuan yang berbeda di bawah Jessie. Untuk keperluan menggunakan Jessie dengan cara yang cukup sederhana Anda bisa mengabaikan interfacesfile dan bekerja dengan dhcpcd.confdan wpa_supplicant.conf.

  1. Bagaimana cara memeriksa layanan mana yang memiliki prioritas atau sesuatu? Dan layanan mana yang menggunakan / etc / network / interface?

Sekali lagi saya akan membuat asumsi bahwa pertanyaannya lebih dari ' File mana yang saya gunakan dan jika saya harus menggunakan yang mana yang diprioritaskan? ' pertanyaan. Jawabannya adalah bahwa dengan perubahan dari Wheezy ke Jessie (dan dalam arti yang lebih luas dengan adopsi systemd ) konfigurasi `dhcpcd.conf 'dan' wpa_supplicant.conf 'akan menjadi norma dan file' interface 'akan dibiarkan. untuk perangkat itu sendiri.

Apa artinya ini bagi Anda?

Nah (lagi) membuat asumsi bahwa Anda sedang mencoba untuk mengatur koneksi kabel (eth0) dan nirkabel (wlan0) dengan alamat IP statis, Anda ingin interfacesfile Anda menjadi default seperti yang awalnya diinstal;

# 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

Anda ingin dhcpcd.conffile Anda menyertakan detail koneksi di akhir file untuk kedua antarmuka dan entri tambahan mungkin akan terlihat sedikit seperti ini;

# 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

Terakhir Anda ingin mengedit wpa_supplicant.conffile Anda sehingga menyertakan ssid untuk jaringan wifi dan kata sandi. Seharusnya terlihat seperti ini;

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

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

Saya harap itu menutupinya. Ada kemungkinan yang sangat nyata bahwa asumsi saya salah, tetapi karena saya baru-baru ini melalui kurva pembelajaran yang sama saya berharap datanya berguna.

Saya sebenarnya sudah menulis ini dan Anda bisa mendapatkan informasi dalam ebook gratis. Cukup Raspberry Pi dari Leanpub.

d3noob
sumber
1
Jangan bekerja Jika kita memunculkan kedua antarmuka with.eg, ifconfig eth0 up ping ke luar dan ssh dari luar tidak berfungsi. Jika kita menempatkan salah satu antarmuka ke dhcp semuanya berfungsi.
giuseppe
Semoga seseorang akan dapat membantu dengan pertanyaan
d3noob
Tidak bekerja untuk saya, karena beberapa alasan. Pertama adalah bahwa pertanyaannya adalah umum, dan jika jawabannya adalah untuk jessie, itu sudah lama sekali dan kita telah bergerak untuk meregangkan sebagian besar, dan baru minggu ini adalah buster. File antarmuka saya tidak memiliki hal-hal yang Anda sebutkan.
Brian Bulkowski
6

Prioritas berkaitan dengan konfigurasi init atau systemd Anda. Berkenaan dengan dhcp: jika Anda memiliki antarmuka yang dikonfigurasikan secara statis atau manual, dan dhcp mulai meminta alamat setelahnya, itu akan menimpa apa yang sudah Anda miliki. Pada Debian, dhcp dimulai untuk antarmuka yang Anda tentukan dhcp, dan bukan hanya secara ajaib dengan sendirinya. Jika Anda memiliki perilaku tak terduga, Anda mungkin memiliki sistem yang berbeda berjalan di latar belakang seperti NetworkManager.

Per poin:

  1. jangan gunakan dhcpcd.conf sama sekali, biarkan saja.
  2. Anda tidak memiliki eth0 izinkan jalur hotplug.
  3. Jika dhcpcd dimulai setelah jaringan dan Anda mengaturnya untuk mengambil alih antarmuka, itu akan.
  4. Periksa urutan Anda memulai layanan tersebut.
John Keates
sumber
4

IP statis nirkabel berfungsi, tetapi eth0 tidak.

The eth0antarmuka mungkin tidak dibesarkan saat boot sistem karena tidak terdaftar di autoline. Dari man interfaces:

Baris yang diawali dengan kata "auto" digunakan untuk mengidentifikasi antarmuka fisik yang akan muncul ketika ifup dijalankan dengan opsi -a. (Opsi ini digunakan oleh skrip boot sistem.) Nama antarmuka fisik harus mengikuti kata "otomatis" pada baris yang sama. Mungkin ada beberapa bait "otomatis". ifup menampilkan antarmuka bernama dalam urutan yang tercantum.

Ubah baris ini:

auto lo

Untuk ini:

auto lo eth0

Dan kemudian itu akan berhasil.

Jawaban lain telah menjawab pertanyaan Anda yang lain. Saya harap ini membantu.

janos
sumber
2
INI jawabannya. OP memiliki masalah lain juga, tetapi bagi orang-orang seperti saya yang mengikuti panduan lain yang baru saja menambahkan informasi statis /etc/network/interfaces, bagian yang hilang hanya auto eth0dan restart jaringan atau reboot!
Adam Kaplan
2

Lihat Bagaimana cara mengatur jaringan / WiFi / IP Statis untuk detail tentang cara mengatur jaringan.

Anda dapat menggunakan /etc/network/interfacesmetode yang lebih lama jika Anda mau. Sayangnya file yang Anda daftarkan mengandung banyak kesalahan. Anda harus tetap menggunakan salah satu konfigurasi standar.

Jika Anda benar-benar ingin menggunakan /etc/network/interfaces (selain dari standarnya) Anda harus menonaktifkannya dhcpcd.

Penjelasan dhcpcdterlalu rumit untuk Forum ini, tetapi tautan https://wiki.archlinux.org/index.php/dhcpcd memberikan ringkasan yang baik.

Milliways
sumber
2

Pertama, /etc/network/interfaceskembalikan file ke versi aslinya ...

# 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

Kemudian, simpan perubahan Anda pada /etc/dhcpcd.conffile sederhana dan hanya untuk nirkabel ...

(di bagian bawah file ...)

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
}
Greg Oij
sumber
0

Ketahuilah bahwa versi terbaru dari Raspbian Jessie (12/30/2016) berisi kesalahan pada baris kedua file antarmuka. Baris kedua tidak memiliki simbol # depan untuk menetapkan baris sebagai komentar. Masalah ini menyebabkan file antarmuka tidak dapat dibaca oleh sistem. Saya menghabiskan banyak waktu mencoba untuk mendapatkan wifi untuk bekerja sebelum saya menemukan kesalahan ini.

Untuk memperbaikinya, cukup tambahkan simbol # ke awal baris.

Adiktif
sumber