Home Server – IP ändert sich nach Neustart
Server-Infos
| Eigenschaft | Wert |
|---|---|
| Betriebssystem | Ubuntu 24.04.4 LTS |
| Hostname | minecraft |
| Netzwerkkarte | eno1 (MAC: ac:e2:d3:05:b8:46) |
| Gewünschte feste IP | 192.168.178.57 |
| Falsche IP (nach Neustart) | 192.168.178.117 |
| Gateway / DNS | 192.168.178.1 (Fritzbox) |
| Netplan-Konfig | /etc/netplan/01-static.yaml |
Was war das Problem?
Ubuntu 24.04 verwendet Netplan zur Netzwerkkonfiguration. Beim Boot gab es zwei widersprüchliche Netplan-Dateien:
| Datei | Inhalt | Problem |
|---|---|---|
/etc/netplan/01-static.yaml |
Feste IP für Interface ens18 |
Falsches Interface – das echte heißt eno1 |
/etc/netplan/50-cloud-init.yaml |
DHCP für eno1 |
Überschrieb die statische Konfig, weil Dateinamen alphabetisch/numerisch priorisiert werden |
cloud-init ist ein Dienst der beim Boot automatisch Netzwerkkonfigurationen generiert und die 50-cloud-init.yaml bei jedem Neustart neu erstellt hat. Da diese Datei dhcp4: true für eno1 gesetzt hat, hat der Server jedes Mal eine zufällige IP vom Fritzbox-DHCP bekommen – obwohl die statische Konfig vorhanden war.
Angewandte Lösung (Einmalig durchgeführt)
Schritt 1 – cloud-init dauerhaft für Netzwerk deaktiviert
echo "network: {config: disabled}" > /etc/cloud/cloud.cfg.d/99-disable-network.cfg
→ Verhindert, dass cloud-init die 50-cloud-init.yaml beim nächsten Boot neu erstellt.
Schritt 2 – Die DHCP-Datei gelöscht
rm /etc/netplan/50-cloud-init.yaml
Schritt 3 – Statische Konfig korrigiert
Das Interface ens18 in 01-static.yaml auf das richtige Interface eno1 geändert:
nano /etc/netplan/01-static.yaml
Inhalt der Datei (genau so):
network:
version: 2
ethernets:
eno1:
dhcp4: no
addresses:
- 192.168.178.57/24
routes:
- to: default
via: 192.168.178.1
nameservers:
addresses: [192.168.178.1, 8.8.8.8]
Schritt 4 – Berechtigungen gesetzt und Konfig angewendet
chmod 600 /etc/netplan/01-static.yaml
netplan apply
Schritt 5 – Erfolgreich geprüft
ip addr show eno1
Erwartete Ausgabe (kein dynamic, valid_lft forever):
2: eno1: <BROADCAST,MULTICAST,UP,LOWER_UP> ...
inet 192.168.178.57/24 brd 192.168.178.255 scope global eno1
valid_lft forever preferred_lft forever
Wenn das Problem wieder auftritt – Schritt für Schritt
Diagnose
1. Per SSH verbinden (mit der aktuell falschen IP falls nötig):
ssh root@192.168.178.117
# oder mit der richtigen IP falls erreichbar:
ssh root@192.168.178.57
2. Aktuelle IP und Interface anzeigen:
ip addr show eno1
Wenn dynamic in der Ausgabe steht → DHCP ist wieder aktiv. Weiter mit Schritt 3.
3. Alle vorhandenen Netplan-Dateien anzeigen:
ls -la /etc/netplan/
cat /etc/netplan/*.yaml
Erwartetes Ergebnis: Nur 01-static.yaml mit dhcp4: no.
Wenn 50-cloud-init.yaml wieder vorhanden ist → cloud-init hat sie neu erstellt → weiter mit Fix.
4. cloud-init-Sperre prüfen:
cat /etc/cloud/cloud.cfg.d/99-disable-network.cfg
Erwartete Ausgabe: network: {config: disabled}
Wenn die Datei fehlt oder leer ist → weiter mit Fix Schritt 1.
Fix
Schritt 1 – cloud-init-Sperre neu setzen:
echo "network: {config: disabled}" > /etc/cloud/cloud.cfg.d/99-disable-network.cfg
# Prüfen:
cat /etc/cloud/cloud.cfg.d/99-disable-network.cfg
Schritt 2 – DHCP-Datei löschen:
rm -f /etc/netplan/50-cloud-init.yaml
# Prüfen ob wirklich weg:
ls /etc/netplan/
Schritt 3 – Statische Konfig prüfen und ggf. korrigieren:
cat /etc/netplan/01-static.yaml
Datei muss exakt so aussehen:
network:
version: 2
ethernets:
eno1:
dhcp4: no
addresses:
- 192.168.178.57/24
routes:
- to: default
via: 192.168.178.1
nameservers:
addresses: [192.168.178.1, 8.8.8.8]
Falls die Datei fehlt oder falsch ist, neu schreiben:
cat > /etc/netplan/01-static.yaml << 'NETPLAN'
network:
version: 2
ethernets:
eno1:
dhcp4: no
addresses:
- 192.168.178.57/24
routes:
- to: default
via: 192.168.178.1
nameservers:
addresses: [192.168.178.1, 8.8.8.8]
NETPLAN
Schritt 4 – Berechtigungen setzen:
chmod 600 /etc/netplan/01-static.yaml
# Prüfen (muss -rw------- zeigen):
ls -la /etc/netplan/
Schritt 5 – Konfig anwenden:
netplan apply
Keine Fehlermeldungen = gut. Warnungen über Berechtigungen = chmod aus Schritt 4 wiederholen.
Schritt 6 – IP prüfen:
ip addr show eno1
Erwartete Ausgabe:
inet 192.168.178.57/24 brd 192.168.178.255 scope global eno1
valid_lft forever preferred_lft forever
Kein dynamic → fertig. ✅
Schritt 7 – Neustart zur Bestätigung:
reboot
# Nach dem Neustart neu verbinden und prüfen:
ssh root@192.168.178.57
ip addr show eno1
Wichtige Dateipfade
| Datei | Bedeutung |
|---|---|
/etc/netplan/01-static.yaml |
Netplan-Konfig mit fester IP (die richtige Datei) |
/etc/netplan/50-cloud-init.yaml |
Netplan-Konfig von cloud-init (darf nicht existieren!) |
/etc/cloud/cloud.cfg.d/99-disable-network.cfg |
Sperrdatei für cloud-init Netzwerkkonfig |
Erwarteter Zustand nach dem Fix
root@minecraft:~# ls /etc/netplan/
01-static.yaml # Nur diese eine Datei!
root@minecraft:~# cat /etc/cloud/cloud.cfg.d/99-disable-network.cfg
network: {config: disabled}
root@minecraft:~# ip addr show eno1
2: eno1: ...
inet 192.168.178.57/24 brd 192.168.178.255 scope global eno1
valid_lft forever preferred_lft forever # kein "dynamic"!