Anleitung: pfSense auf WatchGuard XTM5 installieren
Am Wochenende war einmal wieder der Jahresputz im Serverschrank angesagt. Dabei musste ich auch die Reinigung der XTM5 Appliance erledigen. Leider kam es dabei zu einem ungeplanten Zwischenfall, der eine Neuinstallation des Gateways erforderte. Daran lasse ich euch in diesem Artikel teilhaben.
Ich führe diesen Blog ja vor allem, um Dinge für die Welt (und vor allem für mich selbst) zu dokumentieren, die sonst nach drei Tagen in Vergessenheit geraten sind und beim nächsten Mal (und das gibt es immer!) wieder lange Recherche erfordern.
Daher habe ich in diesem Artikel beschrieben, wie ich pfSense auf meiner WatchGuard XTM5 Appliance installiert habe. Wer mehr über das Gerät wissen möchte, der schaut am besten in den ersten Artikel zu meinem pfSense-Router für’s Heimnetz und Büro.
Warum eigentlich neu installieren?
Kurz vorweg, warum überhaupt eine Neuinstallation nötig war: Die XTM5 läuft seit drei Jahren mit einer 2,5-Zoll-Festplatte der WD Blue Serie*. Ein Desktop-Laufwerk für Notebooks, das eigentlich gar nichts in einer 24/7-Anwendung zu suchen hat. Bis jetzt hat’s aber funktioniert. Da ich den Router durch die Reinigung ohnehin auseinandergenommen hatte, habe ich parallel zur Sicherheit schon seit Längerem ein 1:1-Image der HDD machen wollen. Zur Sicherheit, „falls“ sie mal drauf geht.
Das Ergebnis war ernüchternd: Die Platte hatte bereits defekte Sektoren. Das bedeutete also, einfach so weiterlaufen lassen wäre ein Spiel auf Zeit gewesen. Und wir alle wissen ja, wie sowas abläuft: Man macht die Wohnungstür hinter sich zu, um zwei Wochen in den Urlaub zu fahren und 10 Minuten später verreckt die Platte…
Der schnellste Weg den Router wieder in den bisherigen Zustand mit einem neuen Laufwerk zu versetzen, ist eine saubere Neuinstallation von pfSense und das anschließenden Einspielen der config.xml.
Ich habe im Übrigen nun eine alte Intel X-25M „Postville“ SSD mit 80 GB eingebaut. Die hat nun ein neues Zuhause und kann dort vor allem den Cache bedienen. Die 500 GB der alten HDD waren ohnehin vollständig überzogen.
Config-Backup machen
Wer seinen pfSense-Router nicht erstmalig aufsetzt, sondern die Hardware wechselt oder einen ähnlichen Fall wie ich vor sich hat, der muss unbedingt vorab einen Export der gesamten pfSense-Konfiguration erstellen. Das empfiehlt sich so oder so periodisch, sobald (und vor allem bevor) größere Veränderungen gemacht wurden.
Die Datei lässt sich erstellen unter: Dianostics -> Backup & Restore -> Download configuration as XML.
In jedem Fall gut sichern und mit dem Leben beschützen. Wer diese Datei nicht (mehr) hat, muss bei einer Neuinstallation anschließend ALLES manuell konfigurieren. Das dauert je nach Setup gerne mal einen Nachmittag oder auch ein ganzes Wochenende.
pfSense und SSDs
Wie oben schon geschrieben, kommt nun eine SSD statt einer HDD im Router zum Einsatz. In Sachen Geschwindigkeit tut das in meinem Rahmen nichts zur Sache. Dafür ist aber der Verbrauch der XTM5 leicht gesunken und die SSD wird natürlich kaum warm.
Wer sich Gedanken bzgl. TRIM-Support unter FreeBSD macht: Man kann TRIM aktivieren. Das ist aber nur extra Aufwand, der sich auch meiner Sicht nicht lohnt. Die Intel SSD arbeitet mit MLC-NAND und ist somit ohnehin bereits „robust“ (zumindest im Vergleich zu TLC und QLC). Außerdem ist die Platte im aktuellen Betrieb zu 2% gefüllt.
Das Wear Leveling hat also ohnehin mehr als genug freie Blöcke, um seine Arbeit zu machen. TRIM ist damit vielleicht ein Bonus, in diesem Szenario aber für mich nicht notwendig.
pfSense USB-Stick erstellen
pfSense lässt sich glücklicherweise direkt von einem USB-Stick* installieren. Dazu sind nur wenige Schritte notwendig. Alle Details sind direkt in den offiziellen Docs von pfSense beschrieben.
Wichtig ist, dass für die XTM5 das „Serial Image“ gewählt wird. Nur hier wird direkt ab Start die serielle Konsole aktiviert, die man benötigt, da die WatchGuard Appliance* keine Grafikkarte hat.
Ich habe diesen gesamten Guide mit pfSense 2.4.5-RELEASE-p1 (amd64) durchgeführt. Zum Schreiben des Image auf den USB Stick habe ich Win32 Disk Imager unter Windows 10 genutzt.
Hardware-Spender für die Installation
Leider habe ich es bisher nicht hinbekommen, pfSense direkt von einem USB-Stick auf einem SATA-Laufwerk in der XTM5 zu installieren. Ich gehe daher einen Umweg über ein altes Lenovo X220 Notebook. Die SSD habe ich hier kurz eingebaut und anschließend vom Stick gebootet.
Wichtig: Der Computer, der zur initialen Installation genutzt wird, muss unbedingt im „Legacy-Mode“ im BIOS und nicht im UEFI-Modus betrieben werden. Das BIOS der XTM5 kann nichts mit UEFI anfangen und würde eine entsprechende UEFI-Installation von pfSense auch nicht erkennen.
Die Installation kann nun mit den Standardparametern vorgenommen werden. Viel mehr als das Keyboard-Layout einzustellen und das richtige Laufwerk für die Installation zu wählen (Achtung: mit dem Installer löscht ihr das gesamte Laufwerk, das als Installationsziel ausgewählt ist!).
Nach der Installation will der pfSense Installer durchstarten. Das bestätigt ihr mit „OK“ und schaltet den Computer dann vor den nächsten Boot aus. Damit bekommt die XTM5 quasi ein jungfräuliches pfSense-OS bereitgestellt.
Serielle Konsole zur Installation
Im nächsten Schritt wird die neue SSD samt frischem pfSense dann in die XTM5 eingebaut. Bevor gestartet wird, muss noch der RS232-Adapter mit dem Konsolenport des Gateways verbunden werden (ganz linke RJ45-Buchse an der Front).
Folgende Parameter sind für eine Terminalverbindung geeignet:
- Geschwindikgeit: 115200
- Data bits: 8
- Stop bits: 1
- Parity: None
- Flow Control: None
Weitere Infos dazu, finden sich auch direkt bei WatchGuard.
Die gesamten Terminalarbeiten habe ich unter MacOS durchgeführt. Dazu muss in der Regel zunächst der passende Treiber für den RS232-USB-Adapter installiert werden. Auf dieser Website wurde alles Wichtige zusammengefasst. Ich nutze ein RS232-USB-Dongle von Digitus*. Dazu braucht es dann noch ein passendes RS232 auf RJ45 Kabel* (auf die Pinbelegung achten!).
Ich habe das Onboard-Tool „cu“ auf dem Mac im Terminal verwendet. Um das richtige device zu finden, einfach folgenden Befehl ausführen:
ls /dev/cu.*
Die serielle Schnittstelle heißt hier (je nach Adapter) zum Beispiel /dev/cu.usbserial1928. Sollte nichts auftauchen: Die serielle Verbindung zwischen XTM5 und Dongle trennen und noch einmal probieren.
Die serielle Konsole zur XTM5 öffnet ihr dann ganz einfach mit:
screen /dev/cu.usbserial1928 115200
Danach die XTM5 einschalten und abwarten. In der Regel erscheint sofort der Self-Check des BIOS. Sollte nichts erscheinen, einfach ein paar Mal die Leertaste drücken. Das Konsolenfenster muss sich manchmal erst „finden“.
Im besten Fall bootet die XTM5 nun direkt von der SSD. Das hat bei mir ohne Probleme geklappt (Nun ja, nach drei UEFI-Fehlversuchen).
Konfiguration wieder einspielen
Da wir von einer SSD mit frischem OS gebootet haben, will die pfSense nun in der Regel eine Erstkonfiguration von WAN- und LAN-Schnittstelle machen. Hier könnt ihr einfach irgendwelche Schnittstellen zuweisen, wenn ihr – wie ich – ohnehin eine alte config.xml einspielen wollt.
Wer natürlich neu dabei ist, der muss jetzt alles wie gewünscht konfigurieren. Dazu finden sich ja genügen Anleitungen im Netz. 🙂
Sobald die XTM5 samt pfSense im Betriebsmodus ist, wird eine Netzwerkverbindung (am besten direkt an ein Notebook) über die LAN-Schnittstelle hergestellt. Der Login erfolgt über die IP-Adresse des Routers (in der Regel 192.168.1.1). Die Login-Daten sind die Standardwerte (admin/pfsense).
Nun wird in einem letzten Schritt die alte Konfigurationsdatei wieder über Dianostics -> Backup & Restore -> Restore Configuration wieder eingespielt.
Das System startet dazu einmal neu. Im Hintergrund werden außerdem alle ggf. vorab installierten Pakete automatisch heruntergelangt und installiert. Man bekommt also tatsächlich eine 1:1-Kopie des vorherigen Zustandes des Systems.
Wenn die Pakete haken…
Natürlich ist die automatische Installation aller Pakete aus der alten config.xml eine super Sache – wenn sie dann funktioniert. In meinem Fall hatte sich ein pkg-Prozess aufgegangen und die Installation des Avahi-Servers verhindert.
Ich habe in folgendem Foreneintrag die Lösung gefunden:
Die entsprechende Prozess ID (erscheint im Log des Paketmanagers, nachdem man die „gelockten“ Pakete entsperrt und eine manuelle Installation angestoßen hat) einfach mit dem folgenden Command beenden:
killall <<id>>
Danach kann die manuelle Neuinstallation aller Pakete über Dianostics -> Backup & Restore -> Reitstall Packages noch einmal neu angestoßen werden. Das hat dann wunderbar geklappt.
WGXepc64 erneut aufspielen
Das kleine Tool WGXepc64 ist in Zusammenhang mit der WatchGuard XTM5 und pfSense ein super Helferlein, um zum Beispiel die Status-LED auf der Vorderseite zu steuern oder die Lüfterregelung zu bändigen.
Natürlich ist das Tool im Auslieferungszustand noch nicht auf dem System vorhanden. Das kann man über den File-Upload im Web Configurator unter Diagnostics -> Command Prompt -> File Upload tun.
Die Datei landet dann im /tmp Verzeichnis. Ich hatte meine WGXepc64 immer unter /conf liegen und habe sie deshalb via Terminal / SSH umkopiert:
cp /tmp/WGXepc64 /conf
Da wir die Datei über den Web Configurator eingespielt haben, ist das Programm noch nicht ausführbar. Das lässt sich mit folgendem Befehl ändern:
chmod u+x /conf/WGXepc64
Danach funktionieren die Befehle aus Services -> Shellcmd beim Boot auch wieder wie gewohnt.
Schlusswort
Da habt ihr es: So „einfach“ lässt sich pfSense in wenigen Schritten auf der XTM5 installieren. Wenige Schritte, die mich mal wieder den gesamten Sonntag gekostet haben. 🙂 Nun ist es aber einmal protokolliert und hilft hoffentlich mir und euch in der Zukunft.
Wie immer gilt: Nachmachen auf eigene Gefahr. Es wird ausdrücklich keine Haftung für Schäden, die durch das Nachahmen dieser Inhalte entstehen können, übernommen.
Hi,
cooles manual zum WG-2-PfSense Umbau. Fettes Like.
Kannst Du evtl die config datei zu WGXepc64 hier mit bereit stellen. Die Seite die das ursprünglich gehosted hat. Ist leider offline.