pfsense is a good option, but not the only one.
If you are using a soho (home router) that doesn’t support dhcp booting options, you can use / install a service on the FOG server called dnsmasq. This is a dhcp proxy service that will supply the boot information only to the pxe booting client.
Just install dnsmasq from your linux distro’s repository. Then edit / create a file called ltsp.conf in the /etc/dnsmasq.d directory. In that ltsp.conf file put in the following :
# Don't function as a DNS server:
# Log lots of extra information about DHCP transactions.
# Set the root directory for files available via FTP.
# The boot filename, Server name, Server Ip Address
# Disable re-use of the DHCP servername and filename fields as extra
# option space. That's to avoid confusing some old or broken DHCP clients.
# inspect the vendor class string and match the text to set the tag
# Set the boot file name based on the matching tag from the vendor class (above)
# PXE menu. The first part is the text displayed to the user. The second is the timeout, in seconds.
pxe-prompt="Booting FOG Client", 1
# The known types are x86PC, PC98, IA64_EFI, Alpha, Arc_x86,
# Intel_Lean_Client, IA32_EFI, BC_EFI, Xscale_EFI and X86-64_EFI
# This option is first and will be the default if there is no input from the user.
pxe-service=X86PC, "Boot to FOG", undionly.kpxe
pxe-service=X86-64_EFI, "Boot to FOG UEFI", ipxe.efi
pxe-service=BC_EFI, "Boot to FOG UEFI PXE-BC", ipxe.efi
Don’t forget to replace <fog_server_ip> in the above text with the IP address of your fog server. The tag appears many times.
If your distro has a config file in that directory, remove it and only place one config file (ltsp.conf) in that directory path.
One other point to check, make sure the version of dnsmasq installed is 2.76 or later. You can find out by using the following command: