README.md aktualisiert
This commit is contained in:
238
README.md
238
README.md
@@ -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"!
|
||||||
|
```
|
||||||
Reference in New Issue
Block a user