Synology: PXE-Server einrichten
Im Alltag komme ich meistens ohne optische Datenträger aus und wenn die ein oder andere Kundenmaschine dann doch einmal gesichert oder geprüft werden muss, gibt es ja den bootfähigen USB-Stick, den man immer dabei hat. Oder halt immer genau dann nicht, wenn man ihn mal braucht und gemäß dem Motto „Wer sichert, ist feige“ offline ein Komplettbackup eines Servers anfertigen möchte. So geschehen letztens bei mir – kein Rohling mehr im Hause, bei den anderen im Haushalt befindlichen USB-Sticks grassierte auch die sprichwörtliche Schwindsucht und so entstand die Idee, sich doch einmal näher mit dem immer zur Seite geschobenen Thema „PXE-Boot“ zu beschäftigen und dieses vielleicht mit der heimischen Synology zu kombinieren.
Vorab – die Synology – hier eine DS-215+ – mit einer Beta-Version des DSM (6.0-7135) ist natürlich nur Mittel zum Zweck : Das Ganze geht (reproduzierbar) auch mit einer QNAP oder eben einem Linux-PC, ich beschränke mich im folgenden allerdings auf die Funktionen des Synology-NAS – eben weil es hier im Hause steht. PXE steht für „Preboot Execution Environment“ (PXE), welches als Netzwerkprotokoll das Booten von PCs über das Netzwerk möglich macht. Und genau dieser Technik, die 1999 von Intel in die Spezifikation 2.1 gegossen wurde, ist nicht nur eine Kombination aus TFTP und DHCP, sondern seit Jahren fester Bestandteil unser PCs- bzw. Netzwerkinterfaces.
Anstatt über die lokale Festplatte zu booten, versucht das Gerät via PXE, eine IP-Adresse vom PXE-Server zu bekommen und die Umgebung dahinter – die uns wiederum weitere Möglichkeiten bietet – zu starten. Ob dies nun ein komplettes Betriebssystem oder (wie in unserem Beispiel) diverse ISO-Dateien sind, die gestartet werden, ist egal – für mich ist es an dieser Stelle nur von Belang, meine in ISO-Files verpackten Helferlein von jedem PC im Netz aus starten zu können.
Der erste Schritt ist nun, sich auf das Webinterface der Synology zu begeben, um den TFTP/PXE-Modus zu aktivieren. Dies geschieht über die Systemsteuerung unter „Dateidienste“ – dort findet Ihr dann den Punkt „TFTP / PXE“:
Aktiviert also den TFTP-Dienst und gebt den dort geforderten TFTP-Root-Ordner an. An dieser Stelle hatte ich als gemeinsamen Ordner / Share schon einmal die Freigabe „pxe“ erstellt, die dann in Zukunft das Hauptverzeichnis des PXE-Servers darstellen soll:
Ist das erfolgt, solltet Ihr Euch ein passendes PXE-Bootimage aus dem Internet herunterladen – ich habe sehr gute Erfahrungen mit dem von Paul Maunders gemacht, welches es auf GitHub zum Download gibt. Entpackt das Archiv und legt es in die hier als „pxe“ betitelte Freigabe Eures Synology-Systems ab:
Unter „images“ befindet sich übrigens ein CentOS-Image, welches Ihr natürlich dort belassen könnt – ich für meinen Teil habe es entfernt, da ich es aktuell nicht brauche. Wer sich aber den Aufbau vom Anfang an noch einmal in Ruhe anschauen möchte, findet hier ein tolles Beispiel out-of-the-box vor. Definiert auf jeden Fall die Datei „pxelinux.0“ als Bootloader:
Dann setzt Ihr den Haken bei „DHCP-Dienst auf diesem Server für PXE einrichten“, wählt das Netzwerkinterface aus, auf dem der PXE-Server agieren soll (hier LAN 1) und dann geht es weiter Richtung Konfiguration des DHCP-Bereiches.
Hier können natürlich – je nach Anforderung / Infrastruktur – verschiedene Faktoren eine Rolle spielen. Im vorliegenden Beispiel, was bei mir „Zuhause“ bzw. „Home Office“ heisst, habe ich einen kleinen Adressbereich ausserhalb des von meinem Router verteilten DHCP-Adressbereichs gewählt. Gebt also die Start- und End-IP-Adresse samt Subnetzmaske und DNS-/Gateway ein – in meinem Fall habe ich die Adressen 192.168.16.250 bis .254 als DHCP-Bereich definiert, als Subnetzmaske grosszügig die 255.255.255.0 (typisches Heimnetz eben!) gewählt und als Gateway-/DNS meinen lokalen Router 192.168.16.1 eingetragen. Einmal auf „Übernehmen“ klicken und fertig ist die PXE-Funktionalität auf Eurem NAS.
Wer mag, kann sich die erweiterten Einstellungen des TFTP-Servers noch einmal zu Gemüte führen und unter anderem die Protokollierung aktivieren sowie TFTP-Berechtigungen aktivieren, nur spezielle Clients erlauben oder das Zeitlimit für den TFTP-Server entsprechend ändern. Ich habe hier alles auf Standard belassen, aber das mag sich – je nachdem, in welcher Umgebung Ihr die PXE-Funktionalität nutzen wollt – von User zu User natürlich unterscheiden.
Ist das alles erfolgt, sind wir auf Seiten der Synology schon einmal mit der Grundeinrichtung fertig. Wenden wir uns dann einmal der PXE-Konfigurationsdatei „default“ zu, die in der „pxe“-Freigabe im Unterordner „pxelinux.cfg“ residiert. Anbei findet Ihr mein Beispiel, welches eine Acronis-Boot-CD (bitte die jeweiligen Lizenzbedingungen beachten!) sowie eine GParted-Boot-CD im ISO-Format enthält:
Das Ganze ist an sich relativ selbsterklärend – hier aber einmal kurz die Übersicht der einzelnen Befehle innerhalb der Konfigurationsdatei:
- „prompt 0“ – Setzen wir den Wert auf 1, erscheint eine Eingabezeile beim Bootvorgang, in der dann das zu bootende Label eingegeben werden kann
- „timeout 100“ – Nach 10 Sekunden wird standardmässig das im folgenden Parameter ONTIMEOUT angegebene „chainlocal“ (also das Booten von der lokalen Festplatte) durchgeführt – das LABEL hierfür blieb in meiner Umgebung auch unangetastet
- „MENU TITLE“ – Wer seinem Bootmenü einen sinnvollen Namen geben möchte, darf das an dieser Stelle und mit dieser Option tun 🙂
- „LABEL“ – Bezeichnung der einzelnen Bootvariante innerhalb der Konfigurationsdatei
- „menu label“ – Bezeichnung des Menüpunktes innerhalb des Bootmenüs, die der User sichtbar sieht und auswählen kann
- „KERNEL memdisk“ – Hierüber wird der zu startende Kernel spezifiziert. Dabei ist es möglich, beliebige Kernel zu starten. Dies können auch spezielle binäre Programme wie das bekannte MemTest86 sein. MEMDISK lädt das über initrd angewählte Abbild in eine RAM-Disk mit passender Größe und versucht dann, es zu booten
- „initrd“ – Hier ist der Pfad – ausgehend vom PXE-Rootverzeichnis – angegeben, in dem die jeweilige ISO-Datei liegt
- „append iso raw“ – Sagt dem PXE-Bootloader, dass die unter „initrd“ angegebene ISO-Datei geladen werden soll, „raw“ ist optional und historisch bekannt aus Syslinux-Umgebungen < 4.04, die damit auch Images, die via zip oder gzip gepackt wurden, booten konnten
Habt Ihr die Konfigurationsdatei entsprechend angepaßt und Eure Images brav in die entsprechenden Verzeichnisse verschoben, sind eigentlich alle Grundvoraussetzungen erfüllt.
Nun dürft Ihr mit dem Testrechner Eures Vertrauens einmal versuchen, via PXE zu booten. Nach ein wenig Suchen seitens der Netzwerkkarte sollte der TFTP-Server gefunden werden und Euch das zuvor definierte Menu präsentieren:
Übrigens ist nicht jede ISO so einfach startfähig – die von mir benutzten Tools haben einwandfrei funktioniert, ebenso wie eine Windows Server 2008 R2-Installations-DVD oder eine Veeam-Boot-CD. Über die Klinge gesprungen ist in der vorliegenden Konstellation beispielsweise aber die Windows Server 2012 R2-Installations-DVD, wobei da auch vorab einige Daten durch das Netzwerk in das RAM der Maschine flitzen, bis der Datenträger final geladen ist – oder irgendwann das Handtuch wirft. Da sich mein Einsatzzweck des PXE-Servers in den eigenen vier Wänden aber auf Tools und vielleicht einmal die ein oder andere Live-CD/DVD beschränkt, kann ich damit leben – schliesslich kann ich dann frei von Rohlingen (die ich eh nicht mehr nutze/kaufe) und USB-Sticks (die ich anscheinend immer verschludere) mal schnell die ein oder andere Arbeit an Rechnern und Servern durchführen, hauptsächlich halt Backups.
Übrigens sehen die Optionen für TFTP/PXE und DHCP auf dem aktuellen Release Candidate des DSM 6.0 (Build 6.0.7307) ein wenig anders aus (danke für den Hinweis, @Martin) – hier bekommt der DHCP-Server seinen eigenen Menüpunkt in den Systemeinstellungen und mehr Möglichkeiten für einzelne DHCP-Optionen. Das Ganze habe ich aber noch einmal nachvollzogen und am Ende kommt dasselbe dabei heraus, nur sind die einzelnen Einstellungsmöglichkeiten ein wenig verteilt:
Ansonsten ist dies natürlich nur ein kleiner Abriß zum Thema TFTP/PXE – das Ganze ist ein ganz weites Feld und mit dieser Anleitung habe ich mich nur in einen kleinen Teilbereich begeben, der zudem noch auf eine spezielle Hardware abzielt. Dieses Konstrukt ist aber natürlich nicht nur Synology-abhängig und lief auch auf einem älteren QNAP-NAS bzw. einem virtuellen Ubuntu Linux. Schaut Euch den Spaß wie gesagt einmal an, viele hilfreiche Basisinformationen gibt es zu diesem Thema auch auf Syslinux. In diesem Sinne: Viel Spaß!
@Khiro – Das Image an sich ohne jegliche Anpassung verweist natürlich nicht zu irgendeinem ISO oder sonstwas, was gebootet werden muss. Wenn Du an die default-Datei (Screenshot oben – http://stadt-bremerhaven.de/wp-content/uploads/2016/03/Synology_PXE_Konfigurationsdatei.jpg) nicht Hand angelegt hast, hast Du nur die Startumgebung via PXE an sich verteilt, aber nichts dahinter. Das Package stellt nur die Basis da, den Rest musst Du dann selbst machen bzw. nach Gutdünken anpassen 😉 !
Guten Abend zusammen,
erstmal vielen Dank für die super Anleitung:-)
Hier mein Lösungsvorschlag zu der DHCP Problematik in DSM6.x. Ich nutze einen anderen DHCP Server im Netzwerk und damit die Synology keine IPs vergibt, habe ich in der Synology Firewall Port 67 und 68 geblockt.
Die Optionen 66 und 67 sind in meinem anderen DHCP konfiguriert.
Nicht schön, aber effektiv. Vielleicht hilft es jemanden!
@Benny – Danke auch 🙂 ! Ob es schön ist, ist ja nicht immer der Weisheit letzter Schluss – effektiv ist der Weg allemal. Ich habe bei meiner Sophos, die die Adressen vergibt, beispielsweise auch die PXE-Boot-Optionen auf die Synology verlegt. Diese macht nun überhaupt ein DHCP mehr, sondern ist nur noch PXE-seitig aktiviert und gut ist’s. Der Zweck heiligt oft die Mittel 😉 !
Ich wollte mich mal zurück melden, ich habe das Paket nochmals geladen, in einer VM funktioniert die PXE Bootmethode wunderbar, nur an meinem Notebook per LAN nicht. Dieser erhält scheinbar auch eine IP per Synology, verwirft den Bootvorgang aber sofort wieder und startet das reguläre OS. Im Bios Boot als auch UEFI getestet, selbiges Ergebnis. Werde noch weitere Rechner testen, Danke vorerst 🙂
ist erhalte mit obiger Konfiguration folgenden Fehler z.b. in Hyper V:
The PE/COFF Image is invalid. Auch normale Desktop PCs geben Fehler aus.
Verwendet die aktuelle DSM Version und habe ich mich genau an die Anleitung gehalten, die Diskstation ist der DHCP, die Fritzbox nicht (abgeschaltet)
Einziger Unterschied ist die Link Aggregation zwischen NAS und Netgear Switch, allerdings geht es auch wenn ich diese deaktiviere nicht.
Was ist hier falsch?
Hi,
ich würde gerne das NAS nur als TFTP-Server nutzen und die FritzBox weiterhin als DHCP-Server nutzen. Um die weiteren benötigten Informationen an den PXE-Client weiterzugeben habe ich einen dnsmasq als dhcp-proxy eingerichtet.
Allerdings bekomme ich dann beim Client ein PXE-E32: TFTP open timeout.
Dieser entsteht dadurch das als BOOT SERVER IP die IP des dnsmasq genutzt wird und nicht die des NAS mit dem tftp. Das Problem ist nur ich weiß nicht warum. Hier meine dnsmasq Konfig:
port=0
dhcp-range=192.168.1.0,proxy
dhcp-boot=/pxelinux.0,rackstation,192.168.1.136
pxe-service=x86PC, „Netzwerkboot“, pxelinux
dhcp-option=pxe,66,192.168.1.136
Habt ihr da eine Idee woran das liegen könnte?
VG Frank
Hallo @Frank,
diese Idee hatte ich auch. Wie hast du dnsmasq auf die Diskstation bekommen ?
Kannst du dazu eine Anleitung geben ? Danke…
Geht das vielleicht ?
port=0
dhcp-range=192.168.1.0,proxy
dhcp-boot=pxelinux.0,rackstation,192.168.1.0
pxe-service=x86PC, „Netzwerkboot“, pxelinux, rackstation
VG Michael
Hi @Michael,
also der dnsmasq läuft nicht auf der rackstation sondern auf nem kleinem mini-Server den ich noch im LAN stehen habe. (Alternativ dürfte es ja auch ein Raspi machen)
Dein Post hat mich aber auf den richtigen Weg gebracht.
Hier jetzt meine Konfig mit der es funktioniert: (192.168.1.36 = NAS)
port=0
dhcp-range=192.168.1.0,proxy
dhcp-boot=pxelinux.0, rackstation, 192.168.1.36
pxe-service=x86PC, „Netzwerkboot“, pxelinux, 192.168.1.36
Danke & VG
Frank
Hallo Frank,
ach so.. Ich hatte gedacht der dnsmasq läuft auf der Diskstation. Ich habe es auch mit dem
Raspi gelöst. Das geht gut.
Hauptsache es funktioniert nun. Schön wäre es, wenn das auf der Diskstation ginge.
Also ohne ein DHCP. Nur PXE
VG Michael
Ja wäre eine feine Sache. Ich werde mal bei gelegenheit ausprobieren ob das realisierbar ist 🙂
Was einem noch in der hinsicht das Leben vereinfachen würde wäre wenn die fritzbox die pxe options verteilen könnte oder wenn das NAS eine DHCP-proxy Option hätte…. aber naja so funktioniert es ja auch 🙂
Viele Grüße
Frank