From 40ec16e974d984add36688771b9c9bc7b261a198 Mon Sep 17 00:00:00 2001 From: Gitea Actions Date: Sun, 24 May 2026 20:12:49 +0000 Subject: [PATCH] Auto-update blog content from Obsidian: 2026-05-24 20:12:49 --- .../images/truenas-vm-add-nic.png | Bin 54175 -> 63813 bytes .../index.fr.md | 283 +++++++++++++++++ .../index.md | 100 +++--- .../old.md | 298 ------------------ 4 files changed, 321 insertions(+), 360 deletions(-) create mode 100644 content/post/19-migrate-passive-opnsense-node-to-truenas/index.fr.md delete mode 100644 content/post/19-migrate-passive-opnsense-node-to-truenas/old.md diff --git a/content/post/19-migrate-passive-opnsense-node-to-truenas/images/truenas-vm-add-nic.png b/content/post/19-migrate-passive-opnsense-node-to-truenas/images/truenas-vm-add-nic.png index e00c3c0051b3c562e8c1b665a373848dd93bd465..055b6d25e28ff7d425d0318792c9c51dab089b48 100644 GIT binary patch literal 63813 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 Tnut_DZV)3bcP&#)@BaS-)p~;I literal 54175 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 Mdv_ImaqP^$0T{vD-~a#s diff --git a/content/post/19-migrate-passive-opnsense-node-to-truenas/index.fr.md b/content/post/19-migrate-passive-opnsense-node-to-truenas/index.fr.md new file mode 100644 index 0000000..7efbc77 --- /dev/null +++ b/content/post/19-migrate-passive-opnsense-node-to-truenas/index.fr.md @@ -0,0 +1,283 @@ +--- +slug: migrate-passive-opnsense-node-to-truenas +title: Migrate my Passive OPNsense HA Node to TrueNAS +description: I migrated my passive OPNsense HA VM from Proxmox to TrueNAS to keep routing and firewalling available even when my Proxmox cluster is down. +date: 2026-05-24 +draft: true +tags: + - opnsense + - truenas + - proxmox + - high-availability +categories: + - homelab +--- +## Intro + +Mon réseau homelab est géré par un cluster OPNsense composé de deux nœuds VM. Ces deux VM fonctionnent dans mon cluster Proxmox VE. Vous pouvez trouver les détails dans cet [article]({{< ref "post/15-migration-opnsense-proxmox-highly-available" >}}). + +Cette configuration fonctionne bien la plupart du temps. Le problème concerne plutôt les rares cas où le cluster Proxmox lui-même est arrêté. Quand cela arrive, les deux nœuds OPNsense sont indisponibles en même temps, ce qui signifie qu’il ne me reste aucun routeur, donc aucun réseau du tout. + +Récemment, j’ai installé un serveur TrueNAS dans le lab, que j'ai documenté dans ce [post]({{< ref "post/18-create-nas-server-with-truenas" >}}). Il est principalement là pour agir comme NAS, mais il pourrait aussi héberger des machines virtuelles. Cela me donne une bonne opportunité d’améliorer la résilience de mon réseau sans changer toute la conception. + +💡 L’idée est simple : garder le nœud OPNsense actif sur Proxmox, mais déplacer le nœud passif vers TrueNAS. + +De cette façon, si le cluster Proxmox tombe, le nœud OPNsense passif peut toujours prendre le relais et garder le réseau fonctionnel. + +--- +## Préparer les nœuds OPNsense + +Avant de déplacer quoi que ce soit, je veux m’assurer que les VM OPNsense peuvent fonctionner avec moins de mémoire. + +Le serveur TrueNAS n’a pas autant de RAM disponible que le cluster Proxmox, donc la première étape est de réduire l’allocation mémoire des nœuds OPNsense au minimum. + +Je commence avec le nœud passif, `cerbere-head2` : + +- Éteindre le nœud passif +- Réduire son allocation mémoire de 4 à 2GB +- Le redémarrer +- Vérifier la santé du cluster +- Basculer le service vers le nœud passif +- Exécuter des vérifications réseau + +Ensuite, je répète la même opération sur le nœud actif, `cerbere-head1`. + +Le faire un nœud à la fois me permet de garder le cluster HA en bonne santé tout en validant que l’allocation mémoire réduite est toujours suffisante pour ma configuration. + +--- +## Préparer le réseau TrueNAS + +La partie la plus importante de cette migration n’est pas l’export du disque ni la création de la VM. C’est le réseau. + +Une VM OPNsense n’est pas un simple serveur avec une seule interface de management. Elle a besoin d’accéder à plusieurs réseaux, incluant le management, le WAN, les réseaux utilisateurs, l’IoT, pfSync, la DMZ et les réseaux lab. + +Du côté TrueNAS, je commence depuis `System` > `Network` et j’ajoute des interfaces VLAN. + +La première est le VLAN utilisateur : + +- Type : `VLAN` +- Nom : `vlan13` +- Description : `User` +- Interface parente : `enp1s0` +- Tag VLAN : `13` + +![Créer l’interface VLAN utilisateur dans TrueNAS](images/truenas-create-new-vlan-interface.png) + +J’ajoute ensuite les autres VLANs de la même manière. + +TrueNAS n’applique pas les changements réseau directement. Il donne l’option de tester les changements d’abord, avec une courte fenêtre de validation. Si la configuration n’est pas confirmée à temps, il revient automatiquement en arrière. + +C’est vraiment pratique lorsqu’on change la configuration réseau de la machine à laquelle on est actuellement connecté. + +![Confirmer les interfaces VLAN avant d’appliquer les changements réseau](images/truenas-network-confirm-add-vlans.png) + +Pour le réseau de management, j’ai créé un bridge appelé `br1`. + +Ce bridge porte la configuration IP de management de TrueNAS à la place de l’interface physique `enp1s0`, parce qu’elle doit aussi être partagée avec la VM OPNsense. + +![Créer le bridge de management pour TrueNAS et la VM OPNsense](images/truenas-network-mgmt-bridge.png) + +Après cela, je retire la configuration IP de l’interface physique et je la garde sur le bridge. + +![Configuration réseau avant d’appliquer les changements du bridge](images/truenas-network-changes-before-apply.png) + +J’ai initialement essayé d’utiliser DHCP pour le bridge de management après avoir mis à jour l’adresse MAC dans Dnsmasq, mais j’ai finalement décidé de garder une adresse IP statique pour TrueNAS. Après certains changements réseau, DHCP a donné une autre adresse du pool, donc l’adressage statique était l’option la plus sûre et la plus simple pour ce serveur. + +Pour la VM OPNsense, je crée un bridge pour chaque VLAN. Par exemple, `br13` utilise `vlan13`, je déplace aussi la description, comme `User`, de l’interface VLAN vers le bridge pour plus de clarté. + +La configuration réseau finale de TrueNAS : + +![Créer un bridge par VLAN pour la VM OPNsense](images/truenas-network-bridges-for-vlan.png) + +--- +## Create a Temporary Export Dataset + +To move the passive OPNsense VM disk from Proxmox to TrueNAS, I first need a place to export the disk image. + +In TrueNAS, I create a dataset named `storage/vm/disk`, then create a NFS share from it. + +In the advanced options of the NFS share, I configured: + +- Maproot user: `root` +- Authorized hosts: + - `192.168.88.21` + - `192.168.88.22` + - `192.168.88.23` + +These are the Proxmox VE nodes allowed to mount the share. + +I don't manually create a zvol at that point. The VM creation process in TrueNAS handle the disk import and conversion. + +--- +## Export the VM Disk from Proxmox + +From the Proxmox VE web interface, I locate the node hosting the passive OPNsense VM `cerbere-head2`, it is running on `Zenith`. + +I log into that Proxmox node over SSH and mount the NFS share from TrueNAS: + +```bash +mount granite.mgmt.vezpi.com:/mnt/storage/vm/disk /mnt +``` + +Then I shut down the VM from the Proxmox VE interface. I don't shut it down from inside OPNsense because the VM has HA enabled. + +Once the VM is stopped, I export the main disk to qcow2. I don't export the EFI disk. + +```bash +qemu-img convert -f raw -O qcow2 -p \ + rbd:ceph-workload/vm-123-disk-1 \ + /mnt/cerbere-head2.qcow2 +``` + +The conversion took about one minute for a 20 GB disk. + +At this point, the passive OPNsense disk is available on TrueNAS and ready to be imported into a new VM. + +--- +## Recreate the OPNsense VM in TrueNAS + +The next step is to recreate the passive OPNsense VM in TrueNAS with parameters matching the original VM as closely as possible. + +From the TrueNAS web interface, I go to the `Virtual Machines` section. + +![The Virtual Machines section in TrueNAS](images/truenas-vm-menu.png) + +I create a new VM with these settings. + +For the operating system: + +- Guest Operating System: `FreeBSD` +- Name: `cerberehead2` +- System Clock: `Local` +- Boot Method: `UEFI` +- Enable Secure Boot: disabled +- Enable Trusted Platform Module: disabled +- Shutdown Timeout: `90` +- Start on Boot: enabled +- Enable Display VNC: disabled + +The VM name does not use dashes because TrueNAS do not allow them there. + +For CPU and memory: + +- Virtual CPUs: `1` +- Cores: `2` +- Threads: `1` +- CPU Mode: `Custom` +- CPU Model: `qemu64` +- Memory Size: `2 GiB` + +For the disk: + +- Create new disk image +- Import Image: enabled +- Image source: `/mnt/storage/vm/files/cerbere-head2.qcow2` +- Disk Type: `VirtIO` +- Storage Location: `storage/vm` +- Size: `20 GiB` + +For the first network interface: + +- Adapter Type: `VirtIO` +- MAC Address: keep the proposed one +- Attach NIC: `br1: Mgmt` + +I skip installation media and GPU configuration, then confirm the summary. + +![Summary before creating the OPNsense VM in TrueNAS](images/truenas-vm-create-new-summary.png) + +After confirmation, TrueNAS convert the imported qcow2 image into a zvol. + +![TrueNAS converting the imported disk image into a zvol](images/truenas-vm-disk-image-conversion.png) + +Once the VM is created, I open the VM details and add the remaining NICs. + +![The VM devices in TrueNAS](images/truenas-vm-details.png) + +For each additional NIC, I used VirtIO as the adapter type and attach it to the corresponding bridge. + +For the WAN NIC, I copy the old MAC address because I use a single WAN IP address trick. I also increment the digit in the Device Order to keep the same as in Proxmox. + +![Additional VirtIO network interface to the OPNsense VM](images/truenas-vm-add-nic.png) + +🎉 Finally I can start the OPNsense VM in TrueNAS. + +![OPNsense booting successfully as a TrueNAS VM](images/truenas-vm-opnsense-start-shell.png) + +--- +## Validate the HA cluster + +Once the passive node is running on TrueNAS, I need to validate that the OPNsense HA cluster is still behaving correctly. + +I start with basic checks on the passive node: + +- Management interface ping from the bastion: `192.168.88.3` +- User interface ping from a laptop: `192.168.13.3` +- IoT interface ping: `192.168.37.3` +- pfSync ping from the other node: `192.168.44.2` +- DMZ interface ping: `192.168.55.3` +- Lab interface ping from DockerVM: `192.168.66.3` + +I also check that the node was accessible over SSH from my laptop using `192.168.13.3`, and that the web interface was reachable at: + +```text +https://192.168.13.3:4443 +``` + +Then I validate the OPNsense HA state: + +- CARP VIP status must be `BACKUP` on all VIPs +- HA status page must show that the active node can log in to the passive node +- Services must be running as expected +- HA service synchronization must work +- Firmware update checks must be accessible + +From the active node, I use the HA status page and force a full synchronization with `Synchronize and reconfigure all`. + +--- +## Switchover Tests + +Before testing failover, I start a SSH session to `dockerVM` to confirm that firewall states are preserved across nodes. I also start a ping from a laptop to `192.168.37.120`. + +For the switchover test, I gracefully enable maintenance mode on the master node. + +The new passive node become `MASTER`, and I validate the important services: + +- Extra VLAN routing with ping to `192.168.37.120` +- WAN access with ping to `8.8.8.8` +- Firewall states by keeping the SSH session alive +- External DNS resolution with `host redhat.com` +- Internal DNS resolution with `host SLZB-06M.mgmt.vezpi.com` +- Access to a random internet page +- Caddy reverse proxy +- Caddy layer4 proxy +- Wireguard access from outside +- mDNS by checking if the printer showed up + +✅ The switchover is successful. + +--- +## Failover Tests + +After the graceful switchover test, I test a more direct failover scenario by forcing a poweroff of the active node. + +I repeated the same validation checklist. + +✅ The failover is successful. + +Finally, I restart the active OPNsense VM. + +🎯 At that point, the OPNsense HA cluster is operational again, with the passive node now running on TrueNAS instead of Proxmox. + +--- +## Conclusion + +This migration is a small but important improvement for my homelab. + +Before, both OPNsense nodes depended on the Proxmox VE cluster. If the cluster was down, my whole network routing layer was down with it. + +Now, the active node still runs on Proxmox, but the passive node runs on TrueNAS. This gives me a better separation between the virtualization cluster and the network failover layer. + +Little disclaimer, while TrueNAS offers virtualization features, it is not comparable to Proxmox VE in terms of clustering and infrastructure management capabilities. + +A note about QEMU Guest Agent, the OPNsense VM already had the QEMU Guest Agent installed before expert. In this setup, it does not seem useful because TrueNAS does not have it implemented as a hypervisor feature. I kept it installed anyway, because it is harmless. \ No newline at end of file diff --git a/content/post/19-migrate-passive-opnsense-node-to-truenas/index.md b/content/post/19-migrate-passive-opnsense-node-to-truenas/index.md index abbe5eb..1925500 100644 --- a/content/post/19-migrate-passive-opnsense-node-to-truenas/index.md +++ b/content/post/19-migrate-passive-opnsense-node-to-truenas/index.md @@ -8,16 +8,17 @@ tags: - opnsense - truenas - proxmox + - high-availability categories: - homelab --- ## Intro -My homelab network is handled by an OPNsense cluster composed of two VM nodes. Both of these VMs are running inside my Proxmox VE cluster. +My homelab network is handled by an OPNsense cluster composed of two VM nodes. Both of these VMs are running inside my Proxmox VE cluster. You can find details in this [article]({{< ref "post/15-migration-opnsense-proxmox-highly-available" >}}). This setup works fine most of the time. The issue is more about the rare cases where the Proxmox cluster itself is down. When that happens, both OPNsense nodes are unavailable at the same time, which means I do not have any router left, so no network at all. -Recently, I installed a TrueNAS server in the lab. You can find the infos in that [post]({{< ref "post/18-create-nas-server-with-truenas" >}}). It is mainly here to act as a NAS, but it could also host virtual machines. That give me a good opportunity to improve the resilience of my network without changing the whole design. +Recently, I installed a TrueNAS server in the labwhich I document in that [post]({{< ref "post/18-create-nas-server-with-truenas" >}}). It is mainly here to act as a NAS, but it could also host virtual machines. That give me a good opportunity to improve the resilience of my network without changing the whole design. 💡 The idea is simple: keep the active OPNsense node on Proxmox, but move the passive node to TrueNAS. @@ -60,7 +61,7 @@ The first one is the User VLAN: - Parent interface: `enp1s0` - VLAN tag: `13` -![Creating the User VLAN interface in TrueNAS](images/truenas-create-new-vlan-interface.png) +![Create the User VLAN interface in TrueNAS](images/truenas-create-new-vlan-interface.png) I then add the other VLANs in the same way. @@ -68,13 +69,13 @@ TrueNAS does not apply network changes directly. It gives the option to test the This is really convenient when changing the network configuration of the machine you are currently connected to. -![Confirming the VLAN interfaces before applying the network changes](images/truenas-network-confirm-add-vlans.png) +![Confirm the VLAN interfaces before applying the network changes](images/truenas-network-confirm-add-vlans.png) For the management network, I created a bridge called `br1`. This bridge holds the TrueNAS management IP configuration instead of the physical interface `enp1s0`, because it also needs to be shared with the OPNsense VM. -![Creating the management bridge for TrueNAS and the OPNsense VM](images/truenas-network-mgmt-bridge.png) +![Create the management bridge for TrueNAS and the OPNsense VM](images/truenas-network-mgmt-bridge.png) After that, I remove the IP configuration from the physical interface and keep it on the bridge. @@ -86,7 +87,7 @@ For the OPNsense VM, I create a bridge for each VLAN. For example, `br13` uses ` The final TrueNAS network configuration: -![Creating one bridge per VLAN for the OPNsense VM](images/truenas-network-bridges-for-vlan.png) +![Create one bridge per VLAN for the OPNsense VM](images/truenas-network-bridges-for-vlan.png) --- ## Create a Temporary Export Dataset @@ -107,6 +108,7 @@ These are the Proxmox VE nodes allowed to mount the share. I don't manually create a zvol at that point. The VM creation process in TrueNAS handle the disk import and conversion. +--- ## Export the VM Disk from Proxmox From the Proxmox VE web interface, I locate the node hosting the passive OPNsense VM `cerbere-head2`, it is running on `Zenith`. @@ -131,13 +133,14 @@ The conversion took about one minute for a 20 GB disk. At this point, the passive OPNsense disk is available on TrueNAS and ready to be imported into a new VM. +--- ## Recreate the OPNsense VM in TrueNAS The next step is to recreate the passive OPNsense VM in TrueNAS with parameters matching the original VM as closely as possible. From the TrueNAS web interface, I go to the `Virtual Machines` section. -![Opening the Virtual Machines section in TrueNAS](images/truenas-vm-menu.png) +![The Virtual Machines section in TrueNAS](images/truenas-vm-menu.png) I create a new VM with these settings. @@ -189,23 +192,24 @@ After confirmation, TrueNAS convert the imported qcow2 image into a zvol. Once the VM is created, I open the VM details and add the remaining NICs. -![Accessing the VM devices in TrueNAS](images/truenas-vm-details.png) +![The VM devices in TrueNAS](images/truenas-vm-details.png) For each additional NIC, I used VirtIO as the adapter type and attach it to the corresponding bridge. -For the WAN NIC, I copy the old MAC address because I use a single WAN IP address trick. I also increment the digit in the MAC address for the following NICs to keep the order clear. +For the WAN NIC, I copy the old MAC address because I use a single WAN IP address trick. I also increment the digit in the Device Order to keep the same as in Proxmox. -![Adding an additional VirtIO network interface to the OPNsense VM](images/truenas-vm-add-nic.png) +![Additional VirtIO network interface to the OPNsense VM](images/truenas-vm-add-nic.png) -After moving the VM NICs to the VLAN bridges, the passive OPNsense VM started correctly in TrueNAS. +🎉 Finally I can start the OPNsense VM in TrueNAS. ![OPNsense booting successfully as a TrueNAS VM](images/truenas-vm-opnsense-start-shell.png) -## Validating the HA cluster +--- +## Validate the HA cluster -Once the passive node was running on TrueNAS, I needed to validate that the OPNsense HA cluster was still behaving correctly. +Once the passive node is running on TrueNAS, I need to validate that the OPNsense HA cluster is still behaving correctly. -I started with basic checks on the passive node: +I start with basic checks on the passive node: - Management interface ping from the bastion: `192.168.88.3` - User interface ping from a laptop: `192.168.13.3` @@ -214,13 +218,13 @@ I started with basic checks on the passive node: - DMZ interface ping: `192.168.55.3` - Lab interface ping from DockerVM: `192.168.66.3` -I also checked that the node was accessible over SSH from Termius using `192.168.13.3`, and that the web interface was reachable at: +I also check that the node was accessible over SSH from my laptop using `192.168.13.3`, and that the web interface was reachable at: ```text https://192.168.13.3:4443 ``` -Then I validated the OPNsense HA state: +Then I validate the OPNsense HA state: - CARP VIP status must be `BACKUP` on all VIPs - HA status page must show that the active node can log in to the passive node @@ -228,15 +232,16 @@ Then I validated the OPNsense HA state: - HA service synchronization must work - Firmware update checks must be accessible -From the active node, I used the HA status page and forced a full synchronization with `Synchronize and reconfigure all`. +From the active node, I use the HA status page and force a full synchronization with `Synchronize and reconfigure all`. -## Switchover tests +--- +## Switchover Tests -Before testing failover, I started an SSH session to DockerVM to confirm that firewall states were preserved across nodes. I also started a ping from a laptop to `192.168.37.120`. +Before testing failover, I start a SSH session to `dockerVM` to confirm that firewall states are preserved across nodes. I also start a ping from a laptop to `192.168.37.120`. -For the switchover test, I gracefully enabled maintenance mode on the master node. +For the switchover test, I gracefully enable maintenance mode on the master node. -The passive node became `MASTER`, and I validated the important services: +The new passive node become `MASTER`, and I validate the important services: - Extra VLAN routing with ping to `192.168.37.120` - WAN access with ping to `8.8.8.8` @@ -249,59 +254,30 @@ The passive node became `MASTER`, and I validated the important services: - Wireguard access from outside - mDNS by checking if the printer showed up -The switchover was successful. +✅ The switchover is successful. -I also tested the switchback. It required entering maintenance mode and leaving it again to return to the expected state, but the cluster behavior was validated. +--- +## Failover Tests -## Failover tests +After the graceful switchover test, I test a more direct failover scenario by forcing a poweroff of the active node. -After the graceful switchover test, I tested a more direct failover scenario by forcing a poweroff of the active node. +I repeated the same validation checklist. -I repeated the same validation checklist: +✅ The failover is successful. -- Extra VLAN routing -- WAN access -- Firewall states -- DNS resolution -- Caddy reverse proxy -- Caddy layer4 proxy -- Wireguard -- mDNS +Finally, I restart the active OPNsense VM. -For DNS, I tested an external domain with: - -```text -host microsoft.com -``` - -And I also checked the internal host: - -```text -host SLZB-06M.mgmt.vezpi.com -``` - -The failover was successful. - -Finally, I restarted the active OPNsense VM. - -At that point, the OPNsense HA cluster was operational again, with the passive node now running on TrueNAS instead of Proxmox. - -## A note about QEMU Guest Agent - -The OPNsense VM already had the QEMU Guest Agent installed. - -In this setup, it does not seem useful because TrueNAS does not have it implemented as a hypervisor feature in the way I would need here. I kept it installed anyway, because it is harmless. +🎯 At that point, the OPNsense HA cluster is operational again, with the passive node now running on TrueNAS instead of Proxmox. +--- ## Conclusion -This migration was a small but important improvement for my homelab. +This migration is a small but important improvement for my homelab. Before, both OPNsense nodes depended on the Proxmox VE cluster. If the cluster was down, my whole network routing layer was down with it. Now, the active node still runs on Proxmox, but the passive node runs on TrueNAS. This gives me a better separation between the virtualization cluster and the network failover layer. -The most important part of the project was the TrueNAS networking model. Creating VLAN interfaces was not enough for the VM use case. The working design was to create one bridge per VLAN and attach the OPNsense VM NICs to those bridges. +Little disclaimer, while TrueNAS offers virtualization features, it is not comparable to Proxmox VE in terms of clustering and infrastructure management capabilities. -After validating CARP, HA sync, routing, DNS, Caddy, Wireguard, mDNS and firewall states, the cluster is working as expected. - -The passive OPNsense node is now outside of Proxmox, and that is exactly what I wanted: keeping network abilities even when the Proxmox VE cluster is unavailable. \ No newline at end of file +A note about QEMU Guest Agent, the OPNsense VM already had the QEMU Guest Agent installed before expert. In this setup, it does not seem useful because TrueNAS does not have it implemented as a hypervisor feature. I kept it installed anyway, because it is harmless. \ No newline at end of file diff --git a/content/post/19-migrate-passive-opnsense-node-to-truenas/old.md b/content/post/19-migrate-passive-opnsense-node-to-truenas/old.md deleted file mode 100644 index d3e8351..0000000 --- a/content/post/19-migrate-passive-opnsense-node-to-truenas/old.md +++ /dev/null @@ -1,298 +0,0 @@ ---- -slug: migrate-passive-opnsense-node-to-truenas -title: -description: -date: 2026-03-12 -draft: true -tags: - - opnsense - - truenas - - proxmox -categories: - - homelab ---- - -## Intro - -My router is the heart of my homelab. When it’s down, everything is down: internet, DNS, VLAN firewall, reverse proxy… the whole stack. - -I’m running an [[OPNsense]] HA cluster made of **two virtual machines** inside my [[Proxmox]] VE cluster. It works great… except for one annoying edge case: when the Proxmox cluster is down (rare, but it happens), I suddenly have **no router left**. - -Recently I installed a [[TrueNAS]] server ([[Build my NAS with TrueNAS]]), and TrueNAS can host virtual machines. So I decided to move **only the passive OPNsense node** to TrueNAS, so that if Proxmox goes dark, I still have a node alive that can take over and keep the network running. - -The objective of this post is simple: explain what I migrated, why I did it, and what configuration choices made it work reliably. - ---- - -## The Plan: Split the HA Pair Across Two Hypervisors - -The goal was: - -- Keep the **active** OPNsense node running on Proxmox VE (where it already lives). -- Migrate the **passive** node to TrueNAS. -- Validate that the HA cluster still behaves properly (CARP VIPs, sync, services, failover). - -This way, a Proxmox outage no longer means “no routing at all”. - ---- - -## What I Used - -Quick overview of the pieces involved: - -- **OPNsense**: https://opnsense.org/ -- **Proxmox VE** (current home of both OPNsense VMs): https://www.proxmox.com/en/proxmox-virtual-environment/overview -- **TrueNAS** (new home of the passive node, and storage to transfer the VM disk): https://www.truenas.com/ - ---- - -## Step 1 — Make OPNsense Lighter (RAM Reduction) - -TrueNAS on my side doesn’t have “infinite RAM”, so the first step was to reduce memory usage to something more reasonable. - -I reduced the memory allocation of both OPNsense nodes in Proxmox: - -- Shutdown passive node `cerbere-head2` -- Reduce RAM, restart, verify HA -- Swap services to the passive temporarily and test networking -- Shutdown active node `cerbere-head1` -- Reduce RAM, restart, verify HA again - -This kept the cluster healthy while ensuring the VM would fit comfortably on the NAS. - -(Details: [[Reduce the memory allocation of OPNsense nodes]]) - ---- - -## Step 2 — Prepare Networking on TrueNAS (Trunk + VLAN Strategy) - -To host an OPNsense VM properly, TrueNAS must be able to present the right networks to the VM (Mgmt, VLANs, etc.). In my case, I needed a trunk configuration. - -In TrueNAS, I went to `System` > `Network` and created VLAN interfaces (example with VLAN 13): - -![[truenas-create-new-vlan-interface.png]] - -TrueNAS is nice here: changes aren’t applied blindly. You can **test** them and you get a rollback window, which is exactly what you want when you’re touching the network config remotely: - -![[truenas-network-confirm-add-vlans.png]] - -### Management bridge - -I created a bridge `br1` for the management interface, shared between: - -- TrueNAS itself -- the future OPNsense VM - -And moved the IP configuration to the bridge: - -![[truenas-network-mgmt-bridge.png]] - -Final view before apply: - -![[truenas-network-changes-before-apply.png]] - -### Static IP vs DHCP (and why I stayed static) - -I initially tried switching the management bridge to DHCP by updating the MAC address in OPNsense (Dnsmasq override): - -![[opnsense-update-dnsmasq-override-truenas-bridge.png]] - -Then I attempted to flip TrueNAS from static to DHCP: - -![[truenas-network-bridge-switch-static-to-dhcp.png]] - -But DHCP didn’t behave as I expected: it kept receiving random IPs from the pool. I suspected existing leases played a role. I even tried manually editing leases and restarting the service, but after another change, it still ended up with a random address again. - -In the end, I gave up and kept **a static IP** for TrueNAS. It’s boring, but it’s predictable. - -### The key decision: bridge VLANs (not just VLAN interfaces) - -This became important later: I originally planned to attach VLAN interfaces directly to the OPNsense VM, but it didn’t behave well. - -So I created **one bridge per VLAN** (ex: `br13` with `vlan13` as the only member), and used those bridges for the VM NICs: - -![[truenas-network-bridges-for-vlan.png]] - -That ended up being the difference between “split-brain chaos” and “stable HA”. - -(Full notes: [[Configure the trunk in TrueNAS]]) - ---- - -## Step 3 — Move the VM Disk From Proxmox to TrueNAS - -To migrate the VM cleanly, I exported the Proxmox disk to TrueNAS. - -### Create a dataset and export it via NFS - -I created a dataset (initially called `disk`) and exported it with NFS, restricting access to my three Proxmox nodes (by IP): - -- 192.168.88.21 -- 192.168.88.22 -- 192.168.88.23 - -(Notes: [[Create a new dataset in TrueNAS to export Proxmox VM disk]]) - -### Export the passive OPNsense disk - -On the Proxmox node hosting the passive VM (`cerbere-head2`), I mounted the NFS share: - -```bash -mount granite.mgmt.vezpi.com:/mnt/storage/disk /mnt -``` - -Then I shut down the VM from Proxmox (HA enabled, so I didn’t do it from inside OPNsense), and converted/exported the main disk (not the EFI disk) from Ceph RBD to a qcow2 file: - -```bash -qemu-img convert -f raw -O qcow2 -p \ - rbd:ceph-workload/vm-123-disk-1 \ - /mnt/cerbere-head2.qcow2 -``` - -The conversion took around a minute for a 20GB disk. - -(Notes: [[Export the passive OPNsense VM disk from Proxmox]]) - -### Dataset reorg (cleaner layout) - -I reorganized datasets on TrueNAS side to something more VM-oriented: - -- created `storage/vm` -- renamed `storage/disk` to `storage/vm/files` - -Commands used: - -```bash -zfs list -sudo zfs create storage/vm -sudo zfs rename storage/disk storage/vm/files -``` - -(Notes: [[Reorganize the dataset in TrueNAS]]) - ---- - -## Step 4 — Create the OPNsense VM on TrueNAS (Import Disk + Rebuild NICs) - -Now the fun part: recreating the VM on TrueNAS with the same “spirit” as the Proxmox VM. - -From `Virtual Machines`: - -![[truenas-vm-menu.png]] - -### VM settings I used - -I created a new VM with: - -**Operating System** -- Guest: FreeBSD -- Name: `cerberehead2` (TrueNAS doesn’t like dashes) -- Boot: UEFI -- Secure Boot: Disabled -- TPM: Disabled -- Start on Boot: Enabled -- VNC: Disabled - -**CPU & Memory** -- Virtual CPUs: 1 -- Cores: 2 -- Threads: 1 -- CPU Mode: Custom -- CPU Model: `qemu64` -- Memory: 2 GiB - -**Disk** -- Import image enabled -- Source: `/mnt/storage/vm/files/cerbere-head2.qcow2` -- Disk Type: VirtIO -- Location: `storage/vm` -- Size: 20 GiB - -**Network** -- Adapter: VirtIO -- Attached to `br1` (Mgmt) -- MAC: kept the generated one here - -Summary screen: - -![[truenas-vm-create-new-summary.png]] - -After saving, TrueNAS converted the imported image into a Zvol: - -![[truenas-vm-disk-image-conversion.png]] - -### Adding the additional NICs - -After the VM was created, I added the additional NICs in the VM device list: - -![[truenas-vm-details.png]] - -At first, I attached VLAN interfaces directly and started the VM… and instantly broke my network (great success). - -The VM itself booted fine though, and seeing OPNsense come up cleanly on TrueNAS was a good sign: - -![[truenas-vm-opnsense-start-shell.png]] - -But HA-wise, it was a mess: split-brain symptoms, with the TrueNAS-hosted node thinking it was MASTER on almost everything except Mgmt. - -The fix was the VLAN bridging approach mentioned earlier: once I switched the VM NICs to attach to **bridges (`br13`, `br20`, etc.) instead of VLAN interfaces**, the cluster came back to a healthy state. - -Second try: stable. ✅ - -(Notes: [[Create the OPNsense VM in TrueNAS]]) - ---- - -## Step 5 — Validate HA: CARP, Sync, Services, Switchover and Failover - -Once everything was in place, I validated the new setup with a proper checklist. I wanted to be sure the cluster worked exactly as before. - -### Basic checks - -- Ping each interface as relevant (Mgmt/User/IoT/pfSync/DMZ/Lab) -- SSH access -- Web UI access -- CARP VIP status must be `BACKUP` on the passive node -- HA status (active must be able to log into passive) -- Services state + “Synchronize and reconfigure all” -- Check updates availability (`System` > `Firmware` > `Check for updates`) - -### Switchover test (graceful) - -I started: -- a SSH session to DockerVM (to check state keeping) -- a ping to an IoT host from a laptop - -Then tested: -- CARP role switch -- inter-VLAN routing -- WAN ping to `8.8.8.8` -- firewall state (SSH session stays alive) -- DNS resolution (external + internal) -- Caddy reverse proxy + layer4 proxy checks -- Wireguard access from outside -- mDNS discovery (printer visibility) - -✅ Switchover successful. - -### Failover test (hard) - -Then I forced power off of the active node and repeated the same functional tests. - -✅ Failover successful. - -At the end: restarted the active VM, and the HA pair returned to normal operation. - -One note: QEMU Guest Agent doesn’t bring value here because TrueNAS doesn’t implement it as a hypervisor (I still left it installed since it’s harmless). - -(Full checklist and validation steps: [[Validate the new OPNsense VM and cluster state]]) - ---- - -## Conclusion - -This project solved a real weakness in my homelab: my “highly available” router cluster was still depending on a single platform (Proxmox). By moving only the **passive OPNsense node** to **TrueNAS**, I now have a router that can survive a full Proxmox outage. - -The biggest takeaway for me was networking on TrueNAS: attaching VLAN interfaces directly to the VM was not reliable in my setup, but bridging each VLAN (`br13`, `br20`, etc.) made the HA behavior stable and predictable. - -Next step is to monitor the cluster for a few days before doing the cleanup of the migration on the Proxmox side. \ No newline at end of file