Bei einem größeren Update bzw. Upgrade auf eine neuere Version von OPNsense, ist es immer gut ein Backup bzw. einen Notfallplan für den „Worst Case“ zu haben, gerade wenn man nicht vor Ort ist um einen manuellen Neustart durchführen zu können, falls einmal etwas Schief geht…
Hier kommen die ZFS Boot-Environments („Snapshots“) ins Spiel…
Voraussetzung dafür ist, dass als Dateisystem ZFS bei der Installation von OPNsense gewählt wurde.
Mit UFS funktioniert das hier nicht, wobei UFS auch nicht mehr empfohlen wird bei neuen Installation, da bei einem Stromausfall, das Dateisystem beschädigt werden kann.
Da ist ZFS robuster! 💡 – deswegen wird für neu Installationen von OPNsense mittlerweile nur mehr ZFS empfohlen.
Notice
In den folgenden Schritten werden die „Boot Environments“ für ZFS mit „BE“ abgekürzt!So wird’s gemacht:
Prüfen der Voraussetzungen:
- Via SSH (zb mit Putty) auf der OPNsense einloggen & die Console starten
bectl check
ausführen
💡 ➡ wenn keine Ausgabe kommt, bedeutet das OK, sprich die Voraussetzung wird erfüllt!
Important!
In der Shell steuert man mit dem Befehlbectl
das ZFS Boot-EnvironmentNotice
Und hier noch eine kleine Befehlsübersicht:Befehl | Beschreibung |
bectl check | Prüft ob ZFS als Dateisystem verwendet wird (Voraussetzung) |
bectl list | Listet alle vorhandenen BE auf |
bectl create [NAME] | erstellt einen neuen BE mit dem Namen [NAME] |
bectl rename [NAME] [NAME NEU] | Bennent einen vorhanden BE von [NAME] auf [NAME NEU] um |
bectl activate [NAME] | aktiviert das vorhandene BE mit dem Namen [NAME] nach einem Reboot |
bectl activate -t [NAME] | aktiviert das vorhandene BE mit dem Namen [NAME] nach einem Reboot. Das „ -t “ steht für „Temporär„, dadurch wird sobald das ausgewählte BE aktiv ist, welches nun einen einmaligen Neustart „überlebt“.Erst beim zweiten Neustart, wird das ursprüngliche (vorherige) BE wieder gebootet!Das ist eine weitere Sicherheitsstufe, falls bei einem Update/Upgrade etwa schiefen gehen sollte. In so einem Fall, braucht nur jemand das Gerät ausschalten oder das Stromkabel ziehen & es wird wieder das alte funktionieren BE gebootet! ➡ wenn ein Upgrade allerdings 2-3x Neustartet, wird nachdem zweiten Neustart wieder das alte BE gebootet. Hier muss dann der Befehl einfach nochmals ausgeführt & die Firewall nochmals rebootet werden, um das Update/Upgrade weiterlaufen lassen zu können |
bectl destroy [NAME] | löscht das BE mit dem Namen [NAME] |
Beispiel anhand des Upgrades von v24.1.10-8 auf v24.7.6:
Als erstes lassen wir uns alle bestehenden BE anzeigen, mit bectl list
.
Das N hinter dem Namen steht dabei für das aktuell gestartete BE.
Das R hinter dem Namen für das BE, welches bei einem Neustart gestartet wird.
Bevor es mit dem Update/Upgrade los geht, legt man ein neues BE (mit der aktuell laufenden Version die man sichern möchte) an.
Dies geschieht mit: bectl create 24.1.10-8
Ruft man nun erneut die Übersicht aller vorhanden BE mit bectl list
auf, sieht man, dass es nun zwei gibt.
Das gerade angelegte & das Standardmäßige „default“ BE:
Als nächstes wird das soeben erstelle BE aktiviert, dies ist das „Fallback“ falls etwas schiefgehen sollte, kann einfach dieser „Snapshot“ wieder gestartet werden, und man hat sein „altes“ funktionierendes System wieder.
Dies geschieht mit bectl activate 24.1.10-8
Ein erneuter Blick mit bectl list
in die Auflistung der vorhanden BE zeigt nun hinter dem neuen BE „24.1.10-8„, ein „R“ an, was für „Reboot“ steht!
Würde man jetzt das Update/Upgrade im aktuellen „default“ BE starten, und die OPNsense anschließend neu booten, würde nachdem booten die alte Version mit „24.1.10-8“ wieder geladen werden.
Deswegen gibt es die Möglichkeit ein BE, in diesem Fall das „default“ als temporäres BE zu aktivieren.
Dies geschieht mit: bectl activate -t default
Ruft man nun erneut die Liste aller bestehenden BE mit bectl list
auf, steht nun hinter dem „default“ BE zusätzlich zum N (für Now) ein T (für Temporary).
Update bzw. Upgrade durchführen:
Nun kann mit dem eigentlichen Update bzw. Upgrade begonnen werden.
Hierfür wie gewohnt in der GUI von OPNsense nach Aktualisierungen suchen & diese anschließend installieren lassen.
(Bild nur zur Veranschaulichung – hier hatte ich das Upgrade auf 24.7.6 bereits abgeschlossen!)
Sollte es hier nun also zu einem Fehler kommen & die Firewall nicht mehr starten, reicht es diese einmal vom Strom zu trennen bzw. manuell neu zu starten.
Anschließend wird das „alte“ „24.1.10-8“ BE wieder booten (das mit dem R in der Auflistung…), und man kann das Update/Upgrade nochmals versuchen.
➡ Hier dann aber vorher wieder ein neues funktionierendes BE erstellen, das als neues „Fallback“ dient!
➡ Denn wenn sonst beim aktuellen „24.1.10-8“ BE auch etwas schief geht, hat man kein „Fallback“ mehr, auf das man zurückgreifen könnte 😉
Warning!
Das „große“ Upgrade auf 24.7.x startet mehr als einmal neu.Dadurch wird die Firewall beim zweiten Neustart wieder das „alte 24.1.10-8“ booten.
(Quasi das Fallback System)
In so einem Fall muss man sich wieder via SSH als „root“ auf die OPNsense einloggen & erneut das „default“ BE als temporäres BE aktivieren mit
bectl activate -t default
Anschließend die OPNsense nochmals neustarten & das Upgrade wird fortgesetzt!
Je nachdem wie oft die OPNsense bei dem Upgrade neu startet kann es sein, dass man dies 2-3x machen muss, bevor das eigentliche Upgrade fertig ist!
Ob das Upgrade fertig ist, erkennt man entweder in der Web GUI im Dashboard unter „Systeminformationen“ => „Version“, oder über SSH direkt nachdem einloggen bei der Versionsnummer 24.7
Außerdem steht nach dem erfolgreichem Boot der neuen Version in der Auflistung der vorhandenen BE mit bectl list
hinter dem „default“ BE wieder ein N
Letzte Abschlussarbeiten:
Zum Schluss muss das gerade Upgedatete BE hier „default“ wieder als BE bei Reboots aktiviert werden.
Dies geschieht mit bectl activate default
Prüft man anschließend mit bectl list
nochmal die Auflistung der vorhandenen BE, sieht man das beim „default“ BE, nun wieder NR steht.
Was für „Now & Reboot“ steht!
Notice
Wenn alles glatt gelaufen ist & die neue Version einige Zeit problemlos gelaufen ist, kann das alte BE „24.1.10-8“ noch mitbectl destroy 24.1.10-8
gelöscht werden.Notice
Noch ein Hinweis zu Version ab 24.7.x:Mit Version 24.7.x hat OPNsense diese BE Funktion auch in die Web GUI integriert.
Nun ist es nicht mehr zwingend notwendig, dies über SSH zu machen.
Allerdings gibt es dort Stand 13.10.2024 (noch) KEINE Funktion, ein BE als Temporäres festzulegen.
Das geht derzeit nach wie vor nur über SSH.
Diese Temporäre Funktion braucht man aber nicht zwingend, wenn man selbst direkten Zugang zur Firewall hat & kein Remote Upgrade durchführt.
In so einem Fall kann man von der Anleitung abweichen & das „default“ BE mit bectl activate default
für Reboots wieder aktivieren, bzw. wenn es noch aktiviert ist, aktiviert lassen.
Man erstellt also „nur“ den „Snapshot“ mit bectl create 24.1.10-8
und startet dann anschließend den Update Vorgang!
Sollte dann etwas schief gehen, muss das „Fallback“ BE „24.1.10-8“ einmal manuell mit bectl activate 24.1.10-8
wieder aktiviert werden.
Dies muss dann aber direkt über die Konsole an der Firewall selbst erfolgen, da im schlimmsten Fall kein Zugriff mehr via SSH möglich ist!
Gutes Gelingen bei künftigen kritischen Updates eurer OPNsense Firewalls 😎
Neueste Kommentare