README.md aktualisiert

This commit is contained in:
2026-06-04 05:28:48 +00:00
parent 5bbc94e3d9
commit 6c995f30c8

238
README.md
View File

@@ -1,32 +1,51 @@
# Home Server IP ändert sich nach Neustart # Home Server IP ändert sich nach Neustart
## Was war das Problem? ## Server-Infos
Ubuntu 24.04 nutzt **Netplan** zur Netzwerkkonfiguration. | Eigenschaft | Wert |
Es gab zwei widersprüchliche Netplan-Dateien: |---|---|
| Betriebssystem | Ubuntu 24.04.4 LTS |
| Datei | Inhalt | Problem | | Hostname | minecraft |
|---|---|---| | Netzwerkkarte | `eno1` (MAC: `ac:e2:d3:05:b8:46`) |
| `01-static.yaml` | Feste IP für `ens18` | Falsches Interface (Interface heißt `eno1`) | | Gewünschte feste IP | `192.168.178.57` |
| `50-cloud-init.yaml` | DHCP für `eno1` | Überschrieb die statische Konfig | | Falsche IP (nach Neustart) | `192.168.178.117` |
| Gateway / DNS | `192.168.178.1` (Fritzbox) |
`cloud-init` hat die DHCP-Datei bei jedem Boot neu erstellt → der Server bekam jedes Mal eine zufällige IP vom Router. | Netplan-Konfig | `/etc/netplan/01-static.yaml` |
--- ---
## Angewandte Lösung ## Was war das Problem?
### 1. cloud-init für Netzwerk deaktiviert 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
```bash ```bash
echo "network: {config: disabled}" > /etc/cloud/cloud.cfg.d/99-disable-network.cfg 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.
### 2. DHCP-Datei gelöscht ### Schritt 2 Die DHCP-Datei gelöscht
```bash ```bash
rm /etc/netplan/50-cloud-init.yaml rm /etc/netplan/50-cloud-init.yaml
``` ```
### 3. Statische Konfig korrigiert (`/etc/netplan/01-static.yaml`) ### Schritt 3 Statische Konfig korrigiert
Das Interface `ens18` in `01-static.yaml` auf das richtige Interface `eno1` geändert:
```bash
nano /etc/netplan/01-static.yaml
```
Inhalt der Datei (genau so):
```yaml ```yaml
network: network:
version: 2 version: 2
@@ -42,62 +61,165 @@ network:
addresses: [192.168.178.1, 8.8.8.8] addresses: [192.168.178.1, 8.8.8.8]
``` ```
### 4. Berechtigungen gesetzt und angewendet ### Schritt 4 Berechtigungen gesetzt und Konfig angewendet
```bash ```bash
chmod 600 /etc/netplan/01-static.yaml chmod 600 /etc/netplan/01-static.yaml
netplan apply netplan apply
``` ```
--- ### Schritt 5 Erfolgreich geprüft
## Wenn das Problem wieder auftritt
### Schritt 1 Aktuelle IP und Interface prüfen
```bash ```bash
ip addr show eno1 ip addr show eno1
``` ```
Richtige IP: `192.168.178.57` Erwartete Ausgabe (kein `dynamic`, `valid_lft forever`):
Wenn `dynamic` in der Ausgabe steht → DHCP ist wieder aktiv.
### Schritt 2 Netplan-Dateien prüfen
```bash
cat /etc/netplan/*.yaml
``` ```
Es darf **nur eine Datei** existieren (`01-static.yaml`) mit `dhcp4: no`. 2: eno1: <BROADCAST,MULTICAST,UP,LOWER_UP> ...
Wenn `50-cloud-init.yaml` wieder da ist → cloud-init hat sie neu erstellt. inet 192.168.178.57/24 brd 192.168.178.255 scope global eno1
valid_lft forever preferred_lft forever
### Schritt 3 cloud-init-Sperre prüfen
```bash
cat /etc/cloud/cloud.cfg.d/99-disable-network.cfg
```
Ausgabe muss sein: `network: {config: disabled}`
Wenn die Datei fehlt → neu anlegen:
```bash
echo "network: {config: disabled}" > /etc/cloud/cloud.cfg.d/99-disable-network.cfg
```
### Schritt 4 DHCP-Datei wieder löschen
```bash
rm -f /etc/netplan/50-cloud-init.yaml
```
### Schritt 5 Statische Konfig prüfen und anwenden
```bash
cat /etc/netplan/01-static.yaml # Inhalt kontrollieren
chmod 600 /etc/netplan/01-static.yaml
netplan apply
ip addr show eno1 # Prüfen: kein "dynamic", valid_lft forever
``` ```
--- ---
## Server-Infos ## Wenn das Problem wieder auftritt Schritt für Schritt
| Eigenschaft | Wert | ### Diagnose
**1. Per SSH verbinden (mit der aktuell falschen IP falls nötig):**
```bash
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:**
```bash
ip addr show eno1
```
Wenn `dynamic` in der Ausgabe steht → DHCP ist wieder aktiv. Weiter mit Schritt 3.
**3. Alle vorhandenen Netplan-Dateien anzeigen:**
```bash
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:**
```bash
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:**
```bash
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:**
```bash
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:**
```bash
cat /etc/netplan/01-static.yaml
```
Datei muss **exakt** so aussehen:
```yaml
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:
```bash
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:**
```bash
chmod 600 /etc/netplan/01-static.yaml
# Prüfen (muss -rw------- zeigen):
ls -la /etc/netplan/
```
**Schritt 5 Konfig anwenden:**
```bash
netplan apply
```
Keine Fehlermeldungen = gut. Warnungen über Berechtigungen = chmod aus Schritt 4 wiederholen.
**Schritt 6 IP prüfen:**
```bash
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:**
```bash
reboot
# Nach dem Neustart neu verbinden und prüfen:
ssh root@192.168.178.57
ip addr show eno1
```
---
## Wichtige Dateipfade
| Datei | Bedeutung |
|---|---| |---|---|
| Betriebssystem | Ubuntu 24.04.4 LTS | | `/etc/netplan/01-static.yaml` | Netplan-Konfig mit fester IP (die richtige Datei) |
| Hostname | minecraft | | `/etc/netplan/50-cloud-init.yaml` | Netplan-Konfig von cloud-init (darf nicht existieren!) |
| Netzwerkkarte | `eno1` (MAC: `ac:e2:d3:05:b8:46`) | | `/etc/cloud/cloud.cfg.d/99-disable-network.cfg` | Sperrdatei für cloud-init Netzwerkkonfig |
| Feste IP | `192.168.178.57` |
| Gateway / DNS | `192.168.178.1` (Fritzbox) | ## Erwarteter Zustand nach dem Fix
| Netplan-Konfig | `/etc/netplan/01-static.yaml` |
```bash
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"!
```