pfSense is a free network firewall distribution, based on the FreeBSD operating system with a custom kernel and including third party free software packages for additional functionality.

Creation of an Install VM

First we have to download the latest installer image from https://www.pfsense.org/download/, select the memstick installer with a serial console.

Select Installer Image

The downloaded image is compressed with GNU Gzip, it has a .gz extension. So we have to decompress it first. On Linux/macOS open a terminal, change to the download directory and decompress the image with gunzip <image>. On Windows WinZip or 7-Zip can be used to decompress it.

Then move it into the directory for GNS3 QEMU images, normally GNS3 -> images -> QEMU.

Now we will setup a VM for installing pfSense. For that we start GNS3 and open the Preferences / Qemu VMs.

With “New” start the QEMU VM wizard and go through the following steps:

  • Select the server type, normally “Run this Qemu VM on the GNS3 VM”. Only if your local or remote server runs on Linux you may choose these.
  • Enter a QEMU VM name, e.g. pfSense
  • Select qemu-system-x86_64 as the Qemu binary (should be the default) and 2048 MB of RAM
  • Use console type telnet (default)
  • Select the just downloaded pfSense installer as the disk image
  • Finish the QEMU VM wizard

Now we have to edit the just created pfSense VM.

  • General settings: Set the symbol and category.
    General settings
  • HDD: Add a new HDB disk image by using the “Create” button to start the image creator wizard.
    • Use the defaults in the first two dialogs (“Binary and format” and “Qcow2 options”).
    • As file location use a descriptive filename, for example “pfSense.qcow2”. Set the disk size to 4.000 MiB.
    • Finish the Qemu image creator dialog.

    Initial settings - HDD

  • Network: Set the number of adapters to a reasonable value and the name format to “em{0}”.
    Network settings
  • Advanced settings: Disable “Use as a linked base VM”.
    Initial settings - Advanced

Finish the VM edit with “OK”, then exit the preferences with “OK”.

Installation

Create a new project for the installation and drag the newly created pfSense VM into it. Start the VM and open a console, the VM should boot.

Finally the installer will be launched. First it asks for the console type. For me “xterm” works best, but your milage may vary.

Then it asks a couple of questions, you can stick with the defaults:

  • Accept license
  • Choose to install
  • Continue with default keymap
  • Auto (UFS) partitioning
  • Entire Disk (ada1)
  • MBR - DOS Partitions
  • Finish partitioner and commit changes

Now pfSense gets installed. When that’s done you can do some manual configuration. But that’s not necessary, stick with the default “No”. After that confirm the reboot.

The VM shuts down. It then should reboot, but that doesn’t work in my installation. No matter if the reboot works or not, stop the VM at that stage.

The install VM has done its job, the disk image pfSense.qcow2 now contains a complete installation. You should now delete the install project.

Modify the install VM for regular use

Now it’s time to modify the install VM to a VM for regular use. In GNS3 open the Preferences / Qemu VMs and edit the pfSense VM:

  • HDD: Make the just installed disk image the primary disk, the install image is no longer needed.
    Overwrite the name of the HDA disk image by the HDB disk, then clear the HDB disk image name. Final settings - HDD
  • Advanced settings: enable “Use as a linked base VM”.
    Final settings - Advanced

Then finish the VM edit with “OK”, finally leave the preferences with “OK”.

The VM is now ready for regular use.