C'è un modo per disabilitare il client DHCP in Raspbian Linux su un Rasperry Pi?


15

Ho un server Linux (Rasperry Pi che utilizza Raspbian come sistema operativo) che dovrebbe utilizzare solo IP statico.

Tuttavia ho notato che ha anche l'IP dal server DHCP (l'IP fornito dal DHCP è 192.168.111.2). In base alle impostazioni di rete, il server dovrebbe utilizzare solo IP statico ( 192.168.111.100).

I contenuti di /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

Nonostante utilizzi la configurazione statica, posso utilizzare SSH sul dispositivo anche utilizzando l'IP fornito da DHCP. Inoltre sembra che ntpdstia usando l'IP sbagliato e quello corretto.

Uscita di 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

Secondo ifconfigl'IP 192.168.111.2non viene utilizzato:

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 mostra che ho un demone DHCP in esecuzione:

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

Come disabilitare l' DHCPavvio del demone e assicurarsi che il mio server usi solo l'elettricità statica?


Qual è il comando a cui ti riferisci?
Madoc Comadrin,

Ho provato quei comandi ma non sono riuscito a trovare nulla che mi aiuti in questo.
Madoc Comadrin,

@barlop Non c'è nulla di sbagliato in ifconfige viene usato regolarmente. Un giorno verrà sostituito ipma, onestamente, non ha alcuna importanza incidere qualcuno su ciò che è "migliore", dal momento che questa non è una gara pisciata. ifconfigfornisce dettagli più che sufficienti per il debug di cose come questa.
Jake Gould,

Risposte:


11

Questo scenario sembra davvero strano perché l'installazione dovrebbe funzionare come descritto - e sperare che funzioni - se è presente un IP statico /etc/network/interfaces. Detto questo, questa discussione sul sito ufficiale di Raspberry Pi si concentra sul problema con l'utente "rpdom" affermandolo sul post datato "Gio 28 maggio 2015 6:21":

Questo succede negli ultimi aggiornamenti. È causato dal nuovo client dhcp che ignora ciò che fanno i file delle interfacce e fa le sue cose in più ... mi sembra pazzo. Vedrei come riconfigurare il client dhcp (non riesco a ricordare quale sia o come farlo, sono ancora su quello vecchio che funziona per me), disabilitandolo o rimuovendolo (se possibile).

Un approfondimento nella discussione dell'utente "KLL" suggerisce il seguente altro post nella loro risposta datata "Lun 10 ago 2015 12:59 pm". Secondo "knute":

Da qualche parte lungo la strada un aggiornamento ha modificato il mio /etc/network/interfacesfile con la parola 'manuale' invece di dhcp o static e ho finito con due indirizzi IP, il mio statico e un indirizzo dhcp. Alla fine ho avuto il tempo di giocarci e ho scoperto che dhcpcd5funziona in modo diverso da quello che c'era prima. Per ottenere solo il tuo indirizzo statico, non modificare /etc/network/interfaces. Rimetti la parola 'manuale' se l'hai cambiata e invece modifica /etc/dhcpcd.confcome mostrato nell'esempio dai documenti.

Quindi l'idea è che dhcpcd5il comportamento è cambiato in uno degli aggiornamenti. E il suggerimento per risolvere il problema è rimuovere qualsiasi modifica /etc/network/interfacese modificare le impostazioni /etc/dhcpcd.confper ottenere un indirizzo IP statico; esempio di configurazione di seguito:

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

Maggiori informazioni sul contenuto di dhcpcd.confpossono essere trovate sulla pagina man ufficiale per questo .

Detto questo, un'altra idea è quella di conservare le impostazioni in cui ci si trova /etc/network/interfacesma quindi modificarle /etc/dhcpcd.confper aggiungere la riga denyinterfaces eth0per dire al demone DHCP di ignorare completamente eth0. Entrambe le soluzioni dovrebbero funzionare, ma una soluzione potrebbe essere una soluzione più preferibile a seconda delle esigenze / requisiti di rete generali.


2
Il mio caso era quasi identico a quello descritto qui. L'unica differenza è che il mio /etc/network/interfacesnon è mai stato modificato manualcome nel caso del forum Raspberry Pi. Le soluzioni suggerite hanno funzionato anche per me.
Madoc Comadrin,

1
Lo stesso, dove anche con "statico" sto ottenendo dhcp sul mio eth0. Questo è ancora un problema con un'installazione jessie-lite. La soluzione alternativa non mi sta ancora aiutando poiché ho una situazione in cui ho bisogno che l'interfaccia wlan0 abbia una metrica inferiore all'interfaccia eth0 e non riesco a ottenere dhcpcd5 per consentirmi di farlo (finora).
Peter Hansen,

3
Una soluzione alternativa che ha funzionato per me, tuttavia, è stata quella di dire a dhcpcd5 di non guardare eth0. Ciò è stato fatto aggiungendo "denyinterfaces eth0" in /etc/dhcpcd.conf.
Peter Hansen,

1
@PeterHansen Buono a sapersi! Ho aggiunto queste informazioni alla fine della mia risposta.
Jake Gould

2
Un seguito: in alcuni casi ho scoperto che avevo installato sia dhcpcd5 che isc-dhcp-client, entrambi assegnando indirizzi. Inoltre, esiste un servizio dhcpcd.service avviato da systemd che gira su tutte le interfacce (con opzioni -q -b) e sul processo dhcpcd5 avviato dall'opzione "dhcp" in rete / interfacce. Sospiro ... abbastanza facile da risolvere una volta che lo sai, spero.
Peter Hansen,

8

ciò che ha funzionato per me è usare una / etc / network / interfaces come nella domanda originale e semplicemente rimuovere il client dhcp:

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

In uno scenario in cui non ti interessa il DHCP (o qualsiasi altra cosa che dhcpcd possa fare) questa è la soluzione più semplice.
Guarda il

1

Devo dire che purtroppo nessuna delle soluzioni proposte qui ha funzionato per me. Ma dopo una lunga battaglia con DHCP, sono stato finalmente in grado di risolvere il problema:

vi /etc/systemd/network/eth0.network

modificare:

[Match]
Name=eth0

[Network]
DHCP=yes

per:

[Network]
DHCP=no

spero che sia di aiuto.


1

Il modo preferibile per disabilitare qualsiasi servizio come dhcpcd è utilizzare le funzioni di gestione del sistema. Sarà necessario riavviare perché abbia effetto, a meno che non si interrompa anche il servizio.

Per Jessie (che utilizza la systemdgestione):

sudo systemctl disable dhcpcd.service

E per il più vecchio Wheezy ( System-Vgestione):

sudo update-rc.d dhcpcd disable

Ma se lo disabiliti, devi assicurarti di avere una configurazione ip statica, /etc/network/interfacesaltrimenti le tue interfacce non avranno un indirizzo IP.


0

Ecco un riassunto di ciò che dovevo fare per Raspbian Jessie 2017-01-11:

Modifica / etc / network / interfaces e aggiungi la stanza dell'indirizzo statico, rimuovi altri riferimenti all'interfaccia statica (eth0 in questo caso). La linea automatica è importante, altrimenti l'interfaccia non si avvia all'avvio:

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

Quindi disabilitare dhcpcd e abilitare la rete standard:

  • Disabilita dhcpcd: systemctl disable dhcpcd.service
  • Abilita rete: systemctl enable networking
  • riavvio

Raspbian Jessie a partire dalla versione 2017-01-11 non sembra utilizzare la rete di systemd


0

Ho provato alcune cose e l'ho trovato

 apt list --installed | grep dhcp

trovato:

dhcpcd5 
isc-dhcp-client
isc-dhcp-common

Ho appena disabilitato dhcpcd5e risolto usando:

 sudo apt-get remove dhcpcd5

fatto un riavvio e tutto era dandy

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.