Gibt es eine Möglichkeit, den DHCP-Client in Raspbian Linux auf einem Rasperry Pi zu deaktivieren?

15

Ich habe einen Linux-Server (Rasperry Pi mit Raspbian als Betriebssystem), der nur statische IP verwenden sollte.

Allerdings habe ich festgestellt, dass es auch IP vom DHCP-Server hat (Die von DHCP ausgegebene IP ist 192.168.111.2). Entsprechend den Netzwerkeinstellungen sollte der Server nur statische IP ( 192.168.111.100) verwenden.

Der Inhalt von /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

Trotz der Verwendung der statischen Konfiguration kann ich SSH zum Gerät auch unter Verwendung der von DHCP angegebenen IP. Es scheint auch, dass ntpddie falsche und die richtige IP verwendet wird.

Ausgabe von 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

Laut ifconfigder IP 192.168.111.2wird nicht verwendet:

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 zeigt, dass ein DHCP-Daemon ausgeführt wird:

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

Wie deaktiviere ich den DHCPStart des Daemons und stelle sicher, dass mein Server nur das statische verwendet?

Madoc Comadrin
quelle
Auf welchen Befehl beziehen Sie sich?
Madoc Comadrin
Ich habe diese Befehle ausprobiert, konnte aber nichts finden, was mir dabei helfen könnte.
Madoc Comadrin
@barlop Es gibt nichts auszusetzen ifconfigund es wird regelmäßig verwendet. Es wird eines Tages durch ersetzt werden, ipaber ehrlich gesagt ist es keine Konsequenz, jemanden zu belästigen, der "besser" ist, da dies kein Piss-Wettbewerb ist. ifconfigbietet mehr als genug Details zum Debuggen von Dingen wie diesem.
JakeGould

Antworten:

11

Dieses Szenario klingt wirklich seltsam, da Ihr Setup so funktionieren sollte, wie Sie es beschreiben - und hoffen, dass es funktioniert -, wenn eine statische IP-Adresse festgelegt ist /etc/network/interfaces. Die Diskussion auf der offiziellen Raspberry Pi-Website konzentriert sich jedoch auf das Problem, bei dem der Benutzer "rpdom" dies auf dem Post vom "Do 28. Mai 2015, 6:21 Uhr" angibt:

Dies geschieht in den neuesten Updates. Es wird dadurch verursacht, dass der neue DHCP-Client ignoriert, was die Interface-Dateien tun und zusätzlich seine eigene Sache tut ... scheint mir verrückt zu sein. Ich würde schauen, wie man den DHCP-Client neu konfiguriert (kann mich nicht erinnern, welcher es ist oder wie man es macht, ich bin immer noch auf dem alten, der für mich funktioniert), deaktiviert oder entfernt (wenn möglich).

Weiter unten im Thread schlägt der Benutzer "KLL" in seiner Antwort vom "Montag, den 10. August 2015, 12:59 Uhr" den folgenden anderen Beitrag vor . Laut "knute":

Irgendwann hat ein Upgrade meine /etc/network/interfacesDatei mit dem Wort "manual" anstelle von "dhcp" oder "static" geändert, und ich erhielt zwei IP-Adressen, meine statische und eine dhcp-Adresse. Ich hatte endlich Zeit, damit zu spielen und fand heraus, dass es dhcpcd5anders funktioniert als alles, was vorher drin war. Ändern Sie nicht, um nur Ihre statische Adresse abzurufen /etc/network/interfaces. Setzen Sie das Wort 'manual' zurück, wenn Sie es geändert haben, und ändern Sie es stattdessen /etc/dhcpcd.confwie im Beispiel in den Dokumenten gezeigt.

Die Idee ist also dhcpcd5, dass sich das Verhalten in einem der Upgrades geändert hat. Um das Problem zu beheben, sollten Sie alle Änderungen entfernen /etc/network/interfacesund stattdessen die Einstellungen in anpassen /etc/dhcpcd.conf, um eine statische IP-Adresse zu erhalten. Beispielkonfiguration unten:

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

Weitere Informationen zum Inhalt von dhcpcd.conffinden Sie auf der offiziellen Manpage dazu .

Das heißt, eine andere Idee ist, die Einstellungen beizubehalten, die Sie haben, /etc/network/interfacesaber dann zu bearbeiten /etc/dhcpcd.conf, um die Zeile hinzuzufügen denyinterfaces eth0, die den DHCP-Dämon anweist, sie vollständig zu ignorieren eth0. Beide Lösungen sollten funktionieren, eine Lösung ist jedoch je nach den allgemeinen Netzwerkanforderungen möglicherweise vorzuziehen.

JakeGould
quelle
2
Mein Fall war fast identisch mit dem hier beschriebenen. Der einzige Unterschied war, dass ich /etc/network/interfacesnie so verändert wurde, manualwie es in Raspberry Pi-Foren der Fall war. Auch für mich haben Lösungsvorschläge funktioniert.
Madoc Comadrin
1
Das gleiche gilt, wenn ich auch mit "statisch" DHCP auf mein eth0 bekomme. Dies ist immer noch ein Problem bei einer Jessie-Lite-Installation. Die Problemumgehung hilft mir noch nicht weiter, da ich eine Situation habe, in der die wlan0-Schnittstelle eine niedrigere Metrik als die eth0-Schnittstelle haben muss und dhcpcd5 dies (bisher) nicht zulassen kann.
Peter Hansen
3
Eine Abhilfe , die tat Arbeit für mich war jedoch zu sehen , eth0 zu sagen dhcpcd5 nicht. Dies wurde durch Hinzufügen von "denyinterfaces eth0" in /etc/dhcpcd.conf erreicht.
Peter Hansen
1
@PeterHansen Gut zu wissen! Diese Information wurde am Ende meiner Antwort hinzugefügt.
JakeGould
2
Eine Folge: In einigen Fällen hatte ich festgestellt, dass sowohl dhcpcd5 als auch isc-dhcp-client installiert waren und beide Adressen zugewiesen hatten. Darüber hinaus gibt es einen systemd-initiierten dhcpcd.service, der auf allen Schnittstellen (mit den Optionen -q -b) ausgeführt wird, sowie den dhcpcd5-Prozess, der durch die Option "dhcp" in network / interfaces gestartet wird. Seufz ... ziemlich einfach zu lösen, wenn du das alles weißt, hoffe ich.
Peter Hansen
8

Was für mich funktioniert hat, ist die Verwendung einer / etc / network / interfaces wie in der ursprünglichen Frage und das einfache Entfernen des DHCP-Clients:

apt-get remove dhcpcd5 isc-dhcp-client isc-dhcp-common
docno
quelle
In einem Szenario, in dem Sie sich nicht für DHCP interessieren (oder für etwas anderes, was dhcpcd tun kann), ist dies die einfachste Lösung.
AVee
1

Ich muss sagen, dass leider keine der hier vorgeschlagenen Lösungen für mich funktioniert hat. Aber nach einem langen Kampf mit DHCP konnte ich das Problem endlich lösen:

vi /etc/systemd/network/eth0.network

Veränderung:

[Match]
Name=eth0

[Network]
DHCP=yes

zu:

[Network]
DHCP=no

hoffe das hilft.

lester289
quelle
1

Die bevorzugte Methode zum Deaktivieren von Diensten wie dhcpcd ist die Verwendung der Systemverwaltungsfunktionen. Sie müssen einen Neustart durchführen, damit dieser wirksam wird - es sei denn, Sie beenden den Dienst ebenfalls.

Für Jessie (die das systemdManagement nutzt ):

sudo systemctl disable dhcpcd.service

Und für die älteren Wheezy ( System-VManagement):

sudo update-rc.d dhcpcd disable

Wenn Sie es jedoch deaktivieren, müssen Sie sicherstellen, dass Sie eine statische IP-Konfiguration haben, /etc/network/interfacesda Ihre Schnittstellen sonst keine IP-Adresse erhalten.

Pierz
quelle
0

Hier ist eine Zusammenfassung dessen, was ich für Raspbian Jessie am 11.01.2017 tun musste:

Bearbeiten Sie / etc / network / interfaces und fügen Sie die Zeilengruppe für statische Adressen hinzu. Entfernen Sie andere Verweise auf die statische Schnittstelle (in diesem Fall eth0). Die Auto-Zeile ist wichtig, da die Schnittstelle sonst beim Booten nicht startet:

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

Deaktivieren Sie als Nächstes dhcpcd und aktivieren Sie das Standardnetzwerk:

  • Deaktiviere dhcpcd: systemctl disable dhcpcd.service
  • Netzwerk aktivieren: systemctl enable networking
  • neustarten

Raspbian Jessie verwendet ab dem Release vom 11.01.2017 offenbar nicht die Netzwerkfunktionen von systemd

SteveB
quelle
0

Versuchte ein paar Dinge und fand das

 apt list --installed | grep dhcp

gefunden:

dhcpcd5 
isc-dhcp-client
isc-dhcp-common

Ich habe gerade deaktiviert dhcpcd5und das behoben mit:

 sudo apt-get remove dhcpcd5

einen Neustart und alles war dandy

Mick65
quelle