If you run pfSense as a virtual machine on Proxmox VE, the QEMU guest agent lets Proxmox communicate with the VM properly. Proxmox can then shut down pfSense cleanly instead of hard-powering it off, and read the VM’s IP addresses directly in the Proxmox UI.

Step 1: enable the agent in Proxmox#

First tell Proxmox to expect a guest agent on the VM. In the Proxmox web interface:

  1. Select the pfSense VM and go to Hardware > Options.
  2. Double-click QEMU Guest Agent and check Enabled.
  3. Click OK.

This can also be done via the CLI on the Proxmox host:

sh
qm set <VMID> --agent enabled=1

Replace <VMID> with your VM’s ID (e.g. 100).

Step 2: install the plugin in pfSense#

The guest agent is available as a FreeBSD package, but not through the pfSense Package Manager.

  1. Open the pfSense machine’s console, or connect via SSH.
  2. Install the agent with:
sh
pkg install -y qemu-guest-agent

Step 3: the pfSense workaround#

Because pfSense’s system initialization differs from stock FreeBSD, a symlink is needed. pfSense only processes files with a .sh extension during boot:

sh
ln -s /usr/local/etc/rc.d/qemu-guest-agent /usr/local/etc/rc.d/qemu-guest-agent.sh

Step 4: restart or start the service#

Restart the system after installing and applying the workaround. If a restart isn’t immediately possible, start the agent manually instead:

sh
service qemu-guest-agent start

Verifying in Proxmox#

Select the VM in the Proxmox web interface and open the Summary tab. The pfSense interfaces’ IP addresses should now be visible in the VM summary. The Shutdown button now sends a clean ACPI shutdown instead of simulating a power cut.