Apakah ada cara untuk menonaktifkan klien DHCP di Raspbian Linux pada Rasperry Pi?


15

Saya memiliki server Linux (Rasperry Pi menggunakan Raspbian sebagai OS) yang seharusnya hanya menggunakan IP statis.

Namun saya perhatikan bahwa ia juga telah mendapatkan IP dari server DHCP (IP yang diberikan oleh DHCP adalah 192.168.111.2). Menurut pengaturan jaringan server hanya menggunakan IP statis ( 192.168.111.100).

Isi dari /etc/network/interfaces:

auto lo
iface lo inet loopback

auto eth0
iface eth0 inet static
address 192.168.111.100
netmask 255.255.255.0
gateway 192.168.111.1
dns-nameservers ip1 ip2

Meskipun menggunakan konfigurasi statis saya dapat SSH ke perangkat juga menggunakan IP yang diberikan oleh DHCP. Tampaknya ntpdjuga menggunakan IP yang salah dan juga yang benar.

Output dari Netstat:

udp        0      0 192.168.111.2:123       0.0.0.0:*                           2774/ntpd
udp        0      0 192.168.111.100:123     0.0.0.0:*                           2774/ntpd

Menurut ifconfigIP 192.168.111.2tidak digunakan:

eth0      Link encap:Ethernet  HWaddr b8:27:eb:be:18:1c
          inet addr:192.168.111.100  Bcast:192.168.111.255  Mask:255.255.255.0
          UP BROADCAST RUNNING MULTICAST  MTU:1500  Metric:1
          RX packets:138099 errors:0 dropped:0 overruns:0 frame:0
          TX packets:81146 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:1000
          RX bytes:95954711 (91.5 MiB)  TX bytes:27076870 (25.8 MiB)

ps -ef | grep dhcp menunjukkan bahwa saya memiliki daemon DHCP yang sedang berjalan:

root      2000     1  0 Oct07 ?        00:00:06 /sbin/dhcpcd

Bagaimana cara menonaktifkan DHCPdaemon dari memulai dan memastikan bahwa server saya hanya menggunakan statis?


Apa perintah yang Anda maksud?
Madoc Comadrin

Saya mencoba perintah-perintah itu tetapi tidak dapat menemukan apa pun untuk membantu saya dalam hal ini.
Madoc Comadrin

@barlop Tidak ada yang salah dengan ini ifconfigdan digunakan secara teratur. Ini suatu hari nanti akan digantikan oleh iptetapi jujur, itu tidak ada konsekuensinya untuk merengek seseorang tentang yang "lebih baik" karena ini bukan kontes kencing. ifconfigmenyediakan lebih dari cukup detail untuk debugging hal-hal seperti ini.
JakeGould

Jawaban:


11

Skenario ini terdengar sangat aneh karena pengaturan Anda harusnya berfungsi seperti yang Anda jelaskan — dan berharap agar berhasil — jika ada set IP statis di dalamnya /etc/network/interfaces. Yang mengatakan, diskusi ini di situs resmi Raspberry Pi berfokus pada masalah dengan pengguna "rpdom" yang menyatakan ini pada posting bertanggal "Kamis 28 Mei 2015 6:21 pagi":

Ini terjadi di pembaruan terbaru. Hal ini disebabkan oleh klien dhcp baru yang mengabaikan apa yang dilakukan file antarmuka dan melakukan hal sendiri selain ... tampaknya gila bagi saya. Saya akan melihat cara mengkonfigurasi ulang klien dhcp (tidak dapat mengingat yang mana atau bagaimana melakukannya, saya masih menggunakan yang lama yang berfungsi untuk saya), menonaktifkannya, atau menghapusnya (jika mungkin).

Lebih dalam di pengguna thread "KLL" menyarankan posting lain berikut dalam tanggapan mereka bertanggal "Senin 10 Agustus 2015 12:59 pm." Menurut "knute":

Di suatu tempat sepanjang upgrade saya memodifikasi /etc/network/interfacesfile saya dengan kata 'manual' bukan dhcp atau statis dan saya berakhir dengan dua alamat IP, satu statis dan alamat dhcp saya. Saya akhirnya punya waktu untuk bermain dengannya dan menemukan bahwa itu dhcpcd5bekerja secara berbeda dari apa pun yang ada di dalamnya sebelumnya. Untuk mendapatkan hanya alamat statis Anda, jangan modifikasi /etc/network/interfaces. Masukkan kembali kata 'manual' jika Anda mengubahnya dan sebaliknya ubah /etc/dhcpcd.confseperti yang ditunjukkan pada contoh dari dokumen.

Jadi idenya adalah bahwa dhcpcd5perilaku telah berubah di salah satu peningkatan. Dan saran untuk mengatasi masalah ini adalah menghapus perubahan apa pun dari /etc/network/interfacesdan alih-alih menyesuaikan pengaturan /etc/dhcpcd.confuntuk mendapatkan alamat IP statis; contoh konfigurasi di bawah ini:

static <value>
             Configures a static <value>.  If you set ip_address then dhcpcd
             will not attempt to obtain a lease and just use the value for the
             address with an infinite lease time.

             Here is an example which configures a static address, routes and
             dns.
                   interface eth0
                   static ip_address=192.168.0.10/24
                   static routers=192.168.0.1
                   static domain_name_servers=192.168.0.1

Info lebih lanjut tentang konten dhcpcd.confdapat ditemukan di halaman manual untuk itu .

Yang mengatakan, ide lain adalah untuk mempertahankan pengaturan yang Anda miliki /etc/network/interfacestetapi kemudian edit /etc/dhcpcd.confuntuk menambahkan baris denyinterfaces eth0untuk memberitahu daemon DHCP untuk sepenuhnya diabaikan eth0. Salah satu solusi harus bekerja, tetapi satu solusi mungkin merupakan solusi yang lebih disukai tergantung pada kebutuhan / persyaratan jaringan Anda secara keseluruhan.


2
Kasus saya hampir identik dengan yang dijelaskan di sini. Satu-satunya perbedaan adalah bahwa saya /etc/network/interfacestidak pernah berubah menjadi manualseperti itu dalam kasus forum Raspberry Pi. Solusi yang disarankan bekerja untuk saya juga.
Madoc Comadrin

1
Sama, di mana bahkan dengan "statis" saya mendapatkan dhcp pada eth0 saya. Ini masih merupakan masalah dengan instalasi jessie-lite. Solusi belum membantu saya karena saya memiliki situasi di mana saya memerlukan antarmuka wlan0 untuk memiliki metrik yang lebih rendah daripada antarmuka eth0 dan saya tidak bisa mendapatkan dhcpcd5 untuk membiarkan saya melakukan itu (sejauh ini).
Peter Hansen

3
Sebuah solusi yang melakukan pekerjaan untuk saya, bagaimanapun, adalah untuk memberitahu dhcpcd5 tidak melihat eth0. Ini dilakukan dengan menambahkan "denyinterfaces eth0" di /etc/dhcpcd.conf.
Peter Hansen

1
@ PeterHansen Bagus untuk tahu! Menambahkan info itu ke akhir jawaban saya.
JakeGould

2
Tindak lanjut: dalam beberapa kasus saya menemukan saya menginstal dhcpcd5 dan isc-dhcp-client, keduanya menetapkan alamat. Selain itu, ada layanan dhcpcd.service yang diprakarsai oleh sistem yang berjalan pada semua antarmuka (dengan opsi -q -b) serta proses dhcpcd5 dimulai oleh opsi "dhcp" di jaringan / antarmuka. Sigh ... cukup mudah dipecahkan begitu Anda tahu semua itu, saya harap.
Peter Hansen

8

apa yang berhasil bagi saya adalah menggunakan / etc / network / interfaces seperti pada pertanyaan awal dan hanya menghapus klien dhcp:

apt-get remove dhcpcd5 isc-dhcp-client isc-dhcp-common

Dalam skenario di mana Anda tidak peduli dengan DHCP (atau apa pun yang dapat dilakukan dhcpcd), ini adalah solusi termudah.
AVee

1

Saya harus mengatakan bahwa sayangnya tidak ada solusi yang diusulkan di sini yang berfungsi untuk saya. Tapi setelah pertempuran panjang dengan DHCP, saya akhirnya bisa menyelesaikan masalah:

vi /etc/systemd/network/eth0.network

perubahan:

[Match]
Name=eth0

[Network]
DHCP=yes

untuk:

[Network]
DHCP=no

semoga ini membantu.


1

Cara yang lebih baik untuk menonaktifkan layanan apa pun seperti dhcpcd adalah menggunakan fungsi manajemen sistem. Anda harus memulai ulang untuk menjalankannya - kecuali Anda menghentikan layanan ini juga.

Untuk Jessie (yang menggunakan systemdmanajemen):

sudo systemctl disable dhcpcd.service

Dan untuk Wheezy ( System-Vmanajemen) yang lebih tua :

sudo update-rc.d dhcpcd disable

Tetapi jika Anda menonaktifkannya maka Anda perlu memastikan Anda memiliki konfigurasi ip statis /etc/network/interfacesjika tidak antarmuka Anda tidak akan mendapatkan alamat IP.


0

Berikut ringkasan dari apa yang perlu saya lakukan untuk Raspbian Jessie 2017-01-11:

Edit / etc / network / interfaces dan tambahkan bait alamat statis, hapus referensi lain ke antarmuka statis (eth0 dalam kasus ini). Baris otomatis penting jika tidak, antarmuka tidak akan mulai saat boot:

    auto eth0
    iface eth0 inet static
      address 192.168.44.17
      netmask 255.255.255.0
      gateway 192.168.44.27

Selanjutnya nonaktifkan dhcpcd dan aktifkan jaringan standar:

  • Nonaktifkan dhcpcd: systemctl disable dhcpcd.service
  • Aktifkan jaringan: systemctl enable networking
  • reboot

Raspbian Jessie pada rilis 2017-01-11 sepertinya tidak menggunakan jaringan systemd


0

Mencoba beberapa hal dan menemukannya

 apt list --installed | grep dhcp

ditemukan:

dhcpcd5 
isc-dhcp-client
isc-dhcp-common

Saya baru saja menonaktifkan dhcpcd5dan memperbaikinya menggunakan:

 sudo apt-get remove dhcpcd5

melakukan reboot dan semuanya keren

Dengan menggunakan situs kami, Anda mengakui telah membaca dan memahami Kebijakan Cookie dan Kebijakan Privasi kami.
Licensed under cc by-sa 3.0 with attribution required.