Configure PXE Booting on pfSense

Nowadays is pretty uncommon to setup a workstation/laptop, and installing a Linux distro using a CD is even less frequent. Today we had to setup a workstation that we use to run some tests - we need a a bare metal server for these tests - and none of us had an USB stick, neither a DVD Writer :)

How to install an operating system in the era of cloud? Easily, with PXE and pfSense!

{% include blog/workflows/pxe-pfsense.html %}

{% include blog/figure.html img=page.img_cover alt=“How to configure pfSense as a PXE boot server” caption="" %}

{: #pxe}

What is PXE? How does boot from LAN actually works?

{% lipsum 4 %}

Configure the Workstation

This step is easy: simply configure the workstation to boot from LAN!

{: #setup-pfsense-dhcp-tftp}

Setup pfSense

pfSense is an open source firewall/router computer software distribution based on FreeBSD. It’s functionalities can be extended thanks to its plugin system

To use our pfSense box as a boot server, we need to

  • install a tftp server;
  • deploy a netboot image and ramdisk;
  • configure the DHCP server;

No worries, it is easier that it seems!

Install a tftp server

Open the pfSense admin dashboard and navigate to System -> Package Manager

In the Available packages menu, search tftp.

{% include blog/figure.html img=“pfsense_install_tftp.png” alt=“Install TFTP server package in pfSense” caption=“Search and intstall the TFTP package” %}

Next, refresh the page and enable the TFTP server: Select Service -> TFTP Server and check the Enable TFTP Service checkbox.

{: #deploy-netboot-image }

Upload a NetBoot image

We choosed to install Ubuntu 18.04. Find the URL where to download the netboot iso. In our case, the URL is http://archive.ubuntu.com/ubuntu/dists/bionic-updates/main/installer-amd64/current/images/netboot/ and the image name is netboot.tar.gz.

The image must be uploaded in pfSense. Download the tar acrhive and uncompress it locally. Now you have to copy the contents o the tar archive in the root of yout tftp server. A simple way is to SSH in the pfSense box and to download and extract the tar archive directly in the /tftpboot directory.

Configure the DHCP

Set in the DHCP options the TFTP server and the image to use to boot theservers. Select Services -> DHCP Server and scroll at the bottom of the page.

Set the following configurations:

  • TFTP Server AND Next server: the ip address of the pfSense box;
  • Default BIOS file name: the image youwant to use, pxelinux.0 in our case;
  • Enable the Enable network booting checkbox;

{: #done }

Conclusions

That’s it! Now boot your workstation, and install the operating system!