Zum Inhalt springen
LF10 Homelab · Gesamtdokumentation
Zur Dokumentübersicht
Darstellung

Technische Gesamtdokumentation · Lern- und Laborumgebung

LF10 Homelab: Netzwerk-, Server- und Infrastrukturdienste

Acht aufeinander aufbauende Cluster zeigen den Weg vom virtuellen Netzwerk über zentrale Server- und Speicherdienste bis zu Web-, Container- und Mailanwendungen. Im Mittelpunkt stehen nachvollziehbares Vorgehen, Fehleranalyse und die Kontrolle der jeweiligen Ergebnisse.

Aufbau

Systemrollen und Abhängigkeiten werden schrittweise entwickelt.

Fehleranalyse

Zwischenzustände werden als nachvollziehbare Diagnosewege erklärt.

Funktionsprüfung

Dienstzustände werden mit Client-, Browser- oder Befehlsprüfungen abgeglichen.

LF10 Homelab · Netzwerkgrundlage

Cluster 1: Netzwerkbasis, Router und Client

Der erste Cluster schafft das interne Labornetz, verbindet den Client über einen Linux-Router mit dem externen Netz und grenzt ein fehlerhaftes Router-Interface systematisch ein.

Virtuelles Netz aufbauen und einen Verbindungsfehler systematisch eingrenzen.

Kapitel in diesem Cluster

Netzwerkgrundlage

Überblick

In Cluster 1 wurde die technische Basis des LF10-Homelabs aufgebaut: Hyper-V-Unterbau, internes Firmennetz, Debian-Router und Linux-Client CL01. Der Router wurde als Übergang zwischen externem Lab-Netz und internem Homelab-Netz vorbereitet, inklusive IP-Forwarding und NAT/MASQUERADE. Während des ersten Internettests auf CL01 trat ein Fehler auf, der systematisch auf eine falsch eingetragene Router-LAN-IP in /etc/network/interfaces zurückgeführt wurde. Nach Korrektur von 192.169.10.1/24 auf 192.168.10.1/24 wurde der IP-basierte Internetzugriff von CL01 mit ping 1.1.1.1 belegt.

Netzwerkgrundlage

Rolle im Homelab

Cluster 1 schafft die Basiskonnektivität für Proxmox, SRV1, DHCP, DNS, Storage, Backup und Webdienste. Die Prüfkette führt vom virtuellen Switch über Router, IPv4-Forwarding und NAT bis zum erfolgreichen Verbindungstest auf CL01.

Netzwerkgrundlage

Zielsetzung

Ziel war es, ein isoliertes internes Lab-Netz aufzubauen, in dem CL01 über einen Debian-Router Internetzugriff erhält. Der Router sollte eine externe Schnittstelle im vorgegebenen Lab-Netz und eine interne Schnittstelle im Homelab-Netz besitzen. CL01 sollte statisch mit 192.168.10.50/24 konfiguriert werden und den Router unter 192.168.10.1 als Gateway verwenden.

Netzwerkgrundlage

System- und Netzwerkübersicht

KomponenteRolleRelevante KonfigurationErgebnis
Hyper-V-Host / RemoteLabVirtualisierungsunterbauHyper-V-Manager, virtuelle Switchesbelegt
Firmennetzinternes privates Homelab-Netzprivater Hyper-V-Switchbelegt
RouterDebian-RouterWAN: 10.100.20.38/24, LAN: 192.168.10.1/24 nach KorrekturFehlerverlauf und Korrektur sichtbar
CL01Linux-Client192.168.10.50/24, Gateway 192.168.10.1belegt
Externes ZielInternettest1.1.1.1belegt per Ping

Netzwerkgrundlage

Technische Entscheidungen

Prüfkette vom Netzwerkaufbau bis zum Verbindungstest

Die Prüfkette verbindet den privaten Hyper-V-Switch, Router-WAN und -LAN, IPv4-Forwarding, NAT, die statische CL01-Konfiguration, die Fehlerdiagnose und den Verbindungstest nach der Korrektur.

Fehlerursache durch eine Prüfkette eingrenzen

Der Fehler mit 192.169.10.1 wird nicht geglättet. Er ist ein zentraler Troubleshooting-Fall, weil er zeigt, wie ein zunächst allgemeines Symptom „kein Internet“ durch systematische Prüfungen auf eine konkrete Ursache reduziert wurde.

Prüfreihenfolge nach der Korrektur

Die Prüfreihenfolge verbindet Switch-Zuordnung, CL01-Netzwerte, Gateway-Erreichbarkeit, Router-LAN-Adresse und den externen Ping. Der Tippfehler 192.169.10.1 wird dabei dem korrigierten Wert 192.168.10.1 gegenübergestellt.

Netzwerkgrundlage

Umsetzung und Prüfung

Virtuelles internes Netz

Der private Hyper-V-Switch bildet das interne Firmennetz. Dieser Switch ist die Layer-2-Grundlage, über die CL01 und das interne Router-Interface miteinander kommunizieren sollen.

Prüfung: Hyper-V Switch Aussage: Sichtbar sind den Hyper-V-Kontext und die Erstellung bzw. Verwaltung eines privaten virtuellen Switches. Grenze: Nicht geprüft ist, ob Router und CL01 später korrekt miteinander kommunizieren.

Privater Hyper-V-Switch Firmennetz
Der private Hyper-V-Switch „Firmennetz“ verbindet Router und CL01 im internen Labornetz.

Router: Forwarding und NAT

Der Router benötigt zwei Bedingungen für die spätere Weiterleitung von CL01-Traffic: aktiviertes IPv4-Forwarding und eine NAT-/MASQUERADE-Regel für das interne Netz.

BelegErgebnisAussage
IP Forwardinggeprüfter Zustandnet.ipv4.ip_forward = 1 ist aktiv.
NAT MASQUERADEgeprüfter ZustandNAT-/MASQUERADE-Regel ist vorhanden.
iptables PersistenzKonfigurationsbelegNAT-Regeln werden per iptables-save persistiert.
Aktiviertes IPv4-Forwarding am Router
Die Routerausgabe zeigt den aktiven Wert net.ipv4.ip_forward = 1.
NAT-MASQUERADE-Regel für das interne Netz
Die iptables-Regel setzt MASQUERADE für ausgehenden Verkehr des internen Netzes.
Persistierte iptables-Konfiguration
iptables-save schreibt die NAT-Regeln in die persistente Konfiguration; ein Neustarttest fehlt.

Zwischenergebnis: Forwarding und NAT wurden technisch vorbereitet. Ein End-to-End-Erfolg liegt zu diesem Zeitpunkt noch nicht vor, weil CL01 den Router zu diesem Zeitpunkt wegen der später entdeckten LAN-IP-Abweichung nicht erreichen konnte.

CL01: statische IPv4-Konfiguration

CL01 wurde statisch für das interne Netz konfiguriert. Die relevanten Zielwerte waren:

IP-Adresse: 192.168.10.50/24
Gateway:    192.168.10.1

Die sichtbaren NetworkManager-Werte zeigen die manuelle Konfiguration; entscheidend bleiben Gateway- und Verbindungstest.

Statische IPv4-Konfiguration von CL01
CL01 wird mit der statischen Adresse 192.168.10.50/24 für das interne Netz konfiguriert.
IPv4-Einstellungen von CL01
Die IPv4-Einstellungen von CL01 enthalten Adresse, Präfix und Gateway des Labornetzes.
Abgeschlossene Netzwerkkonfiguration von CL01
Die statische Netzwerkkonfiguration von CL01 ist gespeichert.

Netzwerkgrundlage

Fehleranalyse und Korrektur

Initiales Fehlerbild: CL01 erreicht 1.1.1.1 nicht

Der erste Internettest auf CL01 schlägt mit Destination Host Unreachable beziehungsweise einer fehlgeschlagenen Route zum Ziel fehl. Damit beginnt die Prüfung von Route, Gateway, ARP und Router-LAN-Adresse.

Erster fehlgeschlagener Ping von CL01 zu 1.1.1.1
Der erste Ping von CL01 zu 1.1.1.1 scheitert und eröffnet die Fehlersuche.
Wiederholter fehlgeschlagener Ping von CL01
Der wiederholte Ping meldet ein nicht erreichbares Ziel; die Störung liegt vor dem externen Ziel.

Diagnose: IP und Default Route vorhanden, Gateway aber unerreichbar

Die nächste Prüfung zeigte, dass CL01 eine IP-Adresse und eine Default Route über 192.168.10.1 hatte. Trotzdem war ping 192.168.10.1 nicht erfolgreich. Damit wurde die Ursache enger eingegrenzt: Der Fehler lag nicht an einer vollständig fehlenden Route, sondern an der Erreichbarkeit des Gateways.

Fehlgeschlagener Gatewaytest von CL01
Auch der Ping zum vorgesehenen Gateway 192.168.10.1 scheitert.

ARP/Neighbor-Diagnose: INCOMPLETE

ip neigh show meldete für 192.168.10.1 den Zustand INCOMPLETE. Das bedeutet, dass CL01 keine MAC-Adresse für den Gateway erhielt. Fachlich deutet das auf ein Layer-2-Problem, eine falsche Switch-Zuordnung oder eine falsche Router-LAN-IP hin.

Unvollständiger ARP-Eintrag für das Gateway
Der ARP-Eintrag für das Gateway bleibt INCOMPLETE und grenzt die Ursache auf den lokalen Netzpfad ein.

Hyper-V-Switch-Zuordnung geprüft

Die Hyper-V-Zuordnungen verbinden CL01 mit dem Firmennetz und den Router mit externem Lab-Switch sowie Firmennetz. Damit ist die Switch-Zuordnung als primäre Fehlerursache unwahrscheinlich.

Hyper-V-Switch-Zuordnung des Routers
Die Hyper-V-Einstellungen zeigen die Switch-Zuordnung der Router-Netzadapter.
Hyper-V-Switch-Zuordnung von CL01
CL01 ist dem privaten Hyper-V-Switch „Firmennetz“ zugeordnet.

Ursache: Tippfehler auf dem Router-LAN-Interface

Die Router-Ausgabe zeigte auf eth1 die Adresse 192.169.10.1/24. Erwartet war 192.168.10.1/24. Damit befand sich das Router-LAN-Interface in einem anderen Subnetz als CL01.

CL01:       192.168.10.50/24
Gateway:    192.168.10.1
Router eth1:192.169.10.1/24   falsch

Der frühere Router-Beleg Router-LAN im falschen Subnetz – Fehlerbild wird hier bewusst als Fehlerbild eingebunden, weil er den Router vor der Korrektur mit der falschen LAN-Adresse zeigt. Er ist kein Erfolgsbeleg, sondern der direkte visuelle Beleg für das falsche Subnetz.

Router-LAN-Adresse im falschen Subnetz
Das Router-LAN verwendet 192.169.10.1 statt 192.168.10.1 und liegt dadurch im falschen Subnetz.
Bestätigte falsche LAN-Adresse des Routers
Die Routerkonfiguration bestätigt den Tippfehler 192.169.10.1 als Fehlerursache.

Die Ursache wurde zusätzlich in /etc/network/interfaces sichtbar. Dort war die falsche Adresse eingetragen.

Tippfehler in der Router-Interfaces-Datei
In /etc/network/interfaces steht die fehlerhafte LAN-Adresse 192.169.10.1.

Korrektur

Die IP wurde zunächst zur Laufzeit korrigiert und anschließend dauerhaft in /etc/network/interfaces berichtigt.

Temporär korrigierte Router-LAN-Adresse
Die LAN-Adresse des Routers wird für die Gegenprüfung vorübergehend auf 192.168.10.1 korrigiert.
Korrigierte Router-Interfaces-Datei
/etc/network/interfaces enthält nach der Korrektur die LAN-Adresse 192.168.10.1/24.

Test nach der Korrektur: CL01 erreicht 1.1.1.1

Nach der Korrektur konnte CL01 1.1.1.1 erfolgreich pingen. Damit ist IP-basierter Internetzugriff über den Router belegt.

Erfolgreicher Ping von CL01 zu 1.1.1.1
Nach der Korrektur erreicht CL01 das externe Ziel 1.1.1.1 per Ping.

Netzwerkgrundlage

Ergebnis

BereichErgebnisTechnischer Stand
Virtueller NetzunterbaueingerichtetGrundlage vorhanden
Router-Forwardingbelegtnet.ipv4.ip_forward = 1
Router-NATbelegtMASQUERADE-Regel vorhanden
CL01 statische KonfigurationbelegtIP-Adresse und Gateway gesetzt
FehlerursachegesichertTippfehler 192.169.10.1 in /etc/network/interfaces
KorrekturkorrigiertRouter-LAN-IP auf 192.168.10.1/24 korrigiert
Internet per IPbelegtping 1.1.1.1 erfolgreich
DNS-Testnicht separat geprüftKeine separate Abbildung für externen DNS-Test vorhanden
Router-Neustarttestohne Neustart-/Reload-TestPersistenz konfiguriert, aber kein Neustart-/Reload-Test als eigener Beleg

Netzwerkgrundlage

Fachliche Grenzen

Router, NAT, CL01-Konfiguration, Fehlerdiagnose, Korrektur und der IP-basierte Internettest sind sichtbar. Fachliche Grenzen bleiben:

  • Eine separate Abbildung ping 192.168.10.1 nach Korrektur liegt nicht als eigene Prüfung vor. Der erfolgreiche ping 1.1.1.1 setzt jedoch funktionierende Gateway-Erreichbarkeit praktisch voraus.
  • Ein externer DNS-Test ist in Cluster 1 nicht separat abgebildet; die interne DNS-Rolle wird erst in Cluster 3 aufgebaut.
  • Die korrigierte LAN-Adresse steht in /etc/network/interfaces; ein Router-Neustart oder Networking-Reload wurde danach nicht geprüft.

Netzwerkgrundlage

Erkenntnisse

Die Diagnosekette beginnt mit lokaler IP-Konfiguration, Route, Gateway-Erreichbarkeit und ARP. Erst danach werden Router-Forwarding, NAT und externe Namensauflösung geprüft.

Netzwerkgrundlage

Praxisfälle der Fehleranalyse

Der zentrale Praxisfall behandelt den Fehler 192.169.10.1 statt 192.168.10.1 und die daraus resultierende ARP- und Gateway-Störung.

Netzwerkgrundlage

Fazit

Router, IPv4-Forwarding, NAT und die statische CL01-Konfiguration arbeiten nach der Korrektur der LAN-Adresse zusammen; der Ping zu 1.1.1.1 ist erfolgreich. Für den abschließenden Gateway-Ping und den externen DNS-Test liegen keine separaten Abbildungen vor. Ein Router-Neustart oder Networking-Reload wurde nach der persistenten Korrektur nicht geprüft.

Zum Dokumentanfang

LF10 Homelab · Virtualisierung und Serverbasis

Cluster 2: Proxmox, SRV1 und SSH-Basis

Proxmox wird als virtuelle Maschine in Hyper-V vorbereitet. Darin entsteht SRV1 als Debian-Server, der anschließend aus dem internen Netz per SSH administriert wird.

Einen verschachtelten Virtualisierungshost und den ersten Linux-Server bereitstellen.

Kapitel in diesem Cluster

Virtualisierung und Serverbasis

Überblick

In Cluster 2 wurde das LF10-Homelab um einen Nested-Virtualisierungshost auf Basis von Proxmox erweitert. Auf diesem Proxmox-System wurde mit SRV1 der erste Debian-Server für spätere zentrale Dienste vorbereitet. Der Cluster schließt mit der administrativen Erreichbarkeit von SRV1 per SSH von CL01 ab. Für MAC-Spoofing, eine spätere Abfrage von ExposeVirtualizationExtensions und den sudo-Funktionstest liegen keine separaten Prüfungen vor.

Virtualisierung und Serverbasis

Rolle im Homelab

Cluster 1 stellte die Netzgrundlage bereit: Firmennetz, Router, NAT, Gateway und CL01. Cluster 2 nutzt diese Grundlage und ergänzt die Serverbereitstellungsschicht. Proxmox übernimmt die Rolle eines verschachtelten Virtualisierungshosts im Hyper-V-basierten Lab. SRV1 ist der erste Server innerhalb dieser Proxmox-Schicht und wird in späteren Clustern für DHCP, DNS und SSH-Härtung weiterverwendet.

Die zentrale Architekturentscheidung lautet: Proxmox läuft als VM in Hyper-V, und SRV1 läuft wiederum als VM innerhalb von Proxmox. Damit entsteht bewusst eine verschachtelte Virtualisierungsumgebung, die im Kurskontext den Aufbau mehrerer Serverdienste mit begrenzten Ressourcen ermöglicht.

Virtualisierung und Serverbasis

Zielsetzung

Die Arbeitsschritte in Cluster 2 umfassen:

  1. Proxmox wurde als Hyper-V-VM für Nested Virtualization vorbereitet.
  2. Proxmox ist im internen Netz unter 192.168.10.10 erreichbar.
  3. Die Weboberfläche ist über https://192.168.10.10:8006 nutzbar.
  4. SRV1 wurde als Debian-VM in Proxmox erstellt.
  5. SRV1 wurde als Server ohne grafische Oberfläche installiert.
  6. SRV1 ist mit 192.168.10.11/24 ins Firmennetz integriert.
  7. sudo wurde für den Benutzer student vorbereitet.
  8. Der Zugriff von CL01 auf SRV1 per SSH funktioniert.

Virtualisierung und Serverbasis

Arbeitsgrundlagen

Die Aufgaben basieren auf drei Kursunterlagen zu Virtualisierungshost, SRV1-Installation und SSH-Zugriff:

KursunterlageThemaRelevanz
Kursunterlage „Installation Virtualisierungshost“Installation VirtualisierungshostProxmox-VM, Secure Boot, CPU, MAC-Spoofing, Nested Virtualization, Proxmox-IP
Kursunterlage „Installation SRV1“Installation SRV1Debian-ISO, SRV1-VM, OVMF/UEFI, QEMU-Agent, CPU/RAM, Autostart, manuelle Netzwerte
Kursunterlage „SSH-Verbindung herstellen“SSH-Verbindung herstellenSSH-Verbindung von CL01 zu SRV1

Die SSH-Kursunterlage trennt den Befehl optisch; verwendet wird die korrekte Form ssh student@192.168.10.11.

Virtualisierung und Serverbasis

Systemrollen

SystemRolleRelevante Adresse / Eigenschaft
Hyper-V / RemoteLabUnterbau für Router, CL01 und ProxmoxHost der Proxmox-VM
Firmennetzinternes Lab-Netz192.168.10.0/24
RouterGateway aus Cluster 1192.168.10.1
CL01Admin-ClientSSH-Client für SRV1
Proxmox / pveNested-Hypervisor192.168.10.10/24
SRV1 / srv1erster Debian-Server192.168.10.11/24

Virtualisierung und Serverbasis

Technische Entscheidungen

Proxmox als Nested-Hypervisor

Proxmox läuft als Hyper-V-VM und benötigt dafür Nested Virtualization. Die Hyper-V-Konfiguration umfasst vier vCPU, deaktiviertes Secure Boot und gesetzte ExposeVirtualizationExtensions.

MAC-Spoofing als fachliche Grenze

Die Aufgabenstellung fordert MAC-Spoofing; in den vorhandenen Abbildungen ist diese Hyper-V-Einstellung nicht eindeutig sichtbar und bleibt daher eine fachliche Grenze.

SRV1 als Server ohne GUI

SRV1 soll später zentrale Dienste bereitstellen. Dafür wurde Debian ohne Desktopumgebung, aber mit SSH-Server und Standard-Systemwerkzeugen ausgewählt.

Grenzen der Einzelprüfungen

Nicht separat geprüft wurden MAC-Spoofing, die Auslese von Nested Virtualization, der vollständige SRV1-Systemzustand und die sudo-Funktion.

Virtualisierung und Serverbasis

Umsetzung und Prüfung

Hyper-V-Grundkonfiguration für Proxmox

Proxmox wurde im Hyper-V-Manager als Generation-2-VM mit 4096 MB Arbeitsspeicher, VHDX, Proxmox-ISO und Anschluss an den Switch Firmennetz vorbereitet. Zusätzlich wurde Secure Boot deaktiviert und die CPU-Konfiguration auf vier virtuelle Prozessoren gesetzt.

Proxmox-VM mit Gen2, 4096 MB, Firmennetz, VHDX und ISO
Hyper-V Proxmox VM-Assistent Zusammenfassung: Proxmox-VM mit Gen2, 4096 MB, Firmennetz, VHDX und ISO
4 virtuelle Prozessoren; Secure Boot deaktiviert; RAM 4096 MB; NIC Firmennetz sichtbar
Hyper-V Proxmox Einstellungen CPU/Sicherheit: 4 virtuelle Prozessoren; Secure Boot deaktiviert; RAM 4096 MB; NIC Firmennetz sichtbar

Nested Virtualization

Die verschachtelte Virtualisierung wurde auf dem Hyper-V-Host per PowerShell vorbereitet:

Set-VMProcessor -VMName Proxmox -ExposeVirtualizationExtensions $true

Die Ansicht zeigt die Ausführung des Set-Befehls. Eine spätere Abfrage mit Get-VMProcessor liegt nicht separat vor.

Set-VMProcessor -VMName Proxmox -ExposeVirtualizationExtensions $true ausgeführt
PowerShell Nested Virtualization Befehl: Set-VMProcessor -VMName Proxmox -ExposeVirtualizationExtensions $true ausgeführt

Proxmox Management-Netz und Weboberfläche

Während der Proxmox-Installation wurde das Managementinterface mit 192.168.10.10/24, Gateway 192.168.10.1 und DNS 8.8.8.8 konfiguriert. Der Zugriff über den Browser erzeugte die erwartbare Zertifikatswarnung eines selbstsignierten Zertifikats. Danach war die Loginmaske erreichbar und die Weboberfläche nach Anmeldung sichtbar.

Pve.gfn.internal, 192.168.10.10/24, Gateway 192.168.10.1, DNS 8.8.8.8
Proxmox Management Network: pve.gfn.internal, 192.168.10.10/24, Gateway 192.168.10.1, DNS 8.8.8.8
Zugriff auf 192.168.10.10:8006 löst Warnung wegen selbstsigniertem Zertifikat aus
Firefox Zertifikatswarnung Proxmox: Zugriff auf 192.168.10.10:8006 löst Warnung wegen selbstsigniertem Zertifikat aus
Proxmox Login erreichbar
Proxmox Loginmaske: Proxmox Login erreichbar
Proxmox VE 9.1.1 WebUI nach Login mit Subscription-Warnung
Proxmox Weboberfläche / keine Subscription: Proxmox VE 9.1.1 WebUI nach Login mit Subscription-Warnung

Debian-ISO und SRV1-VM in Proxmox

Die Debian-ISO wurde in Proxmox heruntergeladen und für die neue VM SRV1 verwendet. Die VM wurde als VM-ID 100 angelegt und mit den vorgegebenen Parametern vorbereitet.

Taskausgabe / ISO-Download Abschluss
Proxmox ISO Download abgeschlossen: Taskausgabe / ISO-Download Abschluss
VM 100, Name SRV1
SRV1 VM-Assistent Allgemein: VM 100, Name SRV1
Debian-ISO als Installationsmedium
SRV1 OS/ISO Auswahl: Debian-ISO als Installationsmedium

SRV1-Systemkonfiguration

Für SRV1 wurden OVMF/UEFI, EFI-Disk und QEMU-Agent gesetzt. Die VM erhielt zwei CPU-Kerne, 2048 MiB RAM mit 1024 MiB Mindestwert, eine Netzwerkkarte und die Autostart-Option. Die Hardwareübersicht nach der Erstellung dient als konsolidierender Beleg.

OVMF UEFI, EFI-Disk, QEMU Agent aktiviert
SRV1 System OVMF/QEMU Agent: OVMF UEFI, EFI-Disk, QEMU Agent aktiviert
2 Kerne und CPU-Typ x86-64-v2-AES
SRV1 CPU: 2 Kerne und CPU-Typ x86-64-v2-AES
2048 MiB RAM, min. 1024 MiB Ballooning
SRV1 Memory: 2048 MiB RAM, min. 1024 MiB Ballooning
Netzwerkadapter/Bridge-Konfiguration in Proxmox
SRV1 Netzwerk: Netzwerkadapter/Bridge-Konfiguration in Proxmox
Beim Booten starten = Ja
SRV1 Autostart gesetzt: Beim Booten starten = Ja
Hardware der VM 100 (SRV1)
SRV1 Hardwareübersicht: Hardware der VM 100 (SRV1)

Manuelle Netzwerkkonfiguration und Identität von SRV1

Im Debian-Installer wurde SRV1 mit der Adresse 192.168.10.11/24, Gateway 192.168.10.1, DNS 8.8.8.8, Hostname srv1 und Domain gfn.internal konfiguriert. Der externe DNS ist in diesem Cluster noch temporär; die interne DNS-Rolle folgt später in Cluster 3.

IP-Adresse vermutlich 192.168.10.11/24
SRV1 IP-Adresse: IP-Adresse vermutlich 192.168.10.11/24
Gateway 192.168.10.1
SRV1 Gateway: Gateway 192.168.10.1
DNS-Server 8.8.8.8
SRV1 DNS: DNS-Server 8.8.8.8
Hostname srv1
SRV1 Hostname: Hostname srv1
Domain gfn.internal
SRV1 Domain: Domain gfn.internal

Serverinstallation ohne GUI und sudo-Vorbereitung

Die Softwareauswahl zeigt, dass keine Desktopumgebung, sondern die serverrelevanten Komponenten einschließlich SSH-Server und Standard-Systemwerkzeuge installiert wurden. Nach der Installation wurde sudo installiert und der Benutzer student zur sudo-Gruppe hinzugefügt.

Softwareauswahl: SSH-Server und Standard-Systemwerkzeuge relevant
Debian Softwareauswahl: Softwareauswahl: SSH-Server und Standard-Systemwerkzeuge relevant
Installation abgeschlossen/Neustart vorbereiten
Debian Installation fertig: Installation abgeschlossen/Neustart vorbereiten
Apt update && apt install sudo, usermod -aG sudo student
SRV1 sudo nachinstalliert: apt update && apt install sudo, usermod -aG sudo student

SSH-Verbindung von CL01 zu SRV1

Die administrative Erreichbarkeit von SRV1 wird mit einer SSH-Verbindung von CL01 geprüft:

ssh student@192.168.10.11

Sichtbar sind die Hostkey-Abfrage, die Anmeldung als student und den Prompt student@srv1. Damit ist die administrative Erreichbarkeit von SRV1 aus dem Clientnetz belegt.

Ssh student@192.168.10.11, Hostkey akzeptiert, Login erfolgreich, Prompt student@srv1
SSH von CL01 zu SRV1: ssh student@192.168.10.11, Hostkey akzeptiert, Login erfolgreich, Prompt student@srv1

Virtualisierung und Serverbasis

Ergebnis

BereichErgebnisTechnischer Stand
Proxmox-VM in Hyper-VbelegtVM-Grunddaten, RAM, Switch, ISO und VHDX sichtbar
Secure Boot deaktiviertbelegtin Hyper-V-Einstellungen sichtbar
4 vCPUbelegtin Hyper-V-Einstellungen sichtbar
Nested Virtualizationdurchgeführt / teilweise belegtSet-Befehl belegt, spätere Abfrage fehlt
MAC-Spoofingnicht sichtbar belegtlaut Aufgabenstellung erforderlich, Ansicht fehlt
Proxmox Management-IPbelegt192.168.10.10/24 im Installer sichtbar
Proxmox-WeboberflächebelegtZertifikatswarnung, Login und WebUI belegt
Debian-ISObelegtDownload/Task belegt
SRV1-VMbelegtVM-ID, Name, Hardware, Optionen sichtbar
SRV1-NetzwertebelegtIP, Gateway, DNS, Hostname, Domain im Installer sichtbar
SRV1 ohne GUI mit SSHbelegtSoftwareauswahl belegt
sudo für studentdurchgeführt / teilweise belegtInstallation und Gruppenzuweisung belegt, sudo whoami fehlt
SSH von CL01 zu SRV1belegtLogin auf student@srv1 belegt

Virtualisierung und Serverbasis

Fehleranalyse und Abweichungen

Nicht separat geprüft wurden MAC-Spoofing, die Auslese von Nested Virtualization, der vollständige SRV1-Systemzustand und die sudo-Funktion. Für Installation und SSH-Zugriff liegen dagegen direkte Funktionsprüfungen vor.

Virtualisierung und Serverbasis

Erkenntnisse

  1. Nested Virtualization benötigt eine gesetzte und ausgelesene Hyper-V-Konfiguration.

Der Set-Befehl setzt den Wert; eine spätere Ausgabe von Get-VMProcessor liegt nicht vor.

  1. MAC-Spoofing ist für Proxmox in Hyper-V erforderlich; eine sichtbare Ausleseprüfung fehlt.

Wenn Proxmox später eigene VMs betreibt, muss der Hyper-V-Adapter mehrere MAC-Adressen zulassen.

  1. Die SSH-Verbindung von CL01 bestätigt die administrative Erreichbarkeit von SRV1.

Der erfolgreiche Login von CL01 auf SRV1 zeigt praktische Administrierbarkeit.

  1. Temporärer externer DNS ist für Cluster 2 akzeptabel.

Der interne DNS wird erst im nächsten Cluster aufgebaut; bis dahin ist 8.8.8.8 ein Übergangswert.

  1. Serverrolle ohne Desktopumgebung umsetzen.

Die Softwareauswahl ohne Desktopumgebung ist fachlich relevant, weil SRV1 als Serverrolle vorbereitet wird.

Virtualisierung und Serverbasis

Fachliche Grenzen

Technischer PunktFachliche GrenzeBelegter Stand
MAC-SpoofingKeine separate Ausleseprüfung.Die Aufgabenstellung fordert diese Hyper-V-Einstellung; weder Ansicht noch PowerShell-Auslese liegt vor.
Nested VirtualizationSet-Befehl belegt; Ausleseprüfung fehlt.Belegt ist der gesetzte Wert, nicht eine spätere Ausgabe von Get-VMProcessor.
SRV1-Systemzustand nach InstallationDie abschließenden Ausgaben ip -br a, ip r und hostnamectl fehlen.Installation und SSH-Zugriff funktionieren; ip -br a, ip r und hostnamectl wurden nicht gemeinsam ausgegeben.
sudo-FunktionInstallation und Gruppenzuweisung belegt; Funktionstest fehlt.Ein Ergebnis von sudo whoami liegt nicht vor.
Proxmox-ShellstatusSeparate Ausgaben von pveversion, ip -br a und ip r fehlen.Weboberfläche und VM-Bereitstellung ersetzen keine Ausgabe von pveversion, ip -br a und ip r.
Ping-PrüfungenEin eigener Ping-Beleg zu Proxmox oder SRV1 fehlt.Der SSH-Zugriff belegt die Erreichbarkeit von SRV1, nicht einen separaten Ping-Test.

Virtualisierung und Serverbasis

Nicht separat geprüfte Einzelpunkte

Nicht separat geprüft wurden:

  • MAC-Spoofing als separate sichtbare Abbildung,
  • ExposeVirtualizationExtensions=True per Ausleseprüfung,
  • abschließender Linux-Systemcheck auf SRV1 nach dem ersten Login,
  • ein eigenständiger Proxmox-Shell-Betriebscheck,
  • interne DNS-Auflösung über gfn.internal; diese folgt erst in Cluster 3.

Virtualisierung und Serverbasis

Technische Ergebnisse

ThemaAussageFachliche Grenze
Hyper-V Proxmox VM-Assistent ZusammenfassungProxmox-VM mit Gen2, 4096 MB, Firmennetz, VHDX und ISOBelegt Proxmox-VM-Grunddaten; belegt nicht Secure Boot, MAC-Spoofing oder Nested Virtualization.
Hyper-V Proxmox Einstellungen CPU/Sicherheit4 virtuelle Prozessoren; Secure Boot deaktiviert; RAM 4096 MB; NIC Firmennetz sichtbarBelegt CPU/Secure-Boot/RAM/NIC; MAC-Spoofing ist nicht sichtbar.
PowerShell Nested Virtualization BefehlSet-VMProcessor -VMName Proxmox -ExposeVirtualizationExtensions $true ausgeführtBelegt Ausführung des Set-Befehls; separate Abfrage ExposeVirtualizationExtensions=True fehlt.
Proxmox Management Networkpve.gfn.internal, 192.168.10.10/24, Gateway 192.168.10.1, DNS 8.8.8.8Die Management-IP stammt aus dem Installer; Browserwarnung, Loginmaske und angemeldete Weboberfläche zeigen den Webzugriff getrennt.
Firefox Zertifikatswarnung ProxmoxZugriff auf 192.168.10.10:8006 löst Warnung wegen selbstsigniertem Zertifikat ausBelegt Proxmox-Webdienst erreichbar bis Browserwarnung; noch kein Login.
Proxmox LoginmaskeProxmox Login erreichbarBelegt Weboberfläche ist erreichbar; noch kein eingeloggter Zustand.
Proxmox Weboberfläche / keine SubscriptionProxmox VE 9.1.1 WebUI nach Login mit Subscription-WarnungBelegt erfolgreicher Login und laufender Proxmox-Knoten pve.
Proxmox ISO Download abgeschlossenTaskausgabe / ISO-Download AbschlussBelegt Debian-ISO wurde heruntergeladen.
SRV1 VM-Assistent AllgemeinVM 100, Name SRV1Belegt VM-Name und ID.
SRV1 OS/ISO AuswahlDebian-ISO als InstallationsmediumBelegt ISO-Zuordnung für SRV1.
SRV1 System OVMF/QEMU AgentOVMF UEFI, EFI-Disk, QEMU Agent aktiviertBelegt zentrale Systemvorgaben.
SRV1 CPU2 Kerne und CPU-Typ x86-64-v2-AESBelegt CPU-Konfiguration.
SRV1 Memory2048 MiB RAM, min. 1024 MiB BallooningBelegt Speicher-/Ballooning-Vorgabe.
SRV1 NetzwerkNetzwerkadapter/Bridge-Konfiguration in ProxmoxBelegt Netzwerkadapter für SRV1.
SRV1 Autostart gesetztBeim Booten starten = JaBelegt Autostart.
SRV1 HardwareübersichtHardware der VM 100 (SRV1)Belegt VM-Konfiguration in Proxmox nach Erstellung.
SRV1 IP-AdresseIP-Adresse vermutlich 192.168.10.11/24Belegt manuelle IP-Konfiguration.
SRV1 GatewayGateway 192.168.10.1Belegt Gateway-Konfiguration.
SRV1 DNSDNS-Server 8.8.8.8Belegt temporären externen DNS.
SRV1 HostnameHostname srv1Belegt Hostname.
SRV1 DomainDomain gfn.internalBelegt Domainname.
Debian SoftwareauswahlSoftwareauswahl: SSH-Server und Standard-Systemwerkzeuge relevantBelegt Server ohne GUI und SSH-Basis.
Debian Installation fertigInstallation abgeschlossen/Neustart vorbereitenBelegt Abschluss des Debian-Installers.
SRV1 sudo nachinstalliertapt update && apt install sudo, usermod -aG sudo studentBelegt sudo-Installation und Gruppenzuweisung; sudo-Funktion selbst nicht separat getestet.
SSH von CL01 zu SRV1ssh student@192.168.10.11, Hostkey akzeptiert, Login erfolgreich, Prompt student@srv1Belegt administrative Erreichbarkeit von SRV1 über SSH.
Zum Dokumentanfang

LF10 Homelab · Zentrale Netzwerkdienste

Cluster 3: DHCP, DNS und abgesicherter SSH-Zugang

SRV1 übernimmt DHCP und DNS für das Homelab. Der SSH-Zugang wird auf Schlüsselanmeldung, einen eigenen Port und einen verständlichen Client-Alias umgestellt.

Adressvergabe, interne Namensauflösung und schlüsselbasierten Serverzugang umsetzen.

Kapitel in diesem Cluster

Zentrale Netzwerkdienste

Überblick

In Cluster 3 wurde SRV1 zum zentralen Basisdienstserver im LF10-Homelab ausgebaut. KEA stellt DHCP für CL01 bereit, BIND9 die interne Zone gfn.internal, und SSH wurde von Passwortlogin auf Public-Key-Authentifizierung mit Port 6464 und Client-Alias srv1 umgestellt. Fehlende sudo-Rechte auf CL01, die NetworkManager-Reihenfolgekorrektur und ein SSH-Test im falschen Kontext werden jeweils mit Ursache, Korrektur und Ergebnis beschrieben. Präventionsregeln ergänzen die Funktionsprüfungen für DHCP, DNS und SSH.

Zentrale Netzwerkdienste

Rolle im Homelab

Cluster 1 stellte Router, Firmennetz und CL01 bereit. Cluster 2 stellte Proxmox und SRV1 bereit. Cluster 3 macht SRV1 nun zum zentralen Basisdienstserver:

SRV1
├── KEA DHCP für 192.168.10.0/24
├── BIND9 DNS für gfn.internal
└── SSH-Härtung und administrativer Komfort

CL01
├── bezieht IP/Gateway/DNS per DHCP
├── löst interne Namen über 192.168.10.11 auf
└── verbindet sich per ssh srv1 auf Port 6464

Zentrale Netzwerkdienste

Präventionsregeln für DHCP, DNS und SSH

Für den stabilen Betrieb gelten fünf Präventionsregeln: Whitespace in der KEA-Konfiguration vermeiden, BIND-Zonen prüfen, CL01 nicht mit externem DNS testen, den SSH-Port in sshd_config setzen und SSH-Tests im richtigen Clientkontext ausführen.

Zentrale Netzwerkdienste

Technische Entscheidungen

EntscheidungBegründung
DHCP und DNS bilden gemeinsam die zentralen NetzwerkdiensteBeide Dienste formen die zentrale Netzwerkinfrastruktur auf SRV1.
Fehlerbilder werden nicht geglättetZwischenzustände halten Fehlerursache, Korrektur und geprüftes Ergebnis auseinander.
SSH-Zusatzthemen bleiben unbelegte VertiefungTunneling, ProxyJump, SCP/SFTP/rsync und Endlessh wurden nicht umgesetzt und erweitern den belegten Projektumfang nicht.

Zentrale Netzwerkdienste

Umsetzung und Prüfung

DHCP mit KEA

SRV1 war mit 192.168.10.11/24 und Gateway 192.168.10.1 vorbereitet. KEA wurde auf ens18 konfiguriert. Der DHCP-Pool umfasst 192.168.10.100–192.168.10.200; als Router wird 192.168.10.1, als DNS 192.168.10.11 und als Domain gfn.internal verteilt.

SRV1 heißt srv1, nutzt ens18 mit 192.168.10.11/24 und Default Route über 192.168.10.1.
SRV1 heißt srv1, nutzt ens18 mit 192.168.10.11/24 und Default Route über 192.168.10.1.
KEA DHCPv4-Konfiguration mit Interface ens18, Pool 192.168.10.100-200, Gateway 192.168.10.1, DNS 192.168.10.11 und Domain gfn.internal wurde geschrieben.
KEA DHCPv4-Konfiguration mit Interface ens18, Pool 192.168.10.100-200, Gateway 192.168.10.1, DNS 192.168.10.11 und Domain gfn.internal wurde geschrieben.
Kea-dhcp4-server ist active/running und arbeitet für Subnetz 192.168.10.0/24.
Kea-dhcp4-server ist active/running und arbeitet für Subnetz 192.168.10.0/24.

Bei der Client-Umstellung traten zwei relevante Zwischenzustände auf: student auf CL01 hatte keine sudo-Rechte und ein erster NetworkManager-Befehl scheiterte wegen der Reihenfolge beim Entfernen statischer Werte. Beide Zustände wurden korrigiert; anschließend erhielt CL01 per DHCP die Adresse 192.168.10.100/24, Route proto dhcp, DNS 192.168.10.11 und erfolgreiche Konnektivität zu Router, SRV1 und 1.1.1.1.

Aktive NetworkManager-Verbindung auf CL01
CL01 verwendet die aktive Verbindung „Wired connection 1“; der Benutzerkontext wird im folgenden Korrekturschritt geprüft.
Erster nmcli-Änderungsversuch scheitert wegen Gateway/Adress-Reihenfolge.
Erster nmcli-Änderungsversuch scheitert wegen Gateway/Adress-Reihenfolge.
Gateway/DNS/Adresse wurden korrekt geleert, DHCP aktiviert und Verbindung erfolgreich neu gestartet.
Gateway/DNS/Adresse wurden korrekt geleert, DHCP aktiviert und Verbindung erfolgreich neu gestartet.
CL01 erhält 192.168.10.100/24 per DHCP, Route zeigt proto dhcp, DNS 192.168.10.11 und Pings zu Router/SRV1/1.1.1.1 funktionieren.
CL01 erhält 192.168.10.100/24 per DHCP, Route zeigt proto dhcp, DNS 192.168.10.11 und Pings zu Router/SRV1/1.1.1.1 funktionieren.

DNS mit BIND9

BIND9 wurde installiert, named.conf bindet die interne Zonendatei ein, und named.conf.options enthält ACL, Forwarder, Query-/Transfer-Regeln, Rekursion, deaktivierte DNSSEC-Prüfung für das Lab sowie IPv6-Deaktivierung. Forward- und Reverse-Zonen wurden für gfn.internal und 10.168.192.in-addr.arpa angelegt.

SRV1 ist per SSH erreichbar, nutzt 192.168.10.11/24, hat Route und kann 1.1.1.1 sowie deb.debian.org erreichen.
SRV1 ist per SSH erreichbar, nutzt 192.168.10.11/24, hat Route und kann 1.1.1.1 sowie deb.debian.org erreichen.
Bind9 und bind9-utils werden installiert.
Bind9 und bind9-utils werden installiert.
Named läuft und named.conf bindet named.conf.internal-zones ein.
Named läuft und named.conf bindet named.conf.internal-zones ein.
Named.conf.options wurde per tee als Zielkonfiguration mit ACL internal-network, Forwardern, allow-query/transfer, recursion, dnssec-validation no und listen-on-v6 none geschrieben.
Named.conf.options wurde per tee als Zielkonfiguration mit ACL internal-network, Forwardern, allow-query/transfer, recursion, dnssec-validation no und listen-on-v6 none geschrieben.
/etc/default/named enthält OPTIONS="-u bind -4".
/etc/default/named enthält OPTIONS="-u bind -4".
Named.conf.internal-zones definiert Forward-Zone gfn.internal und Reverse-Zone 10.168.192.in-addr.arpa.
Named.conf.internal-zones definiert Forward-Zone gfn.internal und Reverse-Zone 10.168.192.in-addr.arpa.
Db.gfn.internal enthält A-Records für router, proxmox und srv1.
Db.gfn.internal enthält A-Records für router, proxmox und srv1.
Db.10.168.192 enthält PTR-Records für router, proxmox und srv1.
Db.10.168.192 enthält PTR-Records für router, proxmox und srv1.

Die Konfiguration wurde mit named-checkconf und named-checkzone geprüft. Der Dienst läuft, und direkte Abfragen gegen 192.168.10.11 sowie lokale Abfragen über 127.0.0.1 funktionieren.

Named-checkconf ohne Fehler, Forward/Reverse-Zonen OK, named active/running.
Named-checkconf ohne Fehler, Forward/Reverse-Zonen OK, named active/running.
Dig proxmox.gfn.internal @192.168.10.11 löst auf 192.168.10.10 auf.
Dig proxmox.gfn.internal @192.168.10.11 löst auf 192.168.10.10 auf.
In /etc/network/interfaces wird dns-nameservers 127.0.0.1 eingetragen; die spätere Wirksamkeit Ansicht resolv.conf und dig-Tests.
In /etc/network/interfaces wird dns-nameservers 127.0.0.1 eingetragen; die spätere Wirksamkeit Ansicht resolv.conf und dig-Tests.
/etc/resolv.conf auf SRV1 enthält nameserver 127.0.0.1; zusätzlich sind erfolgreiche lokale dig-Tests sichtbar.
/etc/resolv.conf auf SRV1 enthält nameserver 127.0.0.1; zusätzlich sind erfolgreiche lokale dig-Tests sichtbar.
SRV1 löst router.gfn.internal über 127.0.0.1 auf 192.168.10.1 auf.
SRV1 löst router.gfn.internal über 127.0.0.1 auf 192.168.10.1 auf.
SRV1 löst proxmox.gfn.internal und srv1.gfn.internal über 127.0.0.1 korrekt auf.
SRV1 löst proxmox.gfn.internal und srv1.gfn.internal über 127.0.0.1 korrekt auf.

Auf CL01 wird 192.168.10.11 als DNS-Server verwendet. Die internen Namen router.gfn.internal, proxmox.gfn.internal und srv1.gfn.internal lösen korrekt auf. Die Proxmox-Weboberfläche ist per FQDN erreichbar; die Zertifikatswarnung ist wegen des selbstsignierten Proxmox-Zertifikats erwartbar.

CL01 nutzt DNS 192.168.10.11 und löst router/proxmox korrekt auf.
CL01 nutzt DNS 192.168.10.11 und löst router/proxmox korrekt auf.
CL01 löst srv1.gfn.internal auf 192.168.10.11 auf.
CL01 löst srv1.gfn.internal auf 192.168.10.11 auf.
Firefox erreicht proxmox.gfn.internal:8006 und zeigt erwartbare Zertifikatswarnung.
Firefox erreicht proxmox.gfn.internal:8006 und zeigt erwartbare Zertifikatswarnung.
Proxmox-Loginseite ist über proxmox.gfn.internal:8006 erreichbar.
Proxmox-Loginseite ist über proxmox.gfn.internal:8006 erreichbar.

SSH Public-Key Authentication

Der SSH-Server auf SRV1 war vorhanden. PubkeyAuthentication wurde geprüft und aktiviert. Auf CL01 wurde ein RSA-4096-Schlüsselpaar erzeugt und der öffentliche Schlüssel mit ssh-copy-id auf SRV1 übertragen. Der Login per Key funktionierte, bevor die Passwortauthentifizierung deaktiviert wurde.

Openssh-server vorhanden; sshd -T zeigt Pubkey yes, PasswordAuthentication yes, AuthorizedKeysFile.
Openssh-server vorhanden; sshd -T zeigt Pubkey yes, PasswordAuthentication yes, AuthorizedKeysFile.
Ausgangszustand in sshd_config: PubkeyAuthentication ist aktiv; AuthorizedKeysFile ist in diesem Bild noch auskommentiert und wirkt über den Default.
Ausgangszustand in sshd_config: PubkeyAuthentication ist aktiv; AuthorizedKeysFile ist in diesem Bild noch auskommentiert und wirkt über den Default.
Aktivierte AuthorizedKeysFile-Zeile in sshd_config
AuthorizedKeysFile ist in sshd_config aktiviert; die spätere sshd-T-Ausgabe zeigt passwordauthentication no.
PasswordAuthentication no ist in sshd_config sichtbar gesetzt.
PasswordAuthentication no ist in sshd_config sichtbar gesetzt.
Fehlerfreier Neustart des SSH-Dienstes
ssh.service startet ohne Fehlermeldung neu; sshd-T und der folgende Clientlogin prüfen den wirksamen Zustand.
Sshd -T zeigt pubkeyauthentication yes und passwordauthentication no.
Sshd -T zeigt pubkeyauthentication yes und passwordauthentication no.
CL01 erzeugt RSA-4096-Key und ssh-copy-id fügt 1 Schlüssel auf SRV1 hinzu.
CL01 erzeugt RSA-4096-Key und ssh-copy-id fügt 1 Schlüssel auf SRV1 hinzu.
CL01 meldet sich ohne sichtbare Passwortabfrage per SSH-Key auf SRV1 an.
CL01 meldet sich ohne sichtbare Passwortabfrage per SSH-Key auf SRV1 an.
Sshd -T bestätigt pubkeyauthentication yes, passwordauthentication no und AuthorizedKeysFile.
Sshd -T bestätigt pubkeyauthentication yes, passwordauthentication no und AuthorizedKeysFile.

SSH-Portänderung auf 6464

Ausgangszustand war Port 22. In /etc/ssh/sshd_config wurde Port 6464 gesetzt, die Konfiguration wurde mit sshd -t geprüft, der Dienst neu gestartet, und sshd -T sowie ss bestätigten den neuen Listener. Ein Test wurde versehentlich von SRV1 gegen SRV1 ausgeführt und endete wegen fehlendem passendem Private Key mit Permission denied (publickey). Der korrekte Test von CL01 aus war erfolgreich. Der Test ohne Portangabe scheiterte erwartungsgemäß mit Connection refused auf Port 22.

Sshd -T zeigt vor Portänderung port 22.
Sshd -T zeigt vor Portänderung port 22.
Port 6464 in sshd_config gesetzt.
Port 6464 in sshd_config gesetzt.
Sshd -T zeigt port 6464, ss zeigt LISTEN auf 6464; versehentlicher Test von SRV1 zu SRV1 endet Permission denied publickey.
Sshd -T zeigt port 6464, ss zeigt LISTEN auf 6464; versehentlicher Test von SRV1 zu SRV1 endet Permission denied publickey.
CL01 verbindet sich erfolgreich mit ssh -p 6464 zu SRV1.
CL01 verbindet sich erfolgreich mit ssh -p 6464 zu SRV1.
SSH ohne Portangabe scheitert mit Connection refused auf Port 22.
SSH ohne Portangabe scheitert mit Connection refused auf Port 22.

SSH-Client-Config

Auf CL01 wurde ~/.ssh/config mit Host-Alias srv1 angelegt. Die Datei hat Rechte 600, enthält HostName 192.168.10.11, User student, IdentityFile ~/.ssh/id_rsa, Port 6464 und IdentitiesOnly yes. Der Alias ssh srv1 verbindet erfolgreich zu SRV1.

Ssh srv1 funktioniert und verbindet zu SRV1.
Ssh srv1 funktioniert und verbindet zu SRV1.
SSH-Clientalias srv1 auf CL01
Die SSH-Clientkonfiguration besitzt Rechte 600; ssh srv1 verbindet CL01 mit dem Host srv1.

Zentrale Netzwerkdienste

Ergebnis

CL01 erhält seine Adresse und DNS-Parameter per KEA, interne Namen werden über BIND9 aufgelöst, und der SSH-Zugang zu SRV1 funktioniert mit Schlüsselanmeldung, Port 6464 und Client-Alias. Die beschriebenen Zwischenzustände halten Ursache, Korrektur und Ergebnis auseinander.

Zentrale Netzwerkdienste

Ergebnisübersicht

BereichErgebnisBegründung
KEA DHCP auf SRV1belegtDienst läuft, Konfiguration ist vorhanden und CL01 erhält DHCP-Lease.
DHCP-Client CL01belegtCL01 erhält 192.168.10.100/24, Route proto dhcp, DNS 192.168.10.11.
BIND9 DNS auf SRV1belegtDienstzustand, Zonendateien, Konfigurationsprüfung und Clientauflösung sind getrennt sichtbar.
SRV1 lokaler ResolverbelegtSRV1 nutzt 127.0.0.1 und löst interne Namen auf.
CL01 DNS-End-to-EndbelegtCL01 nutzt 192.168.10.11 und löst router/proxmox/srv1 auf.
Proxmox per FQDNbelegtProxmox-WebUI über proxmox.gfn.internal:8006 erreichbar; Zertifikatswarnung erwartbar.
SSH Public-Key LoginbelegtKey erzeugt, übertragen und Login ohne sichtbare Passwortabfrage möglich.
Passwortauthentifizierung deaktiviertbelegtsshd -T zeigt passwordauthentication no.
SSH-Port 6464belegtPort 6464, sshd -T, LISTEN auf 6464 und erfolgreicher CL01-Test.
SSH-Alias srv1belegt~/.ssh/config, Rechte 600, ssh srv1 und hostname srv1.
SSH-Zusatzoptionenfachliche VertiefungTunneling/ProxyJump/SCP/SFTP/rsync/Endlessh wurden besprochen, aber nicht umgesetzt.

Zentrale Netzwerkdienste

Fehleranalyse und Korrekturen

Die Fehleranalyse umfasst:

  • KEA-Testbefehl mit unerwarteter Ausgabe: nicht als Blocker gewertet, weil Dienststatus, Logs und CL01-Lease die Funktion belegen.
  • CL01 ohne sudo und nmcli-Reihenfolgefehler: Korrektur über root-Kontext und kontrolliertes Entfernen statischer Werte.
  • Resolverlogik SRV1/CL01: SRV1 nutzt 127.0.0.1, CL01 nutzt 192.168.10.11.
  • SSH-Port-Test im falschen Kontext: SRV1→SRV1 prüft nicht den Clientweg; CL01→SRV1 funktioniert auf Port 6464.

Zentrale Netzwerkdienste

Erkenntnisse

Entscheidend sind: Dienstfunktion immer Ende-zu-Ende prüfen, bekannte Fehlermuster präventiv berücksichtigen, Konfigurationsdateien nicht blind aus Kursunterlagen übernehmen und SSH-Härtung nur mit offenem Rückweg durchführen.

Zentrale Netzwerkdienste

SSH – fachliche Vertiefung

Die SSH-Portänderung auf 6464 reduziert vor allem Standard-Port-Scan-Rauschen und ersetzt keine echte Härtung wie Updates, starke Authentifizierung, restriktive Zugriffskontrolle oder Monitoring.

SSH-Tunneling, ProxyJump/Jump Hosts, SCP/SFTP/rsync und Endlessh/Honeypot-Konzepte wurden fachlich betrachtet, aber nicht praktisch umgesetzt. Sie gehören daher nicht zum belegten Cluster-3-Umfang.

Zentrale Netzwerkdienste

Fachliche Grenzen

Technischer PunktFachliche Grenze
Private SSH-SchlüsselPrivate Schlüssel werden nicht angezeigt; belegt ist ausschließlich ihre Nutzung für die Schlüsselauthentifizierung.
Public-Key-InhalteDie vollständigen Public-Key-Inhalte werden nicht als Klartext angezeigt.
KEA-KonfigurationsprüfungDer Configtest zeigt eine Besonderheit; Dienststatus und Client-Lease bestätigen die Funktion.
SSH-ZusatzthemenDie Zusatzthemen wurden fachlich betrachtet, aber nicht umgesetzt; sie gehören nicht zum belegten Clusterumfang.
SSH-Agent-Kommandosssh-add -L und ssh-add -D aus der Kursunterlage wurden nicht praktisch ausgeführt; dafür liegt kein aktueller Beleg vor.

Zentrale Netzwerkdienste

Zusätzliche Fehleranalysen

Der unter Umsetzung und Prüfung gezeigte Systemzustand wird in diesem Arbeitsschritt weiterverwendet.

Der unter Umsetzung und Prüfung gezeigte Systemzustand wird in diesem Arbeitsschritt weiterverwendet.

Der unter Umsetzung und Prüfung gezeigte Systemzustand wird in diesem Arbeitsschritt weiterverwendet.

KEA-Testausgabe und aktiver DHCP-Dienst
Der KEA-Testaufruf zeigt eine ungültige Flag-Kombination beziehungsweise eine Dateiöffnungsanomalie; der Dienststatus bleibt active (running).
/etc/kea/kea-dhcp4.conf existiert, ist lesbar und enthält Interface ens18.
/etc/kea/kea-dhcp4.conf existiert, ist lesbar und enthält Interface ens18.

Der unter Umsetzung und Prüfung gezeigte Systemzustand wird in diesem Arbeitsschritt weiterverwendet.

Der unter Umsetzung und Prüfung gezeigte Systemzustand wird in diesem Arbeitsschritt weiterverwendet.

Der unter Umsetzung und Prüfung gezeigte Systemzustand wird in diesem Arbeitsschritt weiterverwendet.

Der unter Umsetzung und Prüfung gezeigte Systemzustand wird in diesem Arbeitsschritt weiterverwendet.

Der unter Umsetzung und Prüfung gezeigte Systemzustand wird in diesem Arbeitsschritt weiterverwendet.

Der unter Umsetzung und Prüfung gezeigte Systemzustand wird in diesem Arbeitsschritt weiterverwendet.

Der unter Umsetzung und Prüfung gezeigte Systemzustand wird in diesem Arbeitsschritt weiterverwendet.

Der unter Umsetzung und Prüfung gezeigte Systemzustand wird in diesem Arbeitsschritt weiterverwendet.

Der unter Umsetzung und Prüfung gezeigte Systemzustand wird in diesem Arbeitsschritt weiterverwendet.

Der unter Umsetzung und Prüfung gezeigte Systemzustand wird in diesem Arbeitsschritt weiterverwendet.

Der unter Umsetzung und Prüfung gezeigte Systemzustand wird in diesem Arbeitsschritt weiterverwendet.

Der unter Umsetzung und Prüfung gezeigte Systemzustand wird in diesem Arbeitsschritt weiterverwendet.

Der unter Umsetzung und Prüfung gezeigte Systemzustand wird in diesem Arbeitsschritt weiterverwendet.

Der unter Umsetzung und Prüfung gezeigte Systemzustand wird in diesem Arbeitsschritt weiterverwendet.

Der unter Umsetzung und Prüfung gezeigte Systemzustand wird in diesem Arbeitsschritt weiterverwendet.

Der unter Umsetzung und Prüfung gezeigte Systemzustand wird in diesem Arbeitsschritt weiterverwendet.

Der unter Umsetzung und Prüfung gezeigte Systemzustand wird in diesem Arbeitsschritt weiterverwendet.

Der unter Umsetzung und Prüfung gezeigte Systemzustand wird in diesem Arbeitsschritt weiterverwendet.

Der unter Umsetzung und Prüfung gezeigte Systemzustand wird in diesem Arbeitsschritt weiterverwendet.

Der unter Umsetzung und Prüfung gezeigte Systemzustand wird in diesem Arbeitsschritt weiterverwendet.

Der unter Umsetzung und Prüfung gezeigte Systemzustand wird in diesem Arbeitsschritt weiterverwendet.

Der unter Umsetzung und Prüfung gezeigte Systemzustand wird in diesem Arbeitsschritt weiterverwendet.

Der unter Umsetzung und Prüfung gezeigte Systemzustand wird in diesem Arbeitsschritt weiterverwendet.

Der unter Umsetzung und Prüfung gezeigte Systemzustand wird in diesem Arbeitsschritt weiterverwendet.

Der unter Umsetzung und Prüfung gezeigte Systemzustand wird in diesem Arbeitsschritt weiterverwendet.

Der unter Umsetzung und Prüfung gezeigte Systemzustand wird in diesem Arbeitsschritt weiterverwendet.

Der unter Umsetzung und Prüfung gezeigte Systemzustand wird in diesem Arbeitsschritt weiterverwendet.

Der unter Umsetzung und Prüfung gezeigte Systemzustand wird in diesem Arbeitsschritt weiterverwendet.

Der unter Umsetzung und Prüfung gezeigte Systemzustand wird in diesem Arbeitsschritt weiterverwendet.

Der unter Umsetzung und Prüfung gezeigte Systemzustand wird in diesem Arbeitsschritt weiterverwendet.

Der unter Umsetzung und Prüfung gezeigte Systemzustand wird in diesem Arbeitsschritt weiterverwendet.

Der unter Umsetzung und Prüfung gezeigte Systemzustand wird in diesem Arbeitsschritt weiterverwendet.

Der unter Umsetzung und Prüfung gezeigte Systemzustand wird in diesem Arbeitsschritt weiterverwendet.

Der unter Umsetzung und Prüfung gezeigte Systemzustand wird in diesem Arbeitsschritt weiterverwendet.

Der unter Umsetzung und Prüfung gezeigte Systemzustand wird in diesem Arbeitsschritt weiterverwendet.

Der unter Umsetzung und Prüfung gezeigte Systemzustand wird in diesem Arbeitsschritt weiterverwendet.

Der unter Umsetzung und Prüfung gezeigte Systemzustand wird in diesem Arbeitsschritt weiterverwendet.

Der unter Umsetzung und Prüfung gezeigte Systemzustand wird in diesem Arbeitsschritt weiterverwendet.

Zum Dokumentanfang

LF10 Homelab · Zentraler Speicher

Cluster 4: TrueNAS, Speicherpool und iSCSI

Eine TrueNAS-Instanz wird installiert, in das Labornetz integriert und mit einem Speicherpool sowie einem iSCSI-Target für Proxmox vorbereitet.

Netzwerkspeicher bereitstellen und in die Virtualisierungsumgebung einbinden.

Kapitel in diesem Cluster

Zentraler Speicher

Überblick

In Cluster 4 wurde das LF10-Homelab um einen dedizierten Storage-Baustein erweitert. Eine TrueNAS-VM wurde in Hyper-V erstellt, mit drei Datenfestplatten ausgestattet, trotz RemoteLab-RAM-Limit erfolgreich installiert und statisch unter 192.168.10.12 in das Firmennetz integriert. Aus den Datenplatten wurde ein ZFS-Pool erstellt, darauf ein iSCSI-Target bereitgestellt und dieses Target anschließend in Proxmox als iscsi-storage sichtbar angebunden. Der zunächst sichtbare Proxmox-ID-Tippfehler isci-storage wurde real korrigiert und durch neue Belege ersetzt.

Zentraler Speicher

Rolle im Homelab

Cluster 4 folgt auf Router/Client, Proxmox/SRV1 und DHCP/DNS/SSH. Der Cluster erweitert das Lab von Serverdiensten zu zentralem Netzwerk-Storage.

Zentraler Speicher

Storage-Architektur

Hyper-V RemoteLab
├── Storage / TrueNAS
│   ├── Storage.vhdx als Systemdisk
│   ├── Pool01.vhdx / Pool02.vhdx / Pool03.vhdx
│   ├── ZFS-Pool Pool1
│   └── iSCSI Target target01
└── Proxmox
    └── iscsi-storage über Portal 192.168.10.12

Zentraler Speicher

Betriebsrisiken bei TrueNAS und iSCSI

Bei TrueNAS und iSCSI werden IP-Persistenz, Target-Sichtbarkeit, Dienstzustand, Portal- und Initiatorzugriff sowie stabile Gerätenamen getrennt geprüft.

Zentraler Speicher

TrueNAS-VM und Hyper-V-Unterbau

Ziel

Eine eigenständige TrueNAS-VM wird als Storage-System im internen Firmennetz bereitgestellt.

Rolle von System- und Datenplatten

TrueNAS übernimmt die Rolle des dedizierten Storage-Servers. Die drei zusätzlichen VHDX-Dateien sind Rohdatenträger für den späteren ZFS-Pool, nicht Systemplatten.

TrueNAS-VM und Hyper-V-Unterbau

Assistent zeigt VM Storage: Gen2, 4096 MB, Firmennetz, Storage.vhdx, TrueNAS-ISO.
Assistent zeigt VM Storage: Gen2, 4096 MB, Firmennetz, Storage.vhdx, TrueNAS-ISO.
Storage-VM zeigt Secure Boot deaktiviert, 2 vCPU, 4096 MB, Firmennetz und ISO-Kontext.
Storage-VM zeigt Secure Boot deaktiviert, 2 vCPU, 4096 MB, Firmennetz und ISO-Kontext.

Zentraler Speicher

Ressourcenproblem, Installation und Bootkorrektur

Ziel

TrueNAS soll trotz knapper RemoteLab-Ressourcen installiert und von der Systemdisk gestartet werden.

Lab-Ressourcen und Prüfkette

Für die Laborinstallation wurde die Storage-VM auf 1024 MB reduziert; TrueNAS empfiehlt mindestens 8 GB RAM. RAM-Warnung, Swap-Auswahl, UEFI-Auswahl und korrigierte Bootreihenfolge bilden die technische Prüfkette.

Ressourcenproblem, Installation und Bootkorrektur

Hyper-V meldet nicht genügend Arbeitsspeicher beim Start der Storage-VM mit 2048 MB.
Hyper-V meldet nicht genügend Arbeitsspeicher beim Start der Storage-VM mit 2048 MB.
Storage-VM mit auf 1024 MB reduzierter RAM-Zuweisung
Für den Laborstart wurde die Storage-VM auf 1024 MB reduziert; sichtbar sind außerdem 2 vCPU, deaktiviertes Secure Boot, ISO und Pool01–03.
TrueNAS warnt, dass weniger als 8 GB RAM vorhanden sind; diese Warnung wurde im Lab-Kontext bewusst akzeptiert.
TrueNAS warnt, dass weniger als 8 GB RAM vorhanden sind; diese Warnung wurde im Lab-Kontext bewusst akzeptiert.
Installer zeigt da0 als ausgewählte TrueNAS-Systemdisk; die drei 1-TiB-Datenplatten bleiben unselektiert.
Installer zeigt da0 als ausgewählte TrueNAS-Systemdisk; die drei 1-TiB-Datenplatten bleiben unselektiert.
TrueNAS-Installer zeigt die Auswahl „Boot via UEFI“; damit ist die technische Vorgabe zum Bootmodus zeigt.
TrueNAS-Installer zeigt die Auswahl „Boot via UEFI“; damit ist die technische Vorgabe zum Bootmodus zeigt.
Installer fragt nach einer 16-GB-Swap-Partition auf dem Bootdevice; wegen der reduzierten RAM-Zuweisung wurde „Create swap“ gewählt.
Installer fragt nach einer 16-GB-Swap-Partition auf dem Bootdevice; wegen der reduzierten RAM-Zuweisung wurde „Create swap“ gewählt.
Installer meldet „installation on da0 succeeded“ und fordert Reboot sowie Entfernen des Installationsmediums.
Installer meldet „installation on da0 succeeded“ und fordert Reboot sowie Entfernen des Installationsmediums.
Nach dem Reboot erscheint erneut das TrueNAS-Installer-Menü.
Nach dem Reboot erscheint erneut das TrueNAS-Installer-Menü.
Hyper-V Firmware/Bootreihenfolge-Kontext zur Korrektur des erneuten Installer-Boots.
Hyper-V Firmware/Bootreihenfolge-Kontext zur Korrektur des erneuten Installer-Boots.
Firmware-/Bootreihenfolge nach Anpassung; Systemdisk wird priorisiert bzw. ISO-Kontext korrigiert.
Firmware-/Bootreihenfolge nach Anpassung; Systemdisk wird priorisiert bzw. ISO-Kontext korrigiert.
TrueNAS bootet ins installierte System und zeigt WebUI unter 192.168.10.101.
TrueNAS bootet ins installierte System und zeigt WebUI unter 192.168.10.101.168.10.12.
TrueNAS-WebUI zeigt den initialen Root-Passwort-/Setup-Dialog und ist über den Browser erreichbar.
TrueNAS-WebUI zeigt den initialen Root-Passwort-/Setup-Dialog und ist über den Browser erreichbar.
TrueNAS-Dashboard nach Login sichtbar.
TrueNAS-Dashboard nach Login sichtbar.

Zentraler Speicher

Netzwerkintegration und DNS

Ziel

TrueNAS soll unter fester IP und DNS-Name erreichbar sein.

Stabile Adressierung und DNS-Prüfung

Storage-Dienste brauchen stabile Adressierung. Test Changes, Save Changes, DNS-Zone und FQDN-Browserzugriff werden getrennt bewertet.

Netzwerkintegration und DNS

TrueNAS-Interface hn0 hat zunächst DHCP und 192.168.10.101/24.
TrueNAS-Interface hn0 hat zunächst DHCP und 192.168.10.101/24.
DHCP deaktiviert und 192.168.10.12/24 im Interface-Dialog eingetragen.
DHCP deaktiviert und 192.168.10.12/24 im Interface-Dialog eingetragen.
TrueNAS zeigt Test-Changes-Dialog nach IP-Änderung.
TrueNAS zeigt Test-Changes-Dialog nach IP-Änderung.
Interface zeigt 192.168.10.12/24 ohne DHCP; Änderung noch im Testmodus.
Interface zeigt 192.168.10.12/24 ohne DHCP; Änderung noch im Testmodus.
TrueNAS zeigt den Save-Changes-Dialog zur dauerhaften Übernahme der statischen IP-Konfiguration vor der Bestätigung.
TrueNAS zeigt den Save-Changes-Dialog zur dauerhaften Übernahme der statischen IP-Konfiguration vor der Bestätigung.
TrueNAS meldet, dass die Netzwerkänderungen gespeichert wurden.
TrueNAS meldet, dass die Netzwerkänderungen gespeichert wurden.
BIND-Forward-Zone wird in nano um den Eintrag `storage IN A 192.168.10.12` ergänzt; der Serial blieb sichtbar auf 1.
BIND-Forward-Zone wird in nano um den Eintrag storage IN A 192.168.10.12 ergänzt; der Serial blieb sichtbar auf 1.
`systemctl reload named` wurde nach der Zonendateiänderung ohne sichtbare Fehlermeldung ausgeführt.
systemctl reload named wurde nach der Zonendateiänderung ohne sichtbare Fehlermeldung ausgeführt.
TrueNAS-Loginseite ist über https://storage.gfn.internal erreichbar.
TrueNAS-Loginseite ist über https://storage.gfn.internal erreichbar.

Zentraler Speicher

Speicherpool

Ziel

Drei Datenplatten werden zu einem ZFS-Pool zusammengefasst.

ZFS-Aufbau und Kapazität

Der Pool bildet die Grundlage für das iSCSI-Device. RAID-Z liefert bei drei 1-TB-Datenträgern plausibel rund 2 TB Nutzkapazität.

Speicherpool

Pool Manager zeigt Pool1, drei Datenplatten und RAID-Z/Stripe-Auswahlkontext.
Pool Manager zeigt Pool1, drei Datenplatten und RAID-Z/Stripe-Auswahlkontext.
Pool1 ist ONLINE und zeigt ca. 1.93 TiB freie Kapazität.
Pool1 ist ONLINE und zeigt ca. 1.93 TiB freie Kapazität.

Zentraler Speicher

iSCSI Target und Dienst

Ziel

TrueNAS stellt Blockspeicher als iSCSI Target bereit.

Erforderliche iSCSI-Komponenten

Entscheidend sind Target, Device/Extent, Portal, Zugriffskontext und aktiver iSCSI-Dienst mit Autostart.

iSCSI Target und Dienst

Wizard zeigt target01, Device Create New, Pool1, 1500 GiB und Modern OS/4k-Kontext.
Wizard zeigt target01, Device Create New, Pool1, 1500 GiB und Modern OS/4k-Kontext.
Portal-Konfiguration im Wizard mit IP 0.0.0.0.
Portal-Konfiguration im Wizard mit IP 0.0.0.0.
Initiator/Access-Schritt im Wizard ohne Einschränkungen gemäß Aufgabenstellung.
Initiator/Access-Schritt im Wizard ohne Einschränkungen gemäß Aufgabenstellung.
iSCSI-Zusammenfassung für target01 vor dem Anlegen
Die Zusammenfassung enthält target01, Pool1/target01 mit 1500 GiB, Portal 0.0.0.0:3260 und Auth None; der Dienststart folgt anschließend.
Services-Übersicht nach Aktivierung: iSCSI ist aktiv und Start Automatically ist gesetzt.
Services-Übersicht nach Aktivierung: iSCSI ist aktiv und Start Automatically ist gesetzt.

Zentraler Speicher

Proxmox-iSCSI-Anbindung

Ziel

Proxmox bindet das TrueNAS-iSCSI-Target als Storage ein.

Korrigierte Storage-ID

Der anfängliche Storage-ID-Tippfehler isci-storage wurde real korrigiert. abschließend geprüft ist die korrekte ID iscsi-storage.

Proxmox-iSCSI-Anbindung

Proxmox Datacenter/Storage: Hinzufügen → iSCSI ausgewählt.
Proxmox Datacenter/Storage: Hinzufügen → iSCSI ausgewählt.
Proxmox-iSCSI-Dialog zeigt die korrigierte ID `iscsi-storage`, Portal `192.168.10.12` und das erkannte TrueNAS-Target.
Proxmox-iSCSI-Dialog zeigt die korrigierte ID iscsi-storage, Portal 192.168.10.12 und das erkannte TrueNAS-Target.
Proxmox zeigt den iSCSI-Storage nach der Korrektur mit korrekter ID `iscsi-storage`, Typ iSCSI, Target `iqn.target01` und aktiviertem Status.
Proxmox zeigt den iSCSI-Storage nach der Korrektur mit korrekter ID iscsi-storage, Typ iSCSI, Target iqn.target01 und aktiviertem Status.

Zentraler Speicher

Ergebnis

Für Cluster 4 sind folgende Zustände belegt: TrueNAS wurde bereitgestellt, statisch adressiert, per DNS eingebunden, mit einem Pool versehen, als iSCSI-Target konfiguriert und in Proxmox sichtbar mit korrekter ID iscsi-storage angebunden.

Zentraler Speicher

Fehleranalyse und Korrekturen

Die relevanten Praxisfälle betreffen das RAM-Limit, einen erneuten Installer-Boot, die TrueNAS-IP-Persistenz, Risiken bei der iSCSI-Erkennung und die Korrektur der Proxmox-Storage-ID.

Zentraler Speicher

Fachliche Grenzen

PunktTechnischer Stand
Proxmox-CLI-DiscoveryNicht durchgeführt; eine Proxmox-CLI-Ausgabe liegt nicht vor.
VM-Disk auf iSCSINicht umgesetzt; gezeigt wird die Anbindung und Sichtbarkeit des iSCSI-Targets, keine VM-Disk-Nutzung.
TrueNAS RAMLaborwert 1024 MB; TrueNAS empfiehlt mindestens 8 GB RAM.
DNS-Direkttest storage.gfn.internalKein separater dig/ping-Ansicht; FQDN-Browserzugriff belegt Namensauflösung funktional.
Zonen-SerialDer Zonen-Serial bleibt sichtbar unverändert; der FQDN-Aufruf funktioniert im Einzel-Master-Lab.
Zum Dokumentanfang

LF10 Homelab · Serverbetrieb und Datensicherung

Cluster 5: SRV2, iSCSI-Ziel und automatisiertes Backup

SRV2 wird als Debian-Server aufgebaut, bindet ein iSCSI-Blockgerät ein und sichert Daten zunächst manuell, danach zeitgesteuert auf das bereitgestellte Ziel.

Einen zweiten Server bereitstellen und Backups auf Netzwerkspeicher automatisieren.

Kapitel in diesem Cluster

Serverbetrieb und Datensicherung

Überblick

In Cluster 5 wurde das Homelab um den Debian-Server SRV2 und eine automatisierte Backup-Strecke erweitert. SRV2 wurde in Proxmox bereitgestellt, statisch ins interne Netz integriert, per DNS erreichbar gemacht und über SSH mit Schlüsselanmeldung administriert. Auf TrueNAS entstand das separate iSCSI-Target target02; SRV2 bindet es ein, partitioniert und formatiert es und nutzt es zeitlich begrenzt als Backup-Ziel. Der manuelle rsync-Lauf war erfolgreich, der tägliche Cronjob wurde eingerichtet. NXDOMAIN, die doppelte SRV2-IP durch dhcpcd, das zunächst unsichtbare target02 und der kurzzeitige SSH-Ausfall werden mit Ursache, Korrektur und Ergebnis beschrieben.

Serverbetrieb und Datensicherung

Rolle im Homelab

Cluster 5 baut auf dem Netzwerk, DNS, SSH und TrueNAS-/iSCSI-Fundament aus den vorherigen Clustern auf. Während Cluster 4 den Storage technisch bereitgestellt hat, verwendet Cluster 5 diesen Storage für einen Backup-Anwendungsfall. Der Cluster verbindet damit Infrastrukturaufbau, Namensauflösung, Zugriffshärtung, iSCSI-Blockstorage und Automatisierung.

Serverbetrieb und Datensicherung

Betriebsrisiken bei iSCSI-Backups

Für die Backup-Strecke sind iSCSI-Target-Sichtbarkeit, passende Authorized Networks, stabile by-path-Gerätenamen und ein eigener Wiederherstellungstest entscheidend. Die Wiederherstellung wurde in diesem Aufbau nicht geprüft.

Serverbetrieb und Datensicherung

Zielsetzung

Ziel war nicht nur die Installation von SRV2, sondern der Aufbau einer nachvollziehbaren Backup-Strecke: target02 soll nur während des Backups eingebunden werden, Daten aufnehmen und anschließend wieder sauber getrennt werden. Zusätzlich sollte die Automatisierung über Cron vorbereitet werden.

Serverbetrieb und Datensicherung

SRV2 als Proxmox-VM

Ziel

SRV2 sollte als neue Debian-13-VM in Proxmox angelegt werden.

Rolle und Systemdisk von SRV2

SRV2 bildet den Backup-Client beziehungsweise iSCSI-Initiator. Die Systemdisk gehört laut Aufgabenstellung auf local-lvm; das iSCSI-Storage aus Cluster 4 darf nicht als Systemdisk verwendet werden. Im Erstellungsdialog ist die Proxmox-Firewall-Option an der VM-NIC sichtbar aktiviert. Ein separater aktueller Beleg für eine spätere Deaktivierung liegt in diesem Paket nicht vor; deshalb wird keine deaktivierte Firewall als belegter Zielzustand behauptet. Die tatsächliche Erreichbarkeit für DNS, SSH und iSCSI wird stattdessen über Funktionsnachweise belegt.

Umsetzung und Ergebnis

Die VM wurde mit OVMF/UEFI, EFI-Disk, QEMU-Agent, 2 CPU-Kernen, 2048 MiB RAM mit Ballooning-Minimum 1024 MiB, 50 GB Disk auf local-lvm und Bridge vmbr0 erstellt. Ein Zwischenstand mit falscher Disk-Auswahl auf iscsi-storage wurde korrigiert und nicht als geprüfter Zustand verwendet.

Proxmox-VM-Assistent mit VM-Name SRV2 und VM-ID 101.
Proxmox-VM-Assistent mit VM-Name SRV2 und VM-ID 101.
Auswahl der Debian-13-ISO für SRV2.
Auswahl der Debian-13-ISO für SRV2.
Systemeinstellungen mit OVMF/UEFI, EFI-Disk und QEMU-Agent.
Systemeinstellungen mit OVMF/UEFI, EFI-Disk und QEMU-Agent.
Korrigierte Systemdisk-Konfiguration: 50 GB auf local-lvm.
Korrigierte Systemdisk-Konfiguration: 50 GB auf local-lvm.
CPU-Konfiguration mit zwei Kernen.
CPU-Konfiguration mit zwei Kernen.
Speicherkonfiguration mit 2048 MiB und dynamischem Minimum von 1024 MiB.
Speicherkonfiguration mit 2048 MiB und dynamischem Minimum von 1024 MiB.
Netzwerkadapter mit Bridge vmbr0 und VirtIO; zeigt im VM-Wizard eine aktivierte Firewall-Checkbox.
Netzwerkadapter mit Bridge vmbr0 und VirtIO; zeigt im VM-Wizard eine aktivierte Firewall-Checkbox.
VM-Zusammenfassung mit den wesentlichen SRV2-Parametern.
VM-Zusammenfassung mit den wesentlichen SRV2-Parametern.

Serverbetrieb und Datensicherung

Debian-Installation und Postinstall

Ziel

Debian 13 sollte auf SRV2 installiert und für administrative Arbeiten vorbereitet werden.

Administrationsgrundlage

SSH-Server und Standard-Systemwerkzeuge sind die Grundlage für die spätere Administration. sudo wurde nachinstalliert, damit der Benutzer student erhöhte Rechte verwenden kann.

Umsetzung und Ergebnis

Die Installation wurde abgeschlossen, SRV2 startete ins installierte System und die Postinstallationsschritte wurden durchgeführt.

Debian-Softwareauswahl mit SSH-Server und Standard-Systemwerkzeugen.
Debian-Softwareauswahl mit SSH-Server und Standard-Systemwerkzeugen.
Installationsabschluss beziehungsweise Reboot-Hinweis.
Installationsabschluss beziehungsweise Reboot-Hinweis.
SRV2-Konsole nach der Installation.
SRV2-Konsole nach der Installation.
Root-Login und Installation von sudo.
Root-Login und Installation von sudo.

Serverbetrieb und Datensicherung

Netzwerk, DNS und SSH

Ziel

SRV2 sollte statisch unter 192.168.10.13/24 erreichbar sein, per srv2.gfn.internal aufgelöst werden und per SSH administrierbar sein.

DNS-Diagnose und SSH-Voraussetzung

DNS und SSH sind Voraussetzung für die spätere Backup-Automation, weil die weitere Arbeit remote und dienstbasiert erfolgt. Der initiale NXDOMAIN-Fehler war kein Netzwerkfehler: CL01 fragte den richtigen DNS-Server, aber die Zone kannte srv2 noch nicht aktiv.

Umsetzung und Ergebnis

Die BIND-Zone wurde um srv2 IN A 192.168.10.13 ergänzt, die Serial erhöht, die Zone geprüft und named neu geladen. Danach funktionierten dig, Ping und SSH. Der vorhandene SSH-Key von CL01 wurde auf SRV2 übertragen und ein Client-Alias srv2 eingerichtet.

`/etc/network/interfaces` mit statischer Adresse 192.168.10.13/24, Gateway und internem DNS.
/etc/network/interfaces mit statischer Adresse 192.168.10.13/24, Gateway und internem DNS.
`ip a` nach Netzwerkneustart mit 192.168.10.13/24.
ip a nach Netzwerkneustart mit 192.168.10.13/24.
`dig srv2.gfn.internal` liefert NXDOMAIN.
dig srv2.gfn.internal liefert NXDOMAIN.
BIND-Zonendatei mit `srv2 IN A 192.168.10.13` und erhöhter Serial.
BIND-Zonendatei mit srv2 IN A 192.168.10.13 und erhöhter Serial.
`named-checkzone`, Reload und `dig @127.0.0.1`.
named-checkzone, Reload und dig @127.0.0.1.
CL01 löst und pingt srv2.gfn.internal und startet den ersten SSH-Zugriff.
CL01 löst und pingt srv2.gfn.internal und startet den ersten SSH-Zugriff.
`ssh-copy-id` und anschließender SSH-Login auf SRV2.
ssh-copy-id und anschließender SSH-Login auf SRV2.
CL01-SSH-Config mit Host-Blöcken für srv1 und srv2 sowie erfolgreichem `ssh srv2`.
CL01-SSH-Config mit Host-Blöcken für srv1 und srv2 sowie erfolgreichem ssh srv2.

Serverbetrieb und Datensicherung

TrueNAS target02

Ziel

Auf TrueNAS sollte ein separates Backup-Target target02 mit 200 GiB für SRV2 bereitgestellt werden.

Trennung der iSCSI-Targets

target02 ist strikt von target01 zu trennen. target01 wurde zuvor für Proxmox verwendet; target02 dient ausschließlich dem Backup-Szenario von SRV2. Durch Authorized Network 192.168.10.13/32 wurde der Zugriff bewusst auf SRV2 eingeschränkt.

Umsetzung und Ergebnis

Das Target wurde im TrueNAS-iSCSI-Wizard im Pool Pool1 angelegt, über das bestehende Portal 0.0.0.0:3260 bereitgestellt und auf SRV2 autorisiert.

TrueNAS-iSCSI-Wizard mit Zielname target02 im vorbereitenden Geräteschritt.
TrueNAS-iSCSI-Wizard mit Zielname target02 im vorbereitenden Geräteschritt.
TrueNAS-Wizard mit Pool1 und 200 GiB für target02.
TrueNAS-Wizard mit Pool1 und 200 GiB für target02.
TrueNAS-Wizard im Portal-Schritt.
TrueNAS-Wizard im Portal-Schritt.
TrueNAS-Wizard in der Confirm-Options/Summary: target02, Pool1/target02 (0200 G), Portal 0.0.0.0:3260 und Authorized Networks 192.168.10.13/32.
TrueNAS-Wizard in der Confirm-Options/Summary: target02, Pool1/target02 (0200 G), Portal 0.0.0.0:3260 und Authorized Networks 192.168.10.13/32.
TrueNAS-iSCSI Global Configuration nach dem Wizard; zeigt den iSCSI Base Name iqn.2005-10.org.freenas.ctl.
TrueNAS-iSCSI Global Configuration nach dem Wizard; zeigt den iSCSI Base Name iqn.2005-10.org.freenas.ctl.

Serverbetrieb und Datensicherung

iSCSI-Discovery und Troubleshooting

Ziel

SRV2 sollte das neue target02 per iSCSI-Discovery finden.

Bedeutung der Target-Sichtbarkeit

Die Target-Sichtbarkeit ist der erste echte Funktionsnachweis. Dass zunächst nur target01 sichtbar war, zeigte: Netzwerk und Portal funktionierten, aber die SRV2-spezifische Freigabe für target02 griff noch nicht.

Umsetzung und Ergebnis

Die Diagnose ergab eine doppelte IP-Konfiguration auf SRV2: neben 192.168.10.13 war noch eine DHCP-Adresse 192.168.10.103 aktiv. Ursache war ein laufender dhcpcd-Prozess. Nach Bereinigung der DHCP-Adresse und Wiederherstellung der statischen Netzkonfiguration zeigte die Discovery sowohl target01 als auch target02.

Installation von open-iscsi auf SRV2.
Installation von open-iscsi auf SRV2.
Erste iSCSI-Discovery zeigt nur target01.
Erste iSCSI-Discovery zeigt nur target01.
`ip -br a` zeigt SRV2 mit 192.168.10.13 und zusätzlicher DHCP-Adresse 192.168.10.103.
ip -br a zeigt SRV2 mit 192.168.10.13 und zusätzlicher DHCP-Adresse 192.168.10.103.
`/etc/network/interfaces` ist statisch korrekt, während die DHCP-Adresse noch aktiv ist.
/etc/network/interfaces ist statisch korrekt, während die DHCP-Adresse noch aktiv ist.
Prozessliste zeigt aktive dhcpcd-Prozesse.
Prozessliste zeigt aktive dhcpcd-Prozesse.
`systemctl stop dhcpcd` scheitert, weil dhcpcd kein systemd-Service ist.
systemctl stop dhcpcd scheitert, weil dhcpcd kein systemd-Service ist.
`pkill dhcpcd` und anschließende Prüfung.
pkill dhcpcd und anschließende Prüfung.
`ssh srv2` meldet zwischenzeitlich No route to host.
ssh srv2 meldet zwischenzeitlich No route to host.
SRV2 ist wieder erreichbar, Route und Ping zu TrueNAS funktionieren, Discovery zeigt target01 und target02.
SRV2 ist wieder erreichbar, Route und Ping zu TrueNAS funktionieren, Discovery zeigt target01 und target02.

Serverbetrieb und Datensicherung

iSCSI-Blockdevice und Backup-Datenträger

Ziel

Das iSCSI-Target sollte als Blockdevice auf SRV2 nutzbar gemacht werden.

Blockdevice, Dateisystem und stabiler Gerätepfad

Ein iSCSI-Target erscheint unter Linux als Blockdevice. Erst Partitionierung, Dateisystem und Mount machen es als Datei-Backupziel verwendbar. /dev/sdb war hier nur der aktuelle Laufzeitname; für das Skript wurde ein stabilerer by-path-Pfad verwendet.

Umsetzung und Ergebnis

Nach dem Login zu target02 erschien sdb mit 200G. Mit fdisk wurde sdb1 erstellt, mit ext4 formatiert, nach /mnt/backup gemountet und anschließend wieder sauber ausgehängt und ausgeloggt.

`lsblk` vor/nach iSCSI-Login und erfolgreicher Login zu target02.
lsblk vor/nach iSCSI-Login und erfolgreicher Login zu target02.
`fdisk /dev/sdb` erstellt Partition `/dev/sdb1`.
fdisk /dev/sdb erstellt Partition /dev/sdb1.
Partition und ext4-Dateisystem auf dem iSCSI-Blockgerät
fdisk erstellt /dev/sdb1, anschließend bereiten mkfs.ext4, Mount und df -h das iSCSI-Blockgerät als Backupziel vor.

Serverbetrieb und Datensicherung

Backup-Skript und manueller Test

Ziel

Das Backup sollte automatisierbar werden: iSCSI-Login, Mount, rsync, Unmount und Logout sollten in einem Skript zusammengeführt werden.

Zeitlich begrenzte iSCSI-Einbindung

Das Target soll nicht dauerhaft eingebunden bleiben. Das reduziert die dauerhafte Angriffs-/Fehlerfläche und entspricht der technischen Vorgabe, Backup-Storage nur während des Backups zu verbinden. Das fehlende /var/www wurde als erwartbare Warnung behandelt, während /etc gesichert wurde.

Umsetzung und Ergebnis

Das Skript /usr/local/bin/backup.sh verwendet den stabilen by-path-Pfad, ist ausführbar und endet im manuellen Test mit [OK] Backup completed. Bei einem rsync-Teilfehler kann set -euo pipefail ohne trap verhindern, dass umount und iSCSI-Logout ausgeführt werden.

Manuelle Blockdevice-Kontrolle: Mount von /dev/sdb1 nach /mnt/backup, df/lsblk-Prüfung, by-path-Symlink zu target02 sowie sauberes Unmount und iSCSI-Logout.
Manuelle Blockdevice-Kontrolle: Mount von /dev/sdb1 nach /mnt/backup, df/lsblk-Prüfung, by-path-Symlink zu target02 sowie sauberes Unmount und iSCSI-Logout.
Inhalt von `/usr/local/bin/backup.sh` im Editor. Ohne `trap` kann das Cleanup bei einem rsync-Teilfehler ausbleiben.
Inhalt von /usr/local/bin/backup.sh im Editor. Ohne trap kann das Cleanup bei einem rsync-Teilfehler ausbleiben.
Manueller Skriptlauf mit iSCSI-Login, Mount, /etc-Backup, Unmount und Logout.
Manueller Skriptlauf mit iSCSI-Login, Mount, /etc-Backup, Unmount und Logout.

Serverbetrieb und Datensicherung

Cron und Backup-Kontrolle

Ziel

Das Backup sollte täglich um 01:00 Uhr per Cron geplant werden und die vorhandenen Backupdaten sollten kontrolliert werden.

Cron-Ausführung und Wiederherstellung nicht geprüft

crontab -l zeigt den gespeicherten Zeitplan, aber keinen ausgeführten Lauf um 01:00 Uhr. Ein Wiederherstellungstest wurde nicht durchgeführt.

Umsetzung und Ergebnis

Nach erneuter Einbindung des Targets wurde das Backup-Verzeichnis 2026-06-14 mit dem gesicherten etc-Ordner geprüft. Danach wurde der Cronjob eingetragen: 0 1 * * * /usr/local/bin/backup.sh >> /var/log/backup.log 2>&1.

Cron-Editor mit geplanter Ausführung um 01:00 Uhr.
Cron-Editor mit geplanter Ausführung um 01:00 Uhr.
Backup-Verzeichnis mit Datum und `etc`-Ordner, iSCSI-Logout und `crontab -l`.
Backup-Verzeichnis mit Datum und etc-Ordner, iSCSI-Logout und crontab -l.

Serverbetrieb und Datensicherung

Zusammenfassung der Fehleranalyse

FallErgebnisTechnischer Stand
srv2.gfn.internal liefert NXDOMAINgelöstDNS-Zone korrigiert, Serial erhöht, Reload und dig erfolgreich
target02 bei Discovery unsichtbargelöstdoppelte SRV2-IP durch dhcpcd identifiziert und bereinigt
No route to host nach Interface-BereinigunggelöstSRV2-Netz wiederhergestellt, Discovery anschließend erfolgreich
/var/www fehlt im BackuperwartbarWarnung, kein fataler Fehler; /etc wurde gesichert
Restore-Test fehltnicht geprüftBackupdaten sind vorhanden; die Wiederherstellung wurde nicht geprüft.

Serverbetrieb und Datensicherung

Ergebnis

SRV2 ist im DNS eingetragen, über den SSH-Alias erreichbar und bindet das getrennte TrueNAS-Target target02 zeitlich begrenzt als Backup-Ziel ein. Der manuelle rsync-Lauf und die Kontrolle der Backupdaten funktionieren; der tägliche Cronjob ist eingetragen. Eine Ausführung um 01:00 Uhr wurde nicht beobachtet, und die Wiederherstellung wurde nicht geprüft.

Serverbetrieb und Datensicherung

Fachliche Grenzen

  • Es wurde kein Restore-Test durchgeführt.
  • Der Cronjob ist konfiguriert, aber ein späterer automatischer Lauf ist nicht gesondert belegt.
  • Für SRV2 liegt keine abschließende sshd -T-Ausgabe mit PasswordAuthentication no vor.
  • Das Backup-Skript wurde erfolgreich getestet. Ohne trap-Cleanup können umount und iSCSI-Logout bei einem rsync-Teilfehler ausbleiben.
  • /dev/sdb ist nur der aktuelle Laufzeitname; die robuste Referenz ist der by-path-Pfad.
  • Für das Backup bleiben ein Wiederherstellungstest und die Prüfung stabiler Gerätepfade erforderlich.
Zum Dokumentanfang

LF10 Homelab · Web- und Applikationsdienste

Cluster 6: Apache, VirtualHosts, Nextcloud und HTTPS

SRV2 wird zum Web- und Applikationsserver. Namensbasierte VirtualHosts, PHP, MariaDB und Nextcloud werden eingerichtet und anschließend über HTTPS erreichbar gemacht.

Mehrere Webangebote und eine Nextcloud-Instanz nachvollziehbar bereitstellen.

Kapitel in diesem Cluster

Web- und Applikationsdienste

Überblick

SRV2 betreibt Apache2 mit namensbasierten VirtualHosts sowie Nextcloud mit PHP 8.4 und MariaDB. Nextcloud ist über HTTPS mit einem selbstsignierten Zertifikat erreichbar; HTTP wird zusätzlich auf HTTPS umgeleitet. Die Fehleranalyse behandelt fehlende vHost-Dateien, falschen DNS-Kontext, NXDOMAIN, getrennte PHP-Konfigurationen, doppelt geladenes OPcache, ein Platzhalterpasswort, Dateirechte und die erwartete Zertifikatswarnung.

Web- und Applikationsdienste

Architekturübersicht

CL01 Browser / Terminal
   │
   ├── DNS-Anfragen → SRV1 / BIND9 → gfn.internal-Zone
   │
   └── HTTP/HTTPS → SRV2 / Apache2
          ├── lf10b.gfn.internal      → /var/www/lf10b
          ├── website1.gfn.internal   → /var/www/website1
          ├── website2.gfn.internal   → /var/www/website2
          └── nextcloud.gfn.internal  → /var/www/nextcloud + PHP + MariaDB

Web- und Applikationsdienste

Ausgangslage und Abgrenzung

SRV2 übernimmt aus Cluster 5 die statische Adresse 192.168.10.13, DNS-Integration und SSH-Erreichbarkeit. Darauf bauen Apache, die VirtualHosts, Nextcloud und TLS auf.

Web- und Applikationsdienste

Ergebnis

BereichTechnischer Stand
Apache-Basisumgesetzt und belegt
vHosts lf10b, website1, website2umgesetzt und belegt
DNS-Integrationumgesetzt und belegt
PHP/MariaDB/Nextcloudumgesetzt und belegt
Nextcloud empfohlene AppsAbweichung: App-Liste konnte zunächst nicht geladen werden
HTTPS Self-Signedumgesetzt und belegt
HTTP→HTTPS-RedirectHTTP→HTTPS-Weiterleitung eingerichtet
Zusätzliche Härtung / öffentlich vertrauenswürdiges TLSnicht durchgeführt, nicht behauptet

Web- und Applikationsdienste

Apache-Basis

Ziel

Die Apache-Prüfung verbindet aktiven Dienst, Port-80-Listener und Browsererreichbarkeit; erst diese drei Zustände zeigen den nutzbaren Webserver.

Umsetzung und Prüfung

  • Apache2 läuft auf SRV2 und ist als Dienst aktiv.
  • Apache ist über HTTP-Port 80 netzwerkseitig erreichbar.
  • CL01 erreicht Apache auf SRV2 im Browser.

Ergebnis und Einordnung

Der erreichte Zustand zeigt, dass SRV2 als HTTP-Webserver funktionsfähig ist. Damit war die Basis für die folgenden namensbasierten vHosts gegeben.

Apache-Basis

Apache2 läuft auf SRV2 und ist als Dienst aktiv.
Apache2 läuft auf SRV2 und ist als Dienst aktiv.
Apache ist über HTTP-Port 80 netzwerkseitig erreichbar.
Apache ist über HTTP-Port 80 netzwerkseitig erreichbar.
CL01 erreicht Apache auf SRV2 im Browser.
CL01 erreicht Apache auf SRV2 im Browser.

Web- und Applikationsdienste

vHost lf10b.gfn.internal

Ziel

Der erste eigene vHost trennt erstmals Apache-Standardseite und kursbezogene Dummyseite. Entscheidend ist das Zusammenspiel aus DocumentRoot, vHost-Datei, Aktivierung in Apache und DNS-Eintrag auf SRV1.

Umsetzung und Prüfung

  • DocumentRoot-Inhalt für lf10b ist gespeichert.
  • Fehlerbild: vHost-Datei fehlte zunächst in sites-available.
  • Bestätigt Ursache des a2ensite-Fehlers.
  • Korrigierte vHost-Datei mit ServerName und DocumentRoot existiert.
  • lf10b-vHost wurde aktiviert und Apache neu geladen.
  • Fehlerbild: DNS-Datei wurde zunächst auf SRV2 statt SRV1 bearbeitet.
  • DNS-Record für lf10b wurde gesetzt.
  • SRV1 löst lf10b.gfn.internal korrekt auf SRV2 auf.
  • Clientseitiger Zugriffspfad für lf10b funktioniert.
  • lf10b.gfn.internal liefert die richtige Seite im Browser.

Ergebnis und Einordnung

Nach dem fehlenden-Datei-Fehler wird der vHost auf SRV2 korrekt angelegt und aktiviert; SRV1 liefert anschließend den passenden DNS-Eintrag.

vHost lf10b.gfn.internal

DocumentRoot-Inhalt für lf10b ist gespeichert.
DocumentRoot-Inhalt für lf10b ist gespeichert.
Fehlerbild: vHost-Datei fehlte zunächst in sites-available.
Fehlerbild: vHost-Datei fehlte zunächst in sites-available.
Bestätigt Ursache des a2ensite-Fehlers.
Bestätigt Ursache des a2ensite-Fehlers.
Korrigierte vHost-Datei mit ServerName und DocumentRoot existiert.
Korrigierte vHost-Datei mit ServerName und DocumentRoot existiert.
Lf10b-vHost wurde aktiviert und Apache neu geladen.
Lf10b-vHost wurde aktiviert und Apache neu geladen.
Fehlerbild: DNS-Datei wurde zunächst auf SRV2 statt SRV1 bearbeitet.
Fehlerbild: DNS-Datei wurde zunächst auf SRV2 statt SRV1 bearbeitet.
DNS-Record für lf10b wurde gesetzt.
DNS-Record für lf10b wurde gesetzt.
SRV1 löst lf10b.gfn.internal korrekt auf SRV2 auf.
SRV1 löst lf10b.gfn.internal korrekt auf SRV2 auf.
Lf10b.gfn.internal liefert die richtige Seite im Browser.
Lf10b.gfn.internal liefert die richtige Seite im Browser.

Web- und Applikationsdienste

vHosts website1 und website2

Ziel

Die Vertiefung zeigt hostbasiertes Virtual Hosting: gleiche IP, gleicher Port, aber verschiedene Hostnamen und DocumentRoots. Der End-to-End-Beleg sind getrennte Browseransichten für beide Websites.

Umsetzung und Prüfung

  • website2-vHost ist konfiguriert.
  • website1 fehlte zunächst; website2 war bereits aktiv.
  • Ursache für a2ensite-Fehler website1 wurde bestätigt.
  • website1-vHost wurde nachträglich korrekt angelegt und aktiviert.
  • Zwischenzustand vor vollständiger DNS-Ergänzung.
  • DNS-Problem bei website2 eindeutig belegt.
  • website2-DNS wurde korrigiert.
  • website1.gfn.internal liefert den korrekten Inhalt.
  • Clientseitiges Symptom des fehlenden DNS-Records.
  • DNS-Einträge für beide Zusatz-vHosts sind gesetzt.
  • SRV1 löst beide Zusatz-vHosts korrekt auf.
  • website2.gfn.internal liefert den korrekten Inhalt.

Ergebnis und Einordnung

Website1 und website2 sind nach den DNS- und vHost-Korrekturen auf SRV2 erreichbar. Die Zwischenzustände zeigen jeweils den fehlenden vHost beziehungsweise DNS-Eintrag.

vHosts website1 und website2

Website2-vHost ist konfiguriert.
Website2-vHost ist konfiguriert.
Website1 fehlte zunächst; website2 war bereits aktiv.
Website1 fehlte zunächst; website2 war bereits aktiv.
Website1-vHost wurde nachträglich korrekt angelegt und aktiviert.
Website1-vHost wurde nachträglich korrekt angelegt und aktiviert.
DNS-Problem bei website2 eindeutig zeigt.
DNS-Problem bei website2 eindeutig zeigt.
DNS-Einträge für beide Zusatz-vHosts sind gesetzt.
DNS-Einträge für beide Zusatz-vHosts sind gesetzt.
SRV1 löst beide Zusatz-vHosts korrekt auf.
SRV1 löst beide Zusatz-vHosts korrekt auf.
Website1.gfn.internal liefert den korrekten Inhalt im Browser.
Website1.gfn.internal liefert den korrekten Inhalt im Browser.
Website2.gfn.internal liefert den korrekten Inhalt.
Website2.gfn.internal liefert den korrekten Inhalt.

Web- und Applikationsdienste

PHP-Konfiguration für Nextcloud

Ziel

Nextcloud benötigt PHP 8.x, passende Module und Apache-spezifische PHP-Werte. PHP-CLI und Apache-PHP verwenden getrennte Konfigurationskontexte und werden daher getrennt geprüft.

Umsetzung und Prüfung

  • PHP-Basis für Nextcloud ist installiert.
  • Die Unterlagen-php.ini wurde auf SRV2 übertragen.
  • Apache-PHP-Konfigurationsdatei wurde ersetzt und save_comments aktiviert.
  • Apache läuft nach PHP-Konfigurationsänderung.
  • Unterschied zwischen Dateiinhalt und CLI-Konfiguration wurde erkannt.
  • Apache-php.ini enthält die Nextcloud-relevanten Werte; derselbe Beleg zeigt zusätzlich die CLI-/Apache-Abgrenzung.
  • php --ini zeigt die geladene CLI-Konfiguration und wird nicht als abschließende Prüfung verwendet.
  • OPcache wurde zunächst doppelt geladen.
  • Doppelte OPcache-Ladezeile wurde bereinigt.

Ergebnis und Einordnung

Die Apache-PHP-Konfiguration wurde mit der Kursdatei übernommen und um die doppelte OPcache-Ladezeile bereinigt. Die Prüfung zeigt danach die für Nextcloud gesetzten Apache-PHP-Werte.

PHP-Konfiguration für Nextcloud

PHP-Basis für Nextcloud ist installiert.ini-Werte.
PHP-Basis für Nextcloud ist installiert.ini-Werte.
Die Unterlagen-php.ini wurde auf SRV2 übertragen.
Die Unterlagen-php.ini wurde auf SRV2 übertragen.
Apache-PHP-Konfigurationsdatei wurde ersetzt und save_comments aktiviert.
Apache-PHP-Konfigurationsdatei wurde ersetzt und save_comments aktiviert.
Die Apache-php.ini enthält die Nextcloud-relevanten Werte; darunter wird sichtbar, dass php -i ohne -c die CLI-Konfiguration nutzt.
Die Apache-php.ini enthält die Nextcloud-relevanten Werte; darunter wird sichtbar, dass php -i ohne -c die CLI-Konfiguration nutzt.
OPcache wurde zunächst doppelt geladen. Die doppelte OPcache-Ladezeile ist der zu korrigierende Zwischenzustand.
OPcache wurde zunächst doppelt geladen. Die doppelte OPcache-Ladezeile ist der zu korrigierende Zwischenzustand.
Doppelte OPcache-Ladezeile wurde bereinigt.
Doppelte OPcache-Ladezeile wurde bereinigt.

Web- und Applikationsdienste

MariaDB und Nextcloud-Datenbank

Ziel

MariaDB stellt die Datenbank für Nextcloud bereit. Entscheidend sind nicht nur Datenbank und Benutzer, sondern ein tatsächlicher Login-/Zugriffsbeleg mit dem Nextcloud-Benutzer.

Umsetzung und Prüfung

  • MariaDB läuft als Datenbankdienst.
  • Platzhalterpasswort wurde versehentlich gesetzt.
  • Nextclouduser besitzt Rechte auf nextcloud_db nach Korrektur.
  • Nextcloud-DB-Benutzer kann sich anmelden und Datenbank sehen.

Ergebnis und Einordnung

Nach Korrektur des Platzhalterpassworts besitzt nextclouduser Zugriff auf nextcloud_db. Dabei werden keine Passwort-, Hash- oder Administrationsfelder gezeigt; MariaDB-Dienstzustand, Benutzerlogin und Sichtbarkeit der Datenbank bilden die technische Prüfkette.

MariaDB und Nextcloud-Datenbank

MariaDB läuft als Datenbankdienst.
MariaDB läuft als Datenbankdienst.
Nextcloud-DB-Benutzer kann sich anmelden und Datenbank sehen.
Nextcloud-DB-Benutzer kann sich anmelden und Datenbank sehen.

Web- und Applikationsdienste

Nextcloud-Dateien und Rechte

Ziel

Die Nextcloud-Dateien müssen nicht nur vorhanden sein, sondern im Apache-Kontext nutzbar sein. Falsche Besitzrechte können später zu schwer interpretierbaren Webfehlern führen.

Umsetzung und Prüfung

  • Es existierte bereits ein Nextcloud-Verzeichnis.
  • Dateirechte waren zunächst nicht passend für Apache/Nextcloud.
  • Nextcloud-Dateien gehören www-data.

Ergebnis und Einordnung

Der anfängliche root:root-Zustand wurde erkannt und auf www-data:www-data korrigiert.

Nextcloud-Dateien und Rechte

Es existierte bereits ein Nextcloud-Verzeichnis. Nicht als erfolgreiche Neuinstallation/Entpackung werten.
Es existierte bereits ein Nextcloud-Verzeichnis. Nicht als erfolgreiche Neuinstallation/Entpackung werten.
Nextcloud-Verzeichnis mit unpassender Eigentümerzuordnung
Das Nextcloud-Verzeichnis gehört zunächst root statt dem Apache-Benutzer www-data.
Nextcloud-Dateien gehören www-data.
Nextcloud-Dateien gehören www-data.

Web- und Applikationsdienste

Nextcloud-vHost, DNS und Installation

Ziel

Der Nextcloud-vHost verbindet Apache, PHP-Anwendung und DNS. Browser-Dashboard und occ status mit installed: true prüfen den Installationszustand aus zwei Perspektiven.

Umsetzung und Prüfung

  • Nextcloud-vHost ist konfiguriert.
  • Apache läuft nach Nextcloud-vHost-Aktivierung.
  • DNS-Alias nextcloud wurde in BIND eingetragen.
  • SRV1 löst nextcloud.gfn.internal korrekt auf.
  • Client kann nextcloud.gfn.internal intern auflösen.
  • Nextcloud-Webinstaller ist über nextcloud.gfn.internal erreichbar.
  • App-Store-Empfehlungen wurden nicht geladen.
  • Nextcloud ist im Browser nach Installation nutzbar.
  • www-data ist kein normaler Login-Benutzer; occ muss per sudo/root ausgeführt werden.
  • SRV2 erreicht apps.nextcloud.com grundsätzlich.
  • OpenSSL-Vorbereitung; nicht als App-Store- oder occ-Beleg verwenden.
  • Nextcloud ist serverseitig installiert; Apache läuft, die Konfiguration ist gültig und Port 443 lauscht.

Ergebnis und Einordnung

Nextcloud wurde installiert und ist im Browser nutzbar. Die empfohlenen Apps ließen sich in diesem Zustand nicht abrufen; occ status bestätigt installed: true. Das Installationsformular wird ohne Admin- und Datenbankfelder ausgeliefert.

Nextcloud-vHost, DNS und Installation

Nextcloud-vHost ist konfiguriert.
Nextcloud-vHost ist konfiguriert.
SRV1 löst nextcloud.gfn.internal korrekt auf.
SRV1 löst nextcloud.gfn.internal korrekt auf.
Client kann nextcloud.gfn.internal intern auflösen.
Client kann nextcloud.gfn.internal intern auflösen.
App-Store-Empfehlungen wurden nicht geladen. Nicht als Installationsfehler interpretieren.
App-Store-Empfehlungen wurden nicht geladen. Nicht als Installationsfehler interpretieren.
Nextcloud ist im Browser nach Installation nutzbar.
Nextcloud ist im Browser nach Installation nutzbar.
Nextcloud meldet installed:true; Apache ist active(running), die Apache-Konfiguration ist Syntax OK und Port 443 lauscht.
Nextcloud meldet installed:true; Apache ist active(running), die Apache-Konfiguration ist Syntax OK und Port 443 lauscht.
  • Apache-Konfiguration ist gültig und Apache lauscht auf Port 443; zugleich ist Nextcloud serverseitig installiert.
SRV2 erreicht apps.nextcloud.com per curl mit HTTP/2 200.
SRV2 erreicht apps.nextcloud.com per curl mit HTTP/2 200.

Web- und Applikationsdienste

HTTPS, Self-Signed und Redirect

Ziel

HTTPS verwendet im Labor ein selbstsigniertes Zertifikat; die Firefox-Warnung ist daher erwartbar. Die zusätzliche HTTP→HTTPS-Weiterleitung reduziert versehentliche HTTP-Aufrufe.

Umsetzung und Prüfung

  • OpenSSL war installiert bzw. wurde als aktuell bestätigt.
  • SSL-Modul wurde aktiviert und das selbstsignierte Zertifikat wurde erzeugt.
  • vHost-Konfiguration enthält HTTPS-Block.
  • Self-Signed-Zertifikatswarnung erscheint wie erwartet.
  • HTTP wird auf HTTPS umgeleitet und HTTPS antwortet erfolgreich.
  • Apache-Konfiguration ist gültig und Port 443 lauscht.
  • Nextcloud-Dashboard ist über HTTPS sichtbar erreichbar.

Ergebnis und Einordnung

Nextcloud ist über HTTPS erreichbar, Apache lauscht auf 443 und HTTP-Anfragen werden auf HTTPS umgeleitet. Das Zertifikat ist bewusst nicht öffentlich vertrauenswürdig.

HTTPS, Self-Signed und Redirect

Apache-HTTPS-Konfiguration mit selbstsigniertem Zertifikat
Apache-SSL-Modul, selbstsigniertes Zertifikat, erfolgreicher configtest und Port-443-Listener bilden den HTTPS-Zustand.

Der unter Nextcloud-vHost, DNS und Installation gezeigte Systemzustand wird in diesem Arbeitsschritt weiterverwendet.

VHost-Konfiguration enthält HTTPS-Block. Muss zeitlich vom späteren Redirect unterschieden werden.
VHost-Konfiguration enthält HTTPS-Block. Muss zeitlich vom späteren Redirect unterschieden werden.
Browserwarnung für das selbstsignierte Nextcloud-Zertifikat
Die Warnung entsteht durch das selbstsignierte Zertifikat; sie ist in dieser Laborumgebung erwartbar.
HTTP→HTTPS-Redirect wurde konfiguriert.
HTTP→HTTPS-Redirect wurde konfiguriert.
HTTP wird auf HTTPS umgeleitet und HTTPS antwortet erfolgreich.
HTTP wird auf HTTPS umgeleitet und HTTPS antwortet erfolgreich.
Nextcloud-Dashboard ist über HTTPS mit sichtbarer https://-Adresse erreichbar. Das Zertifikat bleibt selbstsigniert und damit nicht öffentlich vertrauenswürdig.
Nextcloud-Dashboard ist über HTTPS mit sichtbarer https://-Adresse erreichbar. Das Zertifikat bleibt selbstsigniert und damit nicht öffentlich vertrauenswürdig.

Web- und Applikationsdienste

Fehleranalyse und Korrekturen

Die relevanten Fehlerbilder zeigen insbesondere die Unterscheidung von Systemrollen, die Bedeutung der DNS-Prüfung, die Trennung von PHP-CLI und Apache-PHP sowie die Grenzen selbstsignierter Zertifikate.

Web- und Applikationsdienste

Datenschutz bei Datenbank und Installation

Datenbank- und Installationsschritte werden ohne Passwort-, Hash- oder Administrationsfelder dargestellt. MariaDB-Dienstzustand, Datenbanklogin und Sichtbarkeit von nextcloud_db sowie DNS, vHost, Nextcloud-Dashboard und occ status zeigen die technische Funktion.

Web- und Applikationsdienste

Fachliche Grenzen

  • Über den beschriebenen HTTPS-vHost hinaus wurden keine zusätzlichen Härtungsmaßnahmen umgesetzt.
  • Kein öffentlich vertrauenswürdiges TLS-Zertifikat wurde eingerichtet; das Zertifikat ist selbstsigniert.
  • Nextcloud-Backup und Wiederherstellung wurden in diesem Cluster nicht geprüft.
  • Empfohlene Nextcloud-Apps wurden nicht sicher als installiert belegt; der App-Store-Abruf zeigte eine Abweichung.
  • HSTS und mod_rewrite wurden nur als alternative Methoden recherchiert, nicht umgesetzt.
Zum Dokumentanfang

LF10 Homelab · Container und Dienstzugriff

Cluster 7: Docker, Zeitdienst, Portainer und Reverse Proxy

Docker-Dienste werden auf SRV2 aufgebaut, über Compose verwaltet und mit Portainer administriert. Reverse Proxy, HTTPS und Router-Weiterleitung ergänzen den Zugriffspfad.

Containerdienste betreiben und intern sowie über einen kontrollierten Weiterleitungsweg erreichbar machen.

Kapitel in diesem Cluster

Container und Dienstzugriff

Prüfkette der Routerweiterleitung

Aktiviertes IP-Forwarding und gesetzte DNAT-Regeln zeigen zunächst die Routerkonfiguration. Der tatsächliche Zugriff über den Laborweg wird durch die anschließenden Namensauflösungs- und Browserprüfungen am Windows-Testclient bestätigt.

Container und Dienstzugriff

Überblick

Cluster 7 erweitert SRV2 um Docker Engine, Chrony/NTP, Compose, Portainer und Heimdall. Apache stellt Portainer intern über HTTP und HTTPS bereit; Router-DNAT und die korrigierte Windows-hosts-Datei ergänzen den Zugriff vom Windows-Testclient. Die Fehleranalyse behandelt den KEA-Testaufruf, fehlende sudo-Rechte auf CL01, den Port-/Protokollkontext von Heimdall und einen veralteten hosts-Eintrag.

Container und Dienstzugriff

Architekturübersicht

RemoteLab / externer Client
  -> hosts: portainer.gfn.internal = 10.100.20.38
  -> Router eth0/WAN 10.100.20.38
  -> DNAT 80/443
  -> SRV2 192.168.10.13
     -> Apache Reverse Proxy
        -> Portainer localhost:9000
     -> Docker Engine
        -> chrony, portainer, heimdall

CL01 im Firmennetz
  -> DNS SRV1 192.168.10.11
  -> KEA-DHCP verteilt ntp-servers=192.168.10.13

Container und Dienstzugriff

Systemrollen

SystemRolleRelevanz
SRV2Docker-Host, Apache Reverse Proxy, Portainer, Chrony, HeimdallHauptsystem des Clusters
SRV1DNS und KEA-DHCPNamensauflösung und DHCP-NTP-Option
CL01interner ClientFunktionsprüfung NTP, Portainer, Reverse Proxy
RouterNAT/Portforwardingexterne Weiterleitung auf SRV2
RemoteLab/Windowsexterner Testclienthosts-Datei und externer Browserzugriff

Container und Dienstzugriff

Docker-Grundinstallation auf SRV2

Ziel: Docker Engine und Docker Compose Plugin als Grundlage für containerisierte Dienste auf SRV2 bereitstellen.

Rolle der Containerlaufzeit: Docker ist die Laufzeitbasis für Chrony/NTP, Portainer und Heimdall. Da die Kursumgebung Debian Trixie nutzt, wurde das offizielle Docker-Repository eingebunden statt nur Pakete aus dem Standard-Repository zu verwenden.

Vorgehen: Repository und GPG-Key wurden eingerichtet, die Docker-Pakete installiert, der Docker-Dienst geprüft, die Engine mit hello-world geprüft und student in die Gruppe docker aufgenommen. Eine neue SSH-Sitzung bestätigte die wirksame Gruppenmitgliedschaft; anschließend funktionierte Docker ohne sudo.

Ergebnis: Docker Engine läuft auf SRV2; hello-world, Dienstzustand und eine neue Sitzung des Benutzers student prüfen Installation, Laufzeit und Gruppenberechtigung getrennt.

Docker-Grundinstallation auf SRV2

Zeigt die Repository-Vorbereitung für Docker.
Zeigt die Repository-Vorbereitung für Docker.
Zeigt die Paketinstallation; die Funktionsprüfung erfolgt mit hello-world.
Zeigt die Paketinstallation; die Funktionsprüfung erfolgt mit hello-world.
Aktiver Docker-Dienst auf SRV2
docker.service ist active (running); die Berechtigung des Benutzers student wird anschließend in einer neuen Sitzung geprüft.
Zeigt Docker-Engine-Funktion und Gruppenänderung; neue Session folgt in der anschließenden Prüfung.
Zeigt Docker-Engine-Funktion und Gruppenänderung; neue Session folgt in der anschließenden Prüfung.
Zeigt, dass die Gruppenänderung für student aktiv ist.
Zeigt, dass die Gruppenänderung für student aktiv ist.
Der Benutzer `student` kann Docker nach einer neuen Sitzung ohne `sudo` verwenden.
Der Benutzer student kann Docker nach einer neuen Sitzung ohne sudo verwenden.

Container und Dienstzugriff

Chrony/NTP per Docker

Ziel: Einen NTP-Dienst als ersten praktischen Containerdienst bereitstellen.

Prüfanforderung für UDP und NTP: Chrony/NTP ist ein netzwerkrelevanter Infrastrukturserver. Der Dienst nutzt UDP-Port 123, daher reicht ein reiner Containerstatus nicht aus; Host-Port und Client-Abfrage müssen geprüft werden.

Vorgehen: Der Container cturra/ntp wurde manuell mit docker run gestartet, Port 123/udp veröffentlicht, mit docker ps und ss geprüft und von CL01 mit ntpdate -q 192.168.10.13 abgefragt.

Ergebnis / Interpretation: Der NTP-Dienst war im LAN erreichbar. Der spätere Compose-Betrieb baut auf diesem funktionierenden Diensttest auf.

Chrony/NTP per Docker

Zeigt manuell gestarteten NTP-Container als Ausgangszustand vor der anschließend gezeigten Compose-Umstellung.
Zeigt manuell gestarteten NTP-Container als Ausgangszustand vor der anschließend gezeigten Compose-Umstellung.
Zeigt, dass der NTP-Dienst aus dem LAN erreichbar ist.
Zeigt, dass der NTP-Dienst aus dem LAN erreichbar ist.

Container und Dienstzugriff

NTP-Verteilung über KEA-DHCP

Ziel: Die IP-Adresse des NTP-Servers automatisch per DHCP an Clients verteilen.

KEA statt ISC-DHCP: Die Aufgabenstellung nennt allgemein DHCP-Optionen. Die aktuelle Homelab-Umgebung nutzt jedoch KEA, weshalb die NTP-Option in /etc/kea/kea-dhcp4.conf und nicht in einer ISC-dhcpd.conf umgesetzt wurde.

Vorgehen: Die Option ntp-servers mit 192.168.10.13 wurde im KEA-Subnetz ergänzt. Der klassische Testaufruf zeigte versionsabhängige bzw. umgebungsspezifische Probleme; daher wurden JSON-Syntax, systemd-ExecStart, Dienststart und die tatsächlich empfangene NetworkManager-Lease auf CL01 als direkte Funktionsprüfung genutzt.

Ergebnis / Interpretation: CL01 erhielt dhcp4.ntp_servers=192.168.10.13. Damit ist die DHCP-Verteilung der Zeitserveradresse belegt.

NTP-Verteilung über KEA-DHCP

KEA-Konfiguration mit NTP-Serveroption
Das KEA-Subnetz enthält ntp-servers mit der Adresse 192.168.10.13; Dienststart und Client-Lease prüfen die Übernahme.
KEA-Testaufruf mit ungeeigneter Syntax
Der Testaufruf passt nicht zu dieser KEA-Version; JSON-Syntax, Dienststart und Client-Lease werden deshalb getrennt geprüft.
Zeigt Eintrag und Testanomalie; geprüfter Zustand erfolgt über JSON-Check/Dienststart.
Zeigt Eintrag und Testanomalie; geprüfter Zustand erfolgt über JSON-Check/Dienststart.
Zeigt, dass Datei formal gültig ist und vom Dienst genutzt wird.
Zeigt, dass Datei formal gültig ist und vom Dienst genutzt wird.
CL01 erhält die NTP-Serveradresse per DHCP
CL01 erhält per DHCP die NTP-Serveradresse 192.168.10.13.

Container und Dienstzugriff

Chrony/NTP per Docker Compose

Ziel: Den manuell gestarteten NTP-Container in einen reproduzierbaren Compose-Stack überführen.

Nutzen der Compose-Definition: Compose macht Containerdefinitionen nachvollziehbarer und wartbarer. Da YAML einrückungssensitiv ist, wurde docker compose config als zusätzlicher Kontrollschritt verwendet.

Vorgehen: Der alte ntp-Container wurde gestoppt und entfernt. Anschließend wurde /home/student/docker/chrony/docker-compose.yml erstellt, mit docker compose config geprüft, gestartet und über Containerstatus, Health-Status, UDP-Port 123 und ntpdate geprüft.

Ergebnis / Interpretation: Der Dienst läuft als Compose-Service chrony und bleibt für CL01 erreichbar.

Chrony/NTP per Docker Compose

Zeigt die Vorbereitung für die Compose-Migration.
Zeigt die Vorbereitung für die Compose-Migration.
Zeigt gültige YAML-Struktur und Start des Compose-Stacks.
Zeigt gültige YAML-Struktur und Start des Compose-Stacks.
Zeigt laufenden Compose-Service und UDP-Port 123.
Zeigt laufenden Compose-Service und UDP-Port 123.
NTP-Antwort nach der Compose-Umstellung
Nach der Compose-Umstellung liefert der containerisierte NTP-Dienst wieder eine Zeitantwort an den Client.

Container und Dienstzugriff

Portainer per Docker Compose

Ziel: Portainer als Weboberfläche zur Docker-Verwaltung bereitstellen.

Rolle von Portainer: Portainer macht Docker-Stacks, Container, Images und lokale Docker-Umgebungen sichtbar und bedienbar. Es dient im Cluster als administrativer Zugriffspunkt auf den Docker-Host SRV2.

Vorgehen: Ein Compose-Stack unter /home/student/docker/portainer wurde erstellt, die Konfiguration gerendert, der Stack gestartet, Ports 9000/9443 geprüft und die lokale Docker-Umgebung in Portainer geöffnet.

Ergebnis / Interpretation: Portainer verwaltet die lokale Docker-Umgebung auf SRV2. Die Portainer-Ansichten zeigen die lokale Docker-Umgebung ohne Passwortfelder.

Portainer per Docker Compose

Zeigt gültige Stackdefinition mit Ports, Volumes und Docker-Socket.
Zeigt gültige Stackdefinition mit Ports, Volumes und Docker-Socket.
Zeigt Portainer-Container und veröffentlichte Ports.
Zeigt Portainer-Container und veröffentlichte Ports.
Zeigt abgeschlossenen ersten Login-Kontext; keine Passwörter sichtbar.
Zeigt abgeschlossenen ersten Login-Kontext; keine Passwörter sichtbar.
Portainer-Dashboard mit lokaler Docker-Umgebung
Portainer zeigt die lokale Docker-Umgebung auf SRV2.

Container und Dienstzugriff

Zusätzlicher Containerdienst: Heimdall

Ziel: Ein zusätzliches Containerprojekt über Portainer bereitstellen und praktisch nutzen.

Rolle von Heimdall: Als zusätzlicher Containerdienst wurde ein kleines Homelab-Dashboard mit Heimdall umgesetzt.

Vorgehen: Heimdall wurde als Portainer-Stack mit Ports 8081/8444 bereitgestellt. Ein erster Zugriff auf 8444 zeigte einen Verbindungs-/Protokollkontext, anschließend wurde HTTP 8081 und HTTPS 8444 geprüft. Das Dashboard wurde mit Links zu Portainer, Nextcloud, Proxmox und TrueNAS eingerichtet.

Ergebnis: Heimdall läuft als zusätzlicher Containerdienst und stellt die Homelab-Links über die geprüften Ports bereit; der erste fehlgeschlagene Zugriff gehört zur Port- und Protokolldiagnose.

Zusätzlicher Containerdienst: Heimdall

Zeigt Heimdall-Stack in Portainer.
Zeigt Heimdall-Stack in Portainer.
Zeigt, dass Heimdall als Stack in Portainer angelegt wurde.
Zeigt, dass Heimdall als Stack in Portainer angelegt wurde.
Zeigt laufenden Heimdall-Container.
Zeigt laufenden Heimdall-Container.
Zeigt Portveröffentlichung von Heimdall.
Zeigt Portveröffentlichung von Heimdall.
Fehlgeschlagener Heimdall-Zugriff über Port 8444
Der erste Zugriff auf Heimdall über Port 8444 scheitert.
Heimdall-Dashboard mit Homelab-Links
Das Heimdall-Dashboard zeigt Links zu den Homelab-Diensten.

Container und Dienstzugriff

Interner Reverse Proxy für Portainer per HTTP

Ziel: Portainer über den internen FQDN portainer.gfn.internal statt über IP und Port erreichbar machen.

Interner Proxyweg: Apache agiert auf SRV2 als Reverse Proxy. Die Anfrage erreicht Apache auf Port 80 und wird intern an Portainer auf localhost:9000 weitergeleitet. Port 9000 ist bewusst gewählt, weil Portainer dort HTTP bereitstellt.

Vorgehen: Auf SRV1 wurde portainer IN A 192.168.10.13 gesetzt und per named-checkzone/dig geprüft. Auf SRV2 wurden proxy/proxy_http aktiviert, ein vHost mit ProxyPass auf http://localhost:9000/ angelegt, Apache geprüft, aktiviert und neugestartet.

Ergebnis / Interpretation: Portainer ist intern unter http://portainer.gfn.internal erreichbar.

Interner Reverse Proxy für Portainer per HTTP

Zeigt DNS-Konfiguration, aber nicht deren aktive Auflösung.
Zeigt DNS-Konfiguration, aber nicht deren aktive Auflösung.
DNS-Prüfung für Portainer auf SRV1
named-checkzone, Reload und dig bestätigen den DNS-Eintrag für Portainer auf SRV1.
Apache-Konfiguration des HTTP-Reverse-Proxys
Apache-Module, vHost-Konfiguration und configtest bilden den HTTP-Reverse-Proxy auf Port 9000 ab.
Zeigt Apache-Betrieb nach Proxy-Konfiguration.
Zeigt Apache-Betrieb nach Proxy-Konfiguration.
Zeigt Client-Namensauflösung.
Zeigt Client-Namensauflösung.
Portainer-Anmeldung über den internen HTTP-Namen
Die Portainer-Anmeldeseite ist intern über http://portainer.gfn.internal erreichbar.

Container und Dienstzugriff

HTTPS-Reverse-Proxy für Portainer

Ziel: Portainer verschlüsselt über https://portainer.gfn.internal bereitstellen.

TLS-Terminierung: Apache terminiert TLS mit einem selbstsignierten Zertifikat und proxyt intern weiterhin auf Portainer HTTP-Port 9000. Dadurch wird der SSL-Handshake mit Portainer-Port 9443 vermieden.

Vorgehen: Ein Zertifikat und Key für portainer.gfn.internal wurden erstellt, Rechte gesetzt, ssl/proxy-Module aktiviert, ein 443-vHost mit SSLCertificateFile/KeyFile und ProxyPass auf localhost:9000 erstellt, Apache mit configtest geprüft und Browser-/curl-Tests durchgeführt.

Ergebnis / Interpretation: Der HTTPS-Reverse-Proxy antwortet mit HTTP/1.1 200 OK. Browserwarnungen sind erwartbar, weil das Zertifikat selbstsigniert ist.

HTTPS-Reverse-Proxy für Portainer

Zeigt Zertifikatserstellung; Rechte/vHost folgen.
Zeigt Zertifikatserstellung; Rechte/vHost folgen.
Zeigt TLS-Dateien, Module und vHost-Konfiguration.
Zeigt TLS-Dateien, Module und vHost-Konfiguration.
Prüfkette des HTTPS-Reverse-Proxys
Apache-Konfiguration, Port-443-Listener und curl -kI bestätigen den HTTPS-Reverse-Proxy.
Browserwarnung für das selbstsignierte Portainer-Zertifikat
Der Browser erreicht Portainer über HTTPS und zeigt die erwartete Warnung für das selbstsignierte Zertifikat.

Container und Dienstzugriff

Externe Anbindung über Router-Portforwarding

Ziel: Portainer vom RemoteLab aus über portainer.gfn.internal erreichbar machen.

Externer Zugriffspfad: Im externen Kontext kann der interne DNS nicht genutzt werden. Der Router leitet externe Anfragen auf 10.100.20.38:80/443 per DNAT an SRV2 weiter; die Windows-hosts-Datei sorgt für Namensauflösung.

Vorgehen: Die Router-WAN-IP 10.100.20.38 wurde ermittelt, IP-Forwarding geprüft und DNAT-Regeln für Port 80/443 auf SRV2 gesetzt. Auf dem RemoteLab wurde ein alter falscher hosts-Eintrag auf 10.100.20.60 erkannt und durch 10.100.20.38 ersetzt; danach funktionierten HTTP und HTTPS im Browser.

Ergebnis / Interpretation: Portainer ist über den externen Weg erreichbar. Die iptables-Regeln sind nicht persistent konfiguriert; ihre Funktion nach einem Router-Neustart wurde nicht geprüft.

Externe Anbindung über Router-Portforwarding

Zeigt korrekte externe Router-IP für DNAT.
Zeigt korrekte externe Router-IP für DNAT.
Fehlende sudo- und sysctl-Befehle im Router-Benutzerkontext
Auf dem Minimalrouter fehlen sudo und sysctl im Benutzerkontext; die Prüfung wird als root fortgesetzt.
Router-Konfigurationsbeleg für IP-Forwarding und DNAT-Regeln; die Traffic-Prüfung erfolgt durch die späteren RemoteLab-Ansicht.
Konfigurationsbeleg für aktiviertes IP-Forwarding und gesetzte DNAT-Regeln für 10.100.20.38:80/443 auf 192.168.10.13:80/443. Die Paket-/Byte-Zähler stehen zum Aufnahmezeitpunkt noch bei 0; der tatsächliche externe Zugriff wird in die späteren RemoteLab- und Browser-Ansicht sichtbar.
Zeigt Ursache der falschen Namensauflösung.
Zeigt Ursache der falschen Namensauflösung.
Zeigt Korrektur der manuellen Namensauflösung.
Zeigt Korrektur der manuellen Namensauflösung.
Zeigt Diagnose des alten hosts-Eintrags.
Zeigt Diagnose des alten hosts-Eintrags.
Bereinigte hosts-Konfiguration ohne aktiven Alt-Eintrag.
Bereinigte hosts-Konfiguration ohne aktiven Alt-Eintrag.
Korrigierte Namensauflösung auf die Router-WAN-Adresse
Der Windows-Testclient löst portainer.gfn.internal nach der Korrektur auf 10.100.20.38 auf.
Portainer-Anmeldung über den weitergeleiteten HTTP-Pfad
Der Windows-Testclient erreicht die Portainer-Anmeldung über den HTTP-Weiterleitungsweg.
HTTPS-Zertifikatswarnung am Windows-Testclient
Der Windows-Testclient erreicht den weitergeleiteten HTTPS-Pfad bis zur erwarteten Warnung des selbstsignierten Zertifikats.
Portainer-Anmeldung über den weitergeleiteten HTTPS-Pfad
Der Windows-Testclient erreicht die Portainer-Anmeldung über den HTTPS-Weiterleitungsweg.

Container und Dienstzugriff

Praxisfälle der Fehleranalyse

CL01: student nicht in sudoers

FeldInhalt
KontextAuf CL01 sollte ntpsec-ntpdate installiert werden; sudo war für student nicht erlaubt.
Diagnosesudo apt update meldete „student ist nicht in der sudoers-Datei“.
UrsachePaketinstallation musste im root-Kontext über su - erfolgen.
Korrektur und ErgebnisprüfungNach root-Wechsel wurde ntpsec-ntpdate installiert und ntpdate -q 192.168.10.13 erfolgreich ausgeführt.
Technische ErkenntnisAuf CL01 Benutzerkontext vor Paketinstallation prüfen; sudo-Fähigkeit nicht voraussetzen.

KEA-Testsyntax und Unable-to-open-file

FeldInhalt
KontextNach Ergänzung der ntp-servers-Option sollte die KEA-Konfiguration getestet werden.
Diagnosekea-dhcp4 -t -c zeigte Usage; kea-dhcp4 -t meldete Unable to open file.
UrsacheDie Datei existierte und war JSON-valide; die manuelle Testsyntax verhielt sich in dieser Umgebung problematisch.
Korrektur und ErgebnisprüfungJSON-Prüfung, systemd-Startdefinition, Dienstneustart und CL01-Lease bestätigen gemeinsam die KEA-Funktion.
Technische ErkenntnisBei KEA werden Dateirechte, JSON, systemd-ExecStart, Dienststart und die tatsächlich am Client ankommende Option gemeinsam geprüft.

Docker Compose YAML

FeldInhalt
KontextChrony und Portainer wurden als Compose-Stacks definiert.
DiagnoseYAML-Fehler wären möglich, weil Einrückungen entscheidend sind.
UrsacheIm beobachteten Compose-Stand trat kein YAML-Fehler auf; falsche Einrückungen bleiben ein konkretes Fehlerrisiko.
Korrektur und Ergebnisprüfungdocker compose config wurde vor dem Stackstart als Kontrollschritt genutzt.
Technische ErkenntnisCompose-Dateien immer mit docker compose config prüfen.

Heimdall-Port/Protokoll-Kontext

FeldInhalt
KontextHeimdall wurde auf 8081:80 und 8444:443 veröffentlicht.
DiagnoseErstzugriff auf 8444 zeigte Verbindung fehlgeschlagen bzw. Warnkontext.
UrsacheWahrscheinlich wurde zunächst der falsche Protokoll-/Portkontext getestet oder der Dienst war noch nicht vollständig bereit.
Korrektur und ErgebnisprüfungContainer, Logs und Ports wurden geprüft; HTTP 8081 und später HTTPS 8444 funktionierten.
Technische ErkenntnisBei gemappten Ports Protokoll explizit prüfen: http://:8081 und https://:8444.

Portainer Reverse Proxy: 9000 vs. 9443

FeldInhalt
KontextPortainer stellt HTTP auf 9000 und HTTPS auf 9443 bereit. Apache sollte als Reverse Proxy arbeiten.
DiagnoseFalscher Upstream-Port könnte SSL-/Handshake-Probleme verursachen.
UrsacheFür Apache-Reverse-Proxy wurde der HTTP-Upstream localhost:9000 gewählt.
Korrektur und ErgebnisprüfungHTTP- und HTTPS-Reverse-Proxy funktionierten; curl -kI lieferte 200 OK.
Technische ErkenntnisApache TLS terminieren lassen und intern sauber auf HTTP-Upstream 9000 proxien.

Self-Signed-Zertifikatswarnungen

FeldInhalt
KontextPortainer und Heimdall wurden intern mit selbstsignierten Zertifikaten erreicht.
DiagnoseFirefox/Chrome warnen vor nicht vertrauenswürdigem Zertifikat.
UrsacheZertifikat ist selbstsigniert, daher nicht öffentlich vertrauenswürdig.
Korrektur und ErgebnisprüfungNach Akzeptieren der Warnung wurde Portainer/Heimdall geladen.
Technische ErkenntnisSelbstsignierte Zertifikate sind im Lab verwendbar, werden von Browsern jedoch nicht öffentlich vertraut.

Router-Minimalsystem ohne sudo/sysctl im PATH

FeldInhalt
KontextAuf dem Router sollten IP-Forwarding und iptables geprüft werden.
Diagnosesudo und sysctl waren als student nicht verfügbar.
UrsacheRouter-Minimalsystem bzw. fehlender PATH/fehlende sudo-Installation; root per su - erforderlich.
Korrektur und ErgebnisprüfungNach su - wurden /proc/sys/net/ipv4/ip_forward und iptables erfolgreich genutzt.
Technische ErkenntnisAuf Minimalroutern root-Kontext und vollständige Pfade/Alternativprüfungen verwenden.

Windows-hosts-Altlast 10.100.20.60

FeldInhalt
KontextRemoteLab sollte portainer.gfn.internal auf die Router-WAN-IP auflösen.
Diagnoseping zeigte zunächst 10.100.20.60 statt 10.100.20.38.
UrsacheEin alter hosts-Eintrag aus früherem Stand war noch aktiv.
Korrektur und ErgebnisprüfungAlten Eintrag entfernt/bereinigt, DNS-Cache geleert, ping zeigte 10.100.20.38, Browserzugriff funktionierte.
Technische ErkenntnisBei manueller Namensauflösung nicht nur neue Zeilen ergänzen, sondern alte Einträge aktiv prüfen.

Container und Dienstzugriff

Ergebnis

Docker Engine, der containerisierte NTP-Dienst, die DHCP-NTP-Option, Compose, Portainer, Heimdall und die Apache-Reverse-Proxys laufen auf den vorgesehenen Systemen. Interne HTTP-/HTTPS-Prüfungen und der Windows-Testclient bestätigen die beiden Zugriffspfade; die DNAT-Persistenz nach Router-Neustart wurde nicht geprüft.

Container und Dienstzugriff

Fachliche Grenzen und Datenschutz

  • Die iptables-DNAT-Regeln wurden gesetzt; die Persistenz nach Router-Neustart wurde nicht geprüft.
  • Der RemoteLab-Zugriff belegt Erreichbarkeit im gegebenen Lab-Kontext, nicht zwingend öffentliche Internet-Erreichbarkeit.
  • Die verwendeten TLS-Zertifikate sind selbstsigniert und nicht öffentlich vertrauenswürdig.
  • Der Windows-Testclient belegt den Weiterleitungsweg innerhalb der Laborumgebung, nicht eine öffentliche Internet-Erreichbarkeit. Passwort- oder Administrationsfelder sind für diese Funktionsprüfung nicht erforderlich.
  • Heimdall wurde als zusätzlicher Containerdienst umgesetzt; für die Kernfunktion mit Docker, Portainer und Reverse Proxy ist es nicht erforderlich.
Zum Dokumentanfang

LF10 Homelab · Kommunikationsdienst

Cluster 8: Mailserver, TLS und Mailclient

Ein eigener Linux-Container trägt den Mailserver. DNS- und MX-Einträge, Zertifikate, Benutzerkonten und Thunderbird bilden die geprüfte Ende-zu-Ende-Kette.

Einen internen Maildienst aufbauen und den Mailfluss zwischen zwei Konten prüfen.

Kapitel in diesem Cluster

Kommunikationsdienst

Mailserverzustände nach den Korrekturen

Der Mailserver wird in drei Zuständen geprüft: erster Stackstart, Betrieb nach der Zertifikatspfadkorrektur und erneuter Start nach der Ressourcenanpassung. Die SMTP-Portkorrektur ergänzt diesen Fehleranalyseweg.

Kommunikationsdienst

Überblick

Der Debian-12-LXC srv3 betreibt docker-mailserver und ist über die internen A- und MX-Records in gfn.internal eingebunden. Thunderbird auf CL01 nutzt ein Admin- und ein Student-Konto; die Testmail von admin@gfn.internal erreicht student@gfn.internal. Korrigiert wurden Zertifikatspfad, SRV3-Ressourcen, Zertifikatsvertrauen im Client und ein Student-Passwortfehler. Die Webmail-Optionen wurden nur recherchiert und nicht installiert.

Kommunikationsdienst

Architektur

CL01 / Thunderbird -> mail.gfn.internal -> SRV3 192.168.10.14 -> docker-mailserver
CL01 -> SRV1 DNS 192.168.10.11 -> A/MX-Records für gfn.internal
Proxmox/pve -> LXC 102 srv3 mit 4 GiB RAM / 2 GiB Swap nach Korrektur

Kommunikationsdienst

SRV3 als Mailserver-Host

Debian-12-LXC-Template auf local/pve
Zeigt, dass das Debian-12-Template für die spätere LXC-Erstellung lokal bereitstand.
SRV3-LXC wurde erstellt
Zeigt die erfolgreiche Erstellung des Containers 102/srv3 auf Proxmox. Die Betriebsfähigkeit wird erst durch spätere System- und Netzwerkprüfungen zeigt.
SRV3-Netzwerkbasis
Zeigt IP-Adresse 192.168.10.14/24, Default-Gateway und Resolver-Konfiguration mit gfn.internal und 192.168.10.11.
SRV3 Netzwerk- und DNS-Test
Zeigt interne Erreichbarkeit von Router/SRV1, Namensauflösung und externen Paketquellenzugriff.

Kommunikationsdienst

SSH- und Docker-Grundlage

SSH-Konfiguration für srv3
Zeigt die Integration von srv3 in die Client-SSH-Konfiguration. Zeigt keinen erfolgreichen Login, dieser folgt in der anschließenden Prüfung.
SSH-Anmeldung und sudo-Prüfung auf srv3
ssh srv3 öffnet die Sitzung als student; sudo funktioniert im anschließenden Befehl.
Docker-Funktionstest auf SRV3
Zeigt, dass Docker nach neuer SSH-Sitzung für student ohne sudo nutzbar ist.

Kommunikationsdienst

Docker-Mailserver-Konfiguration

Docker-compose.yml für docker-mailserver
Zeigt die Compose-Grundkonfiguration inklusive Ports, Volumes, DNS und Healthcheck.
Mailserver.env relevante Werte
Zeigt zentrale env-Werte wie Hostname, Postmaster, ClamAV, Rspamd und manuelle SSL-Pfade. Spätere Pfadkorrektur steht im anschließenden Korrekturschritt.
Compose-Konfiguration interpretierbar
Zeigt, dass Compose die yml/env-Konfiguration auswerten konnte.
Erstes Self-Signed-Zertifikat
Zeigt das ursprünglich erzeugte selbstsignierte Zertifikat.

Kommunikationsdienst

DNS-/MX-Integration und Postfix-Portfreigabe

DNS-A- und MX-Record auf SRV1
Zeigt mail.gfn.internal → 192.168.10.14 und MX gfn.internal → mail.gfn.internal aus Sicht von SRV1.
DNS-A- und MX-Record aus CL01-Sicht
Zeigt, dass CL01 mail.gfn.internal und den MX-Record über SRV1 korrekt auflösen kann.
Gelöster Port-25-Konflikt mit dem lokalen Postfix-Dienst
Der lokale Postfix-Dienst lauscht zunächst auf Port 25; nach Stoppen und Deaktivieren ist der Port für docker-mailserver frei.

Kommunikationsdienst

Mailserver-Betrieb, Ports und Konten

Nach DNS-/MX-Integration und Postfix-Deaktivierung wird der Docker-Mailserver über Ports, Containerzustand und Konten geprüft. Die Abfolge umfasst Erststart, Zertifikatspfadkorrektur und erneuten Betrieb nach der Ressourcenanpassung.

Erster Mailserverstart mit offenen Ports
Beim ersten Stackstart sind die Mailports offen; Konten und Stabilität werden in den folgenden Schritten geprüft.
Mailserverbetrieb nach der Zertifikatspfadkorrektur
Nach der Zertifikatspfadkorrektur sind die Mailports offen und die beiden Konten vorhanden.
Mailserverbetrieb nach der Ressourcenanpassung
Nach der Ressourcenerhöhung startet der Stack erneut; Mailports sind offen und free -h zeigt die verfügbare RAM- und Swap-Situation.

Kommunikationsdienst

TLS, Zertifikat und Lab-CA

TLS-Gegenprüfung auf Port 993
Zeigt, dass mail.gfn.internal:993 ein Zertifikat ausliefert. Der self-signed Hinweis ist zu diesem Zeitpunkt erwartbar.
Serverzertifikat exportiert und geprüft
Zeigt, dass CL01 das Zertifikat exportieren und Subject/SAN prüfen konnte.
Lab-CA signiertes Serverzertifikat auf SRV3
Zeigt Issuer GFN Lab Mail CA, Subject mail.gfn.internal und SAN mit DNS und IP.
Lab-CA auf CL01 kopiert und geprüft
Zeigt CA-Datei auf CL01 und ihre Gültigkeitsdaten.
Vertrauensstellung der Lab-CA in Thunderbird
Thunderbird vertraut der importierten Lab-CA für Websites und Server; danach lässt sich das Konto abschließen.

Kommunikationsdienst

Thunderbird-Konten

Admin-Konto in Thunderbird
Das Admin-Konto ist in Thunderbird eingerichtet.
SMTP-Server für Admin korrigiert
Zeigt die korrigierte SMTP-Konfiguration für Admin mit mail.gfn.internal, Port 587 und STARTTLS.
Student-Passwort verdeckt neu gesetzt
Zeigt Passwortkorrektur über read -s und setup email update ohne sichtbare Passwortausgabe.
Student-Konto erfolgreich erstellt
Zeigt erfolgreiche Einrichtung des Student-Kontos in Thunderbird.

Kommunikationsdienst

End-to-End-Mailtest

Admin sendet Testmail an Student
Zeigt die ausgehende Testmail von admin@gfn.internal an student@gfn.internal.
Student empfängt Testmail
Zeigt, dass die Admin-Testmail im Student-Postfach angekommen ist.
Empfangene Testmail im Student-Postfach
Das Student-Postfach zeigt den Inhalt der von admin@gfn.internal gesendeten Testmail.

Kommunikationsdienst

Zentrale Fehleranalysen

Restart-Loop durch einen falschen Zertifikatspfad
Die Logs zeigen den Restart-Loop wegen cert.pm statt cert.pem.

Der unter Mailserver-Betrieb, Ports und Konten gezeigte Systemzustand wird in diesem Arbeitsschritt weiterverwendet.

SSH-Banner-Exchange-Timeout auf SRV3
Port 22 ist erreichbar, der SSH-Client bricht jedoch beim Banner Exchange ab; die Ressourcenansichten grenzen die Ursache anschließend auf Überlastung ein.
SRV3 Ressourcenüberlastung in Proxmox
Zeigt sehr hohe CPU-, RAM- und Swap-Auslastung des Mailserver-LXC.
Ressourcenerhöhung auf 4 GiB RAM / 2 GiB Swap
Zeigt die nachträgliche Ressourcenkorrektur des LXC.
SSH-Zugang zu SRV3 nach der Ressourcenanpassung
Nach der Ressourcenkorrektur ist eine SSH-Sitzung zu srv3 wieder möglich; RAM und Swap werden in der getrennten Ressourcenansicht gezeigt.

Der unter Mailserver-Betrieb, Ports und Konten gezeigte Systemzustand wird in diesem Arbeitsschritt weiterverwendet.

Fall 5 – SMTP-Port-Korrektur

Symptom: Thunderbird legte den Admin-Account zwischenzeitlich mit SMTP Port 465/SSL-TLS an. Kontext: Der Mailserver stellt 465 und 587 bereit; für die vorgegebene Clientkonfiguration wurde jedoch SMTP Submission über Port 587 mit STARTTLS verwendet. Korrektur: Der Ausgangsserver wurde in Thunderbird auf mail.gfn.internal:587 mit STARTTLS und normalem Passwort gesetzt. Ergebnisprüfung: Die Testmail von Admin an Student wurde erfolgreich versendet und empfangen.

Der unter Thunderbird-Konten gezeigte Systemzustand wird in diesem Arbeitsschritt weiterverwendet.

Kommunikationsdienst

Webmail-Recherche und Entscheidung

Vier Webmail-Clients wurden für den vorhandenen internen Maildienst verglichen. Die Recherche wurde abgeschlossen, aber nicht als Webmail-Lösung umgesetzt:

OptionTechnischer SchwerpunktEignung und Abwägung
RoundcubeFokussierter Webmail-Client mit offiziellem Docker-Image; IMAP- und SMTP-Host lassen sich über Umgebungsvariablen setzen.Passend für einen eigenständigen Webclient zum bestehenden Mailserver.
SnappyMailLeichtgewichtiger Webmail-Client mit klarem IMAP-/SMTP-Fokus.Ressourcensparende Alternative zu Roundcube.
SOGoVerbindet Mail, Kalender und Adressbücher als Groupware.Für den reinen Mailclient-Bedarf dieses Clusters zu umfangreich.
Nextcloud MailBindet externe IMAP-Konten in die vorhandene Nextcloud ein; die App ist kein eigener Mailserver.Geeignet für eine Integration in Nextcloud, nicht für einen eigenständigen Webmail-Dienst.

Für einen getrennten Webclient passt Roundcube am besten zum vorhandenen IMAP-/SMTP-Aufbau. Diese Aussage ist eine Rechercheentscheidung; keine der vier Lösungen wurde installiert.

Kommunikationsdienst

Ergebnis

SRV3 stellt den internen Docker-Mailserver bereit, DNS und MX zeigen auf mail.gfn.internal, Thunderbird nutzt beide Konten und die Testmail wird empfangen. Die Ressourcenerhöhung und die Lab-CA sind die durchgeführten Korrekturen für stabilen Dienstbetrieb und Clientvertrauen.

Kommunikationsdienst

Fachliche Grenzen

Der Mailserver wurde ausschließlich intern geprüft. Externe Zustellung und DKIM/DMARC/SPF für externe Empfänger wurden nicht konfiguriert; Webmail wurde nur recherchiert und nicht installiert.

Zum Dokumentanfang