[[start|zurück]] ====== TFTP & PXE – Grundlagen ====== TFTP (**T**rivially **F**ile **T**ransfer **P**rotocol) und PXE (**P**reboot **E**xecution **E**nvironment) werden häufig für Netzboot, Firmware-Updates, Konfigurationsuploads und automatisierte Betriebssysteminstallationen genutzt. ===== TFTP – Trivial File Transfer Protocol ====== TFTP ist ein sehr einfaches Dateiübertragungsprotokoll. Es verzichtet bewusst auf Funktionen wie: * Authentifizierung * Verschlüsselung * Verzeichnisstrukturen * Rechteverwaltung Es wird eingesetzt in: * Netzwerkgeräten (Switches, Router) * PXE-Boot * Embedded-Systemen * einfachen Firmware-Downloads ==== Port & Protokoll ==== * **69/UDP** * verbindungslos, schnell, aber unsicher ===== Funktionsweise von TFTP ====== Ablauf: - Client sendet Anfrage (RRQ/WRQ) an Port 69 - Server öffnet einen **neuen Port** für die Datenübertragung - Datei wird blockweise übertragen (512 Byte) - Client bestätigt jeden Block - Übertragung endet bei kleinem Block (<512 Byte) ASCII: Client → UDP/69 → TFTP-Server → Dynamischer Port → Datenübertragung ===== Häufige TFTP-Befehle (Linux) ====== tftp 192.168.1.10 tftp> get config.cfg tftp> put firmware.bin ===== Vor- und Nachteile von TFTP ====== ==== Vorteile ==== * extrem leichtgewichtig * perfekt für Bootloader, kleine Systeme * ideal für PXE ==== Nachteile ==== * keine Sicherheit * keine Authentifizierung * leicht manipulierbar * langsamer als moderne Protokolle ===== PXE – Preboot Execution Environment ====== PXE ermöglicht es, **einen Computer über das Netzwerk zu booten**, ohne Festplatte oder lokales Betriebssystem. Es basiert auf: * DHCP * TFTP * einem Netzwerk-Bootloader ===== PXE-Boot Ablauf ====== Kompletter Boot-Vorgang Schritt für Schritt: 1. Client startet (BIOS/UEFI) 2. NIC sendet DHCP-Discover mit PXE-Option 3. DHCP-Server sendet Adresse + PXE-Optionen (Option 66 & 67) 4. Client lädt Bootloader via TFTP 5. Bootloader lädt Kernel + Initrd via TFTP 6. Betriebssystem startet Installationsroutine oder Live-System ===== PXE – Wichtige DHCP-Optionen ====== * **Option 66** → TFTP-Server-Adresse * **Option 67** → Name des Bootfiles (z. B. `pxelinux.0`) Beispiel: option tftp-server-name "192.168.1.10"; option bootfile-name "pxelinux.0"; ===== Verzeichnisstruktur eines PXE-Servers ====== Typisch bei Linux PXE-Umgebungen: /tftpboot/ /tftpboot/pxelinux.0 /tftpboot/ldlinux.c32 /tftpboot/menu.cfg /tftpboot/images/debian/ /tftpboot/images/windows/ /tftpboot/initrd.img /tftpboot/vmlinuz ===== Anwendungsfälle von PXE ====== * Masseninstallation von PCs (Schulen, Firmen) * Automatisierte Linux-Deployments (z. B. via Foreman, MAAS) * Diskless Clients * Rettungssysteme / Live-Systeme * Imaging (Clonezilla, FOG Server) ===== Sicherheit bei PXE & TFTP ====== Da beide Protokolle **keine Sicherheit** bieten: * immer in isolierten VLANs verwenden * Zugang zu TFTP-Server **einengen** * Boot-Pfade schützen * alternative sichere Mechanismen prüfen (iPXE via HTTPS) Modernere PXE-Varianten (iPXE) unterstützen: * HTTP/HTTPS * Authentifizierung * fortgeschrittenes Boot-Scripting ===== ASCII-Diagramm: PXE Bootkette ====== Client ──DHCP──> DHCP-Server (Option 66/67) ↓ lädt Bootloader via TFTP ↓ lädt Kernel + Initrd via TFTP ↓ Start des Installers / Betriebssystems ===== Zusammenfassung ====== * TFTP = einfaches Datei-Transferprotokoll (UDP 69), keine Sicherheit * PXE = Netzwerkboot, nutzt DHCP + TFTP * Option 66/67 steuern PXE-Server und Bootloader * ideal für Masseninstallationen und OS-Deployments * moderne Varianten nutzen iPXE (auch HTTP/HTTPS möglich)