From 6c995f30c855dd6feed7a17d345a867c3dae1fd7 Mon Sep 17 00:00:00 2001 From: M_Viper Date: Thu, 4 Jun 2026 05:28:48 +0000 Subject: [PATCH] README.md aktualisiert --- README.md | 238 +++++++++++++++++++++++++++++++++++++++++------------- 1 file changed, 180 insertions(+), 58 deletions(-) diff --git a/README.md b/README.md index fff3f70..aa54156 100644 --- a/README.md +++ b/README.md @@ -1,32 +1,51 @@ # Home Server – IP ändert sich nach Neustart -## Was war das Problem? +## Server-Infos -Ubuntu 24.04 nutzt **Netplan** zur Netzwerkkonfiguration. -Es gab zwei widersprüchliche Netplan-Dateien: - -| Datei | Inhalt | Problem | -|---|---|---| -| `01-static.yaml` | Feste IP für `ens18` | Falsches Interface (Interface heißt `eno1`) | -| `50-cloud-init.yaml` | DHCP für `eno1` | Überschrieb die statische Konfig | - -`cloud-init` hat die DHCP-Datei bei jedem Boot neu erstellt → der Server bekam jedes Mal eine zufällige IP vom Router. +| 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` | --- -## 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 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 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 network: version: 2 @@ -42,62 +61,165 @@ network: addresses: [192.168.178.1, 8.8.8.8] ``` -### 4. Berechtigungen gesetzt und angewendet +### Schritt 4 – Berechtigungen gesetzt und Konfig angewendet ```bash chmod 600 /etc/netplan/01-static.yaml netplan apply ``` ---- - -## Wenn das Problem wieder auftritt - -### Schritt 1 – Aktuelle IP und Interface prüfen +### Schritt 5 – Erfolgreich geprüft ```bash ip addr show eno1 ``` -Richtige IP: `192.168.178.57` -Wenn `dynamic` in der Ausgabe steht → DHCP ist wieder aktiv. - -### Schritt 2 – Netplan-Dateien prüfen -```bash -cat /etc/netplan/*.yaml +Erwartete Ausgabe (kein `dynamic`, `valid_lft forever`): ``` -Es darf **nur eine Datei** existieren (`01-static.yaml`) mit `dhcp4: no`. -Wenn `50-cloud-init.yaml` wieder da ist → cloud-init hat sie neu erstellt. - -### 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 +2: eno1: ... + inet 192.168.178.57/24 brd 192.168.178.255 scope global eno1 + valid_lft forever preferred_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 | -| Hostname | minecraft | -| Netzwerkkarte | `eno1` (MAC: `ac:e2:d3:05:b8:46`) | -| Feste IP | `192.168.178.57` | -| Gateway / DNS | `192.168.178.1` (Fritzbox) | -| Netplan-Konfig | `/etc/netplan/01-static.yaml` | \ No newline at end of file +| `/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 + +```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"! +``` \ No newline at end of file