
Ich habe einen Linux-Server (Rasperry Pi mit Raspbian als Betriebssystem), der nur eine statische IP verwenden sollte.
Mir ist jedoch aufgefallen, dass es auch eine IP vom DHCP-Server hat (die von DHCP vergebene IP ist 192.168.111.2
). Laut Netzwerkeinstellungen sollte der Server nur eine statische IP verwenden ( 192.168.111.100
).
Die Inhalte 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
Obwohl ich eine statische Konfiguration verwende, kann ich auch über die von DHCP zugewiesene IP per SSH auf das Gerät zugreifen. Außerdem scheint es, als ntpd
würde sowohl die falsche als auch die richtige IP verwendet.
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
Demnach wird ifconfig
die IP 192.168.111.2
nicht genutzt:
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 ich einen DHCP-Daemon laufen habe:
root 2000 1 0 Oct07 ? 00:00:06 /sbin/dhcpcd
Wie deaktiviere ich den DHCP
Start des Daemons und stelle sicher, dass mein Server nur die statische Version verwendet?
Antwort1
Dieses Szenario klingt wirklich seltsam, denn Ihr Setup sollte wie beschrieben funktionieren – und Sie hoffen, dass es funktioniert –, wenn eine statische IP in festgelegt ist /etc/network/interfaces
. Das heißt,diese Diskussion auf der offiziellen Raspberry Pi-Sitekonzentriert sich auf das Problem mit dem Benutzer „rpdom“, der im Beitrag vom „Do., 28. Mai 2015, 06:21 Uhr“ Folgendes feststellt:
Dies passiert in den neuesten Updates. Es wird dadurch verursacht, dass der neue DHCP-Client ignoriert, was die Schnittstellendateien tun, und zusätzlich sein eigenes Ding macht ... das kommt mir verrückt vor. Ich würde mir ansehen, wie ich den DHCP-Client neu konfigurieren kann (ich kann mich nicht erinnern, welcher es ist oder wie ich es mache, ich verwende immer noch den alten, der bei mir funktioniert), ihn deaktivieren oder entfernen kann (falls möglich).
Weiter unten im Thread schlägt Benutzer „KLL“ vorder folgende andere Beitragin ihrer Antwort vom „Montag, 10. August 2015, 12:59 Uhr“. Laut „knute“:
Irgendwann wurde meine
/etc/network/interfaces
Datei durch ein Upgrade mit dem Wort „manuell“ anstelle von „dhcp“ oder „statisch“ geändert, und ich hatte am Ende zwei IP-Adressen, meine statische und eine DHCP-Adresse. Endlich hatte ich Zeit, damit herumzuspielen, und fand heraus, dass esdhcpcd5
anders funktioniert als das, was vorher darin stand. Um nur Ihre statische Adresse zu erhalten, ändern Sie es nicht/etc/network/interfaces
. Setzen Sie das Wort „manuell“ zurück, wenn Sie es geändert haben, und ändern Sie es stattdessen/etc/dhcpcd.conf
wie im Beispiel aus den Dokumenten gezeigt.
Die Idee ist also, dass dhcpcd5
sich das Verhalten von bei einem der Upgrades geändert hat. Und der Vorschlag zur Lösung des Problems besteht darin, alle Änderungen zu entfernen /etc/network/interfaces
und stattdessen die Einstellungen in anzupassen, /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 dhcpcd.conf
finden Sieauf der offiziellen Manpage dazu.
Eine andere Idee ist, die Einstellungen beizubehalten, die Sie in haben, /etc/network/interfaces
aber dann zu bearbeiten /etc/dhcpcd.conf
und die Zeile hinzuzufügen denyinterfaces eth0
, die dem DHCP-Daemon sagt, dass er vollständig ignorieren soll eth0
. Beide Lösungen sollten funktionieren, aber je nach Ihren allgemeinen Netzwerkanforderungen kann eine Lösung die bessere sein.
Antwort2
bei mir hat es funktioniert, wie in der ursprünglichen Frage ein /etc/network/interfaces zu verwenden und einfach den DHCP-Client zu entfernen:
apt-get remove dhcpcd5 isc-dhcp-client isc-dhcp-common
Antwort3
Um Dienste wie dhcpcd zu deaktivieren, verwenden Sie am besten die Systemverwaltungsfunktionen. Damit die Funktion wirksam wird, müssen Sie neu starten – es sei denn, Sie beenden auch den Dienst.
Für Jessie (die systemd
Management verwendet):
sudo systemctl disable dhcpcd.service
Und für die älteren Wheezy ( System-V
Management):
sudo update-rc.d dhcpcd disable
Wenn Sie es jedoch deaktivieren, müssen Sie sicherstellen, dass Sie über eine statische IP-Konfiguration verfügen, da /etc/network/interfaces
Ihre Schnittstellen sonst keine IP-Adresse erhalten.
Antwort4
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 Stanza für die statische Adresse hinzu. Entfernen Sie alle anderen Verweise auf die statische Schnittstelle (in diesem Fall eth0). Die Auto-Zeile ist wichtig, da die Schnittstelle sonst beim Booten nicht gestartet wird:
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:
- Deaktivieren Sie dhcpcd:
systemctl disable dhcpcd.service
- Vernetzung aktivieren:
systemctl enable networking
- Neustart
Raspbian Jessie scheint seit der Version vom 11.01.2017 die Netzwerkfunktionen von systemd nicht mehr zu nutzen.