OPNsense-Umzug auf neue Hardware leicht gemacht: Backup und Restore von Booteinvironments

tiermutter

Well-known member
Irgendwie wird es mal wieder Zeit eine kleine Geschichte aus meiner IT-Praxis zu erzählen...
Ein aktuelles Vorhaben eignet sich bestens dafür und kann gleich als kleine Anleitung dienen: Der Umzug einer OPNsense Installation auf eine andere Hardware.

Meine OPNsense läuft derzeit auf einer RC100 G3 (Aaeon FWS-2251), die mir eigentlich völlig ausreicht, doch zufällig ist mir eine leistungsfähigere RC100 G5 (ähnlich Aaeon FWS-2280) in die Hände gefallen.

Die OPNsense Installation befindet sich auf einer mSATA SSD, die ich theoretisch einfach umbauen könnte, allerdings möchte ich unnötige Downtime durch eventuelle Probleme vermeiden und die alte Firewall möglichst bis zum finalen Austausch aktiv behalten. Außerdem habe ich bei der neuen Hardware die Chance eine 2,5“ SSD zu verwenden, die nochmals mehr Leistung verspricht als eine mSATA SSD.
Auch eine neue Installation und das Einspielen der Konfiguration kommt nicht im Frage, da ich die ein oder andere 3rd party Software (wie zB AdGuard Home) verwende, dessen Einstellungen und Daten nicht in der Konfigurationssicherung enthalten sind.
Der Plan ist demnach klar:
Von der alten Firewall wird ein frisches ZFS Boot Environment exportiert (also quasi ein Image des Datenträgers erstellt) und anschließend in die neue Firewall importiert, sodass diese anschließend das bisherige System bootet. Das alte System steht dann vorerst als Ersatz zur Verfügung, falls etwas schiefgeht.

Voraussetzung dafür ist, dass das aktuelle System ZFS als Dateisystem verwendet und das Tool "bemanager" (https://forum.heimnetz.de/threads/boot-environment-manager-bemanager.1694/) installiert ist. Für das neue System ist ein USB Stick mit bootfähigem OPNsense erforderlich. Vor Beginn der Arbeiten wird nochmal die Konfiguration gesichert, ich mache das direkt zu Google Drive.

Die einzelnen Schritte in Kürze:
1) Alte BE mittels bectl entfernen
2) Aktuelles Boot Environment (BE) mittels bectl erstellen
3) Export/ Backup des BE mittels bemanager
4) Neues System vom USB Stick booten und OPNsense mit ZFS installieren
5) bemanager installieren
6) Import/ Restore des BE mittels bemanager
7) Neues System vom LAN isolieren
8) Neues System auf Funktion prüfen
9) Altes System durch das Neue ersetzen
 
1) Alte BE mittels bectl entfernen
Dieser Schritt ist optional, jedoch empfehlenswert, nicht zuletzt weil man im bemanager später unter Umständen durcheinander kommen kann und dann das falsche BE sichert. Ist nur das aktuelle oder gar kein BE vorhanden, geht es direkt mit Schritt 2 weiter.

1.1) BE mittels bectl list auflisten.
Bei mir sieht es so aus, behalten will ich nur das aktuelle BE mit dem NR flag (23.7.6):
1.1 bectl list.PNG

1.2) Alte BE löschen, das erfolgt mit bectl destroy -o 23.1.11 und bectl destroy -o 23.7.3 wobei die Zahlen hier dem Namen des BE entsprechen.

2) Aktuelles Boot Environment (BE) mittels bectl erstellen
Ein neues BE mittels bectl create xx.x.x erstellen, wobei die X den Namen darstellen; ich verwende hier immer die jeweilige OPNsense Versionsnummer. Wichtig: Neben dem derzeit aktiven BE (NR Tag) muss noch ein weiteres, nicht aktives BE erstellt werden, da ein aktives BE nicht gesichert werden kann.

3) Export/ Backup des BE mittels bemanager
Beim ersten Start muss der BE manager noch eingerichtet werden, insbesondere ein Ziel (zB NAS) im Netzwerk muss als Speicherort angegeben werden. Mehr Info dazu hier (https://forum.heimnetz.de/threads/boot-environment-manager-bemanager.1694/).

3.1 bemanager durch Eingabe von bemanager starten und Option 6 auswählen.
3.1 bemanager.PNG

3.2) Option 2 auswählen (Zeile markieren, mit Leertaste auswählen und mit Enter bestätigen).
3.2 bemanager.PNG

3.3) Es erfolgt die Abfrage für das Kennwort des Zielsystems, in typischer SSH Manier wird die Eingabe nicht angezeigt, aus unerklärlichen Gründen wird die erste Eingabe bei mir stets nicht akzeptiert.

3.4) Nun wird das zu sichernde BE gewählt. Im Idealfall befindet sich hier nur ein BE, im Screenshot befinden sich bei mir mehrere BE, da ich die alten BE zuvor nicht gelöscht habe… erneut verwirrt mich diese Anzeige etwas, weshalb ich die alten BE vorher immer entferne. Das gewünschte BE wird mit der Leertaste markiert und mit Enter bestätigt. Es erfolgt eine erneute Passwortabfrage, dann wird das BE auf das Ziel gesichert.
3.4 bemanager.PNG

Dies dauert mehrere Minuten, eine Fortschrittanzeige gibt es nicht. Der Vorgang ist abgeschlossen, sobald eine Erfolgsmeldung erscheint und man aufgefordert wird eine Taste zu betätigen, anschließend kann der bemanager beendet und die SSH Sitzung geschlossen werden. Zur Sicherheit wird am Ziel geprüft, ob das BE wirklich vorhanden ist. Je nach Einstellung handelt es sich per default um eine .XZ Datei die bei mir zwischen 600 und 800 MB auf die Waage bringt.
 
4) Neues System vom USB Stick booten und OPNsense mit ZFS installieren
Hierzu gibt es eigentlich nicht viel zu sagen, außer dass selbstredend Monitor bzw. Konsole und Tastatur benötigt werden.

5) bemanager installieren
Auch hierzu gibt es nicht viel zu sagen, weitere Infos sind bereits oben verlinkt, auch hier muss das Netzwerkziel samt User angegeben werden, welches in diesem Fall als Quelle dient. Hierzu habe ich einfach die Configdatei des bestehenden Systems genommen und auf das neue System kopiert.
Da für die Installation SSH Zugriff erforderlich ist, muss dieser in der Neuinstallation zunächst aktiviert werden.

6) Import/ Restore des BE mittels bemanager
6.1) Der bemanager wird gestartet und die Option 7 gewählt.
6.1 restore.PNG
Anschließend wird wieder das Remote System, Option 2 gewählt.

6.2) Nach der Kennworteingabe werden alle verfügbaren BE aufgelistet. Das gewünschte BE wird markiert, mit Leertaste ausgewählt und mit Enter bestätigt.
6.2 restore.PNG
Auch dieser Vorgang nimmt einige Minuten Zeit in Anspruch, der Erfolg wird auch hier gemeldet.

6.3) Der bemanager wird beendet, dann schauen wir uns mit bectl list das vorhandene BE an und stellen sicher, dass es mit dem R flag markiert ist, damit es beim nächsten Neustart geladen wird. Ist das BE nicht mit dem R flag versehen, machen wir das mit bectl activate NAME_DES_BE.

6.4) Das System kann nun neu gestartet werden, zuvor sollte aber Punkt 7) beachtet werden.

7) Neues System vom LAN isolieren
Da das System nach dem Neustart mit der IP Adresse des alten Systems hochfährt und das alte System noch in Betrieb ist, käme es unweigerlich zu einem IP-Adressenkonflikt, daher muss das neue System vom Netzwerk isoliert werden. Dazu verbinde ich meinen Rechner einfach direkt mit dem LAN Port um Zugriff auf GUI und ggf. SSH zu haben.
Optional kann die IP vorerst auch geändert werden, damit das System wieder ins LAN gehangen werden kann, später muss die IP natürlich wieder angepasst werden.

8) Neues System auf Funktion prüfen
Dieser Schritt ist sehr individuell und vorerst noch theoretischer Natur, da das neue System ja noch nicht vollständig angeschlossen ist. Soweit es möglich ist, überprüfe ich alle Funktionen und Einstellungen, besonderes Augenmerk liegt hier auf der Zuweisung der Interfaces, denn diese kann vom alten System abweichen.

Eine besondere Problematik tritt ein, wenn die beiden Systeme gänzlich unterschiedliche Interfaces verwenden (z.B. Intel NICs und Realtek NICs). In diesem Fall ist die alte Konfiguration nicht kompatibel und die Sense nach Booten des BE nicht erreichbar. Da die NICs bei mir identisch sind, habe ich hier kein Problem, andernfalls wäre dies eine Möglichkeit (in Kurz) damit umzugehen:

1. Nach dem Booten des BE muss die Interfacezuweisung über die Konsole erfolgen, damit das System im LAN erreichbar wird. Dabei notiert man sich die neuen Interfacebezeichnungen (z.B. re0 oder igb0).
2. Die zuvor gesicherte Konfiguration wird mit einem Texteditor geöffnet und alle alten Interfacebezeichnungen werden durch die neuen Bezeichnungen ersetzt. Anschließend wird diese Konfiguration geladen.
Alternativ nimmt man die Interfacezuweisungen gänzlich manuell vor.

Ebenfalls problematisch könnten Inkompatibilitäten durch UEFI / BIOS Installationen sein.

9) Altes System durch das Neue ersetzen
Ist das neue System einsatzbereit, kann das alte System auch schon ersetzt werden. Beide Systeme werden heruntergefahren und einfach ausgetauscht. Hierbei gilt nochmals zu beachten, dass die Interfacezuweisung anders sein könnte und das LAN-Kabel, welches vorher in Port 1 gesteckt hat, nun in Port 4 gesteckt werden muss. Dann wird das neue System eingeschaltet und alles sollte so funktionieren wie bisher, nur eben auf neuer Hardware.
Die Downtime wurde somit lediglich auf das Herunterfahren, den Austausch und das Hochfahren beschränkt, was in meinem Fall etwa 5 Minuten in Anspruch nahm.
 
Fazit

Das war ein sehr angenehmes Unterfangen, da ich sehr Vieles stressfrei vorbereiten konnte. Insgesamt habe ich für das Unterfangen knappe 30min gebraucht, bin allerdings auch etwas vom beschriebenen Weg abgewichen, da ich meiner Sache sehr sicher war, und habe das Testen des neuen Systems übersprungen. Nach dem Erstellen des BE habe ich meine alte Firewall direkt abgeschaltet und nach dem Überspielen des BE auf die Neue ersetzt. Die Downtime war somit etwa 10min lang, statt 5min wie geplant, aber das ist ok.
Das alles lief absolut reibungslos, tatsächlich hatte ich wenigstens mit einem kleinen Problem gerechnet, aber es ging wirklich absolut sauber über die Bühne. Einzig der Kampf mit der Deutschen Glasfaser um IP Adressen nach Austausch der Hardware war mal wieder etwas nervig, aber das hat nichts mit diesem Projekt per se zu tun.

Die wesentlichen Unterschiede der alten und neuen Hardware sind auf dem Papier schon ganz ordentlich, hier wurde ein Intel Atom E3845 durch einen Intel Elkhart Lake J6412 ersetzt, beim RAM stehen sich 4GB DDR3 und 8GB DDR4 gegenüber und auch die Verwendung der 2,5“ SSD verspricht ein Leistungsplus gegenüber der mSATA SSD.

Was den RAM angeht bin ich bislang bestens zurechtgekommen, das System hat nie geswapt und es war immer ausreichend Reserve für Buffer und Cache vorhanden, von dem zusätzlichen RAM merke ich also nichts. Auch mit der Leistung der CPU hatte ich bislang keine Probleme, jedenfalls nicht so wirklich… lediglich wenn mein tägliches Backup über VPN gelegentlich etwas größer ausgefallen ist ging die CPU Last gerne mal auf 80-90% hoch, das dürfte nun vorbei sein. Wie lange das alte System für einen Neustart gebraucht hat, habe ich nie genau gemessen, von „monit stopped“ bis „monit started“ hatte es bislang etwa 5 Minuten gedauert, das neue System braucht hier nur 3,5 Minuten. Von Beginn eines Updates samt Neustart bis zur Betriebsbereitschaft habe ich zuletzt exakt 5 Minuten gemessen; Downtime ca. 3 Minuten. Die schnellere SSD wird dafür aber kaum verantwortlich sein, ich befürchte sogar, dass der Unterschied bei diesem Einsatzbereich auf Messergebnisse zu beschränken ist und das System nicht spürbar schneller macht. Die Messergebnisse zumindest weisen enorme Unterschiede auf:

Screenshot_JuiceSSH.jpg
(Oben die alte mSATA, unten die 2,5“ SATA)

Natürlich ist dies nicht der einzige Grund für die Umstellung auf 2,5“, hier geht es mir vor allem darum, dass ich die Disk im Ernstfall schneller ersetzen und bei Bedarf einfacher klonen kann, denn 2,5“ SSD fliegen hier haufenweise rum, mSATA hingegen nicht.

Ein etwas paxisorientierter Test ist die VPN Geschwindigkeit, die mich dann doch überrascht. Zuletzt verwende ich Wireguard als VPN, da dies deutlich bessere Ergebnisse in puncto Geschwindigkeit erzielte, mit der neuen Hardware sollte ich das aber wohl nochmal überdenken:

vpn speeds.PNG

OVPN legt hier also sehr kräftig zu, im Upload großer Daten fand sogar mehr als eine Verdoppelung der Übertragungsrate statt, ansonsten schwächelt es gegenüber Wireguard nur beim Upload kleiner Daten. Sicherlich werden hier Messtoleranzen enthalten sein, wie manche Ergebnisse vermuten lassen. Bei Wireguard punktet die neue Hardware immerhin bei der Übertragung kleiner Daten, das teils aber auch gewaltig.

Auch die Stromaufnahme ist mir bei so einem Gerät wichtig, allerdings ist der Unterschied marginal. Die alte Hardware lag dauerhaft bei 19W, die neue Hardware pendelt sich ebenfalls dort ein, springt aber immer wieder mal auf 22W. Bei gleicher TDP der CPUs lässt sich dies sicherlich auch auf die aktive Kühlung sowie die 2,5“ SSD zurückführen. Den Lüfter kann ich übrigens nicht wahrnehmen, zumindest ist er nicht aus den ohnehin vorherrschenden Geräuschen im Rack herauszuhören. Die CPU Temperatur liegt jedenfalls stets bei um die 44°C, beim alten passiv gekühlten System lag ich bei etwa 53°C und hatte sogar einen alten massiven Kühler aus Kupfer auf das Gerät gestellt, damit es etwas kühler wird, aber das nur als Randnotiz…

Insgesamt bin ich happy mit dem neuen System und kann mir nun überlegen, wie ich die zusätzliche Leistung sinnvoll in Verwendung bringe 😊
 
Sehe ich das richtig, dass auf der neuen Hardware (in der Zeile OVPN_new) das OpenVPN bis auf einen Messpunkt die Nase vor Wireguard hat? Also doch nicht das "achso tolle und immer schnelle Wireguard"? ;)
 
Jo, daher war ich auch so überrascht... Ich habe durchaus damit gerechnet, dass OVPN schneller wird, aber analog dazu habe ich erwartet, dass auch WG schneller wird.
Also doch nicht das "achso tolle und immer schnelle Wireguard"?
Für "kräftige" Clients werde ich tatsächlich überlegen wieder OVPN zu verwenden... Wird aber darauf hinauslaufen, dass ich alle Testreihen nochmal fahren muss (hier habe ich ja nun einen Win Rechner als Client und nur iperf und SMB getestet)... Dann entscheide ich welches VPN ich wo einsetzen werde :)
 
Erstmal Danke für diese tolle Anleitung!
Ich bin auch etwas überrascht, dass OpnVPN schneller ist als Wireguard, denn da sollte ja der Vorteil von WG liegen.
Eine Vermutung meinerseits, es liegt an der potenteren Hardware.;)
 
:D könnte irgendwie sein... Werde dazu demnächst neue testreihen machen und im "Wireguard vs OpenVPN" thread einstellen.

Danke, hoffe das kann irgendwem irgendwann behilflich sein :)
Ist ja eher für die speziellen Fälle... Wenn man keine 3rd party Apps betreibt geht das ja auch sehr flink mit einem Backup der Konfig... Naja... Opnsense Plugins müssen vorher auch wenigstens installiert werden damit doe Konfig übernommen wird.
 

Letzte Anleitungen

Statistik des Forums

Themen
4.567
Beiträge
46.749
Mitglieder
4.198
Neuestes Mitglied
Emilk
Zurück
Oben