I had to create a PXE boot environment for The Foreman to fully automate the provisioning of the VMs, I run a Fortigate 100D in my lab from which DHCP is served, as you may or may not know, the PXE boot options are served from DHCP.
Fortigate use the
next-server command to tell the client where to find the
next bootstrap server, or, the server that hosts the TFTP instance.
There is a DHCP option in the IANA list we are particularly interested in is:
Tag Name Data Length Meaning Reference 67 Bootfile-Name N Boot File Name [RFC2132]
We must set this option to tell the PXE client what filename it is looking for on the TFTP server.
Fortigate have a strange way of doing this particular config, at least in the latest version (5.2.2) which I am running.
I like to configure from the CLI but couldn’t help but noticing in the GUI that there was a new section added to the DHCP config:
It seems to allow some commonly-set DHCP options to be selected and specified with ASCII rather than hex:
Anyway, we can do all this through the CLI as well, firstly navigate to the DHCP server instance in question:
show system dhcp server 2
My output looks like this:
config system dhcp server edit 2 set dns-service default set ntp-service default set default-gateway 10.0.0.1 set netmask 255.255.254.0 set interface "LAN" config ip-range edit 1 set start-ip 10.0.0.2 set end-ip 10.0.1.199 next end set timezone-option default next end
To this we need to add the
filename directives to set the DHCP options for TFTP server and boot file name.
config system dhcp server edit 2 set next-server 10.0.2.15 set filename "pxelinux.0" next exit
This should now point your DHCP client (Intel E1000 on ESXi) to the TFTP server
10.0.2.15 which is for this example my Foreman server and tell it to pull the
pxelinux.0 file to begin the boot and install from network.