Technical Overview
Last updated
Last updated
iPXE Anywhere is a network booting solution which makes use of the open source iPXE network boot program. For details on this Open Source Project visit http://ipxe.org/
2Pint Software has funded the implementation of several components in iPXE and is a driving force behind iPXE development. One these add-ons is the inclusion of a Microsoft BranchCache client into the iPXE software. This is now part of the iPXE software available to everybody. We like to think of it as our sacrifice to the PXE gods for all to use and enjoy.
At 2Pint Software we add the “Anywhere” part which consists of the following two components:
A Proxy DHCP/TFTP/HTTPS server called iPXE Anywhere 2PXE Server, the main PXE Server (this manual).
An optional Web Service component called iPXE Anywhere Web Service which adds multiple extra functionality and controls over your build sequences.
These “Anywhere” components make the iPXE Network boot loader sing and dance by enabling communication, configuration and reporting between the iPXE clients and the backend Server infrastructure such as Configuration Manager..
Figure 1 shows a Configuration Manager integrated menu from 2PXE, with 2 Deployments to the same Task Sequence. One set to Available (A) and one Required (R).
A machine PXE boot request is picked up by the network boot server. The server parses the request and sends the corresponding boot file (BIOS or EFI) to the client. This file is very small and is well suited to low bandwidth situations.
Once the iPXE Network Boot Program (NBP) is downloaded it contacts the 2PXE Server (over HTTPS) which then checks for any configured actions for that client to execute (Lack of action will cause the NBP to exit out and continue the boot order.). If any configured actions are detected the server will send back a corresponding script to the client. The client will then execute this script which, typically, involves loading a high level OS over HTTP. Thanks to the inbuilt BranchCache functionality, when the system is instructed to load the Windows PE boot image this can be downloaded rapidly from local BranchCache peers rather than being transferred over the WAN from a remote server.
iPXE is the leading open source network boot firmware. It provides a full PXE implementation enhanced with additional features such as:
Boot from a web server via HTTP
HTTP supports BranchCache V1 & V2
Boot from an iSCSI SAN
Boot from a Fiber Channel SAN via FCoE
Boot from an AoE SAN
Boot from a wireless network
Boot from a wide-area network
Boot from an Infiniband network
control the boot process with a script
You can use iPXE to replace the existing PXE ROM on your network card, or you can chain load into iPXE to obtain the features of iPXE without the need to re-flash.
iPXE is free, open-source software licensed under the GNU GPL (with some portions under GPL-compatible licenses), and is included in products from several network card manufacturers and OEMs.
If you are looking to use our PXE solution with BranchCache, but are not familiar with BranchCache, we recommend you read our BranchCache page before continuing with this document as it covers several key factors of BranchCache that might affect your design and setup.
http://2pintsoftware.com/microsoftbranchcache
This nifty (free!) toolkit enables BranchCache in the Windows Pre-Installation Environment (WinPE) and also for non-BranchCache enabled systems like the Windows Professional family. This is only needed for integrating BranchCache and BITS into WinPE. It is not required to make iPXE Anywhere function. It is however highly recommended as, by enabling BranchCache in a resource intensive process like OSD, more systems on the network will share the load, ensuring a fast and effortless deployment without hogging bandwidth and system resources from other computers or the network.
If you are just looking to use HTTP boot without BranchCache you can skip this section. For more information on how to generate these WinPE images please refer to the 2Pint OSD Toolkit documentation. https://2pintsoftware.com/products/osd-toolkit/
You can also add BranchCache to WinPE at a later stage depending on your testing and requirements.
iPXE Anywhere can obtain the appropriate boot actions from other SMTs by:
Configuring 2PXE PowerShell scripts to interact with the other system.
Configuring the iPXE Anywhere Web Service to talk to the other system directly.
For more information on this please contact support@2pintsoftware.com
The iPXE Anywhere solution consist of four major components:
Figure 3 iPXE Anywhere Main Components where the Web Service and Database are optional components.
This sections gives a little more background on the several major components that make up iPXE Anywhere.
The 2PXE Service is a proxyDHCP server that responds to the initial PXE request. It has built in proxyDHCP, TFTP and HTTP services. Don’t confuse the 2PXE web service with the iPXE Anywhere Web Service, they are different animals. The iPXE Anywhere Web Service is the big brother of the 2PXE web service. The 2PXE Service is typically your entry point to the PXE booting method as this is the Service that parses requests and hands out the iPXE network boot loader.
This is the core essence of iPXE Anywhere. A specially configured customized version of the open source iPXE solution tailored to work with the iPXE Anywhere server environment. Importantly, one of the components that is now enabled as a part of the default iPXE build is BranchCache. Having BranchCache enabled in an NBP enables you to load WinPE content from peer BranchCache systems that have that content in stored their local cache.
This extends multiple functionality into the boot process. With the iPXE Anywhere Web Service in place the Network Boot Program can be configured to talk to this service directly. The Service talks HTTP with the client and SQL to the SQL DB (optional – see following). It is used for ‘extended functionality’ such as BIOS updating, interacting with Microsoft MDT, creating custom iPXE menus etc. Please refer to the separate documentation for that component.
iPXE Anywhere SQL Database(s) (Optional)
This is a part of the iPXE Anywhere Web Service. This database stores info about PXE booted computers and their capabilities. Traffic to this database is relatively small so this database may be hosted on SQL Express if required. Also connected to the iPXE Anywhere Web Service Database is a SQL Reporting Services Instance which is used to generate the Reports which are included as part of the installation.
Unlike most network boot products, iPXE Anywhere uses a number of technologies which ensures that the boot process can be made 100% secure to protect any sensitive data.
Before allowing the network boot, a user can be authenticated against a central repository such as on premise Active Directory or Azure.
Credentials can be either sent as clear text protected by SSL certificates or, for non SSL capable servers, by using NTLM or IIS Digest Authentication. iPXE Anywhere supports NTLM authentication against Windows Authentication for Configuration Manager distribution points.
Using SSL ensures that there is no way unauthenticated users can access media containing username or passwords. Unlike most network booting systems, the password can be provided at actual boot time, before loading any large image, which frees up time while increasing security.
iPXE supports the HTTPS protocol, which allows you to encrypt all web server communication and to verify the server's identity. All HTTP traffic between iPXE boot loader and the 2PXE server is secured using SSL.
For maximum security there is the option to bind a public TSL certificate to iPXE.
The iPXE Boot Loader now supports Secure Boot, which is a feature of UEFI that only allows certain Operating Systems to be loaded.
Note: Due to how Hyper-V uses boot verification, Secure Boot has must be disabled on VM’s when using iPXE to build clients.
iPXE supports the use of third party certificates (i.e. other than iPXE or 2Pint Software certificates) Contact us at support@2pintsoftware for further setup information.