DHCP 伺服器必須將 TFTP 或 HTTP 伺服器的位址以及初始開機載入器的檔案名傳送至 ESXi 主機。

目標機器首次開機時,會在網路中廣播封包,要求取得自行開機所需的資訊。DHCP 伺服器會進行回應。DHCP 伺服器必須能夠判斷目標機器是否獲准開機,還有初始開機載入器二進位檔案的位置。對於 PXE 開機,位置是 TFTP 伺服器上的檔案。對於 UEFI HTTP 開機,位置是 URL。

注意: 如果網路中已經有一個 DHCP 伺服器,請勿再設定一個 DHCP 伺服器。如果有多個 DHCP 伺服器回應 DHCP 要求,機器可能會取得錯誤或存在衝突的 IP 位址,或者可能無法接收正確的開機資訊。在設定 DHCP 伺服器之前,請與網路管理員連絡。如需設定 DHCP 的支援,請與 DHCP 伺服器廠商連絡。

有許多 DHCP 伺服器可供使用。下列範例適用於 ISC DHCP 伺服器。如果使用適用於 Microsoft Windows 的 DHCP 版本,請參閱 DHCP 伺服器說明文件來判定如何將 next-serverfilename 引數傳遞到目標機器。

使用具有 IPv4 的 PXE 和 TFTP 進行開機的範例

此範例顯示如何將 ISC DHCP 伺服器設定為使用 IPv4 位址為 xxx.xxx.xxx.xxx 的 TFTP 伺服器對 ESXi 進行 PXE 開機。

#
# ISC DHCP server configuration file snippet.  This is not a complete
# configuration file; see the ISC server documentation for details on
# how to configure the DHCP server.
#
allow booting;
allow bootp;
option client-system-arch code 93 = unsigned integer 16;
class "pxeclients" {
   match if substring(option vendor-class-identifier, 0, 9) = "PXEClient";
   next-server xxx.xxx.xxx.xxx;
   if option client-system-arch = 00:07 or option client-system-arch = 00:09 {
      filename = "mboot.efi";
   } else {
      filename = "pxelinux.0";
   }
}

在機器嘗試進行 PXE 開機時,DHCP 伺服器會提供 IP 位址和 TFTP 伺服器上 pxelinux.0mboot.efi 二進位檔案的位置。

使用具有 IPv6 的 PXE 和 TFTP 進行開機的範例

此範例顯示如何將 ISC DHCPv6 伺服器設定為使用 IPv6 位址為 xxxx:xxxx:xxxx:xxxx::xxxx 的 TFTP 伺服器對 ESXi 進行 PXE 開機。

#
# ISC DHCPv6 server configuration file snippet.  This is not a complete
# configuration file; see the ISC server documentation for details on
# how to configure the DHCP server.
#
allow booting;
allow bootp;
option dhcp6.bootfile-url code 59 = string;
option dhcp6.bootfile-url "tftp://[xxxx:xxxx:xxxx:xxxx::xxxx]/mboot.efi";

在機器嘗試進行 PXE 開機時,DHCP 伺服器會提供 IP 位址和 TFTP 伺服器上 mboot.efi 二進位檔案的位置。

使用具有 IPv4 的 iPXE 和 HTTP 進行開機的範例

此範例顯示如何將 ISC DHCP 伺服器設定為從 IPv4 位址為 xxx.xxx.xxx.xxx 的 TFTP 伺服器載入 iPXE 以將 ESXi 開機。

#
# ISC DHCP server configuration file snippet.  This is not a complete
# configuration file; see the ISC server documentation for details on
# how to configure the DHCP server.
#
allow booting;
allow bootp;
option client-system-arch code 93 = unsigned integer 16;
class "pxeclients" {
   match if substring(option vendor-class-identifier, 0, 9) = "PXEClient";
   next-server xxx.xxx.xxx.xxx;
   if option client-system-arch = 00:07 or option client-system-arch = 00:09 {
      if exists user-class and option user-class = "iPXE" {
         # Instruct iPXE to load mboot.efi as secondary bootloader
         filename = "mboot.efi";
      } else {
         # Load the snponly.efi configuration of iPXE as initial bootloader
         filename = "snponly.efi";
      }
   } else {
      if exists user-class and option user-class = "iPXE" {
         # Instruct iPXE to load pxelinux as secondary bootloader
         filename = "pxelinux.0";
      } else {
         # Load the undionly configuration of iPXE as initial bootloader
         filename = "undionly.kpxe";
   }
}

在機器嘗試進行 PXE 開機時,DHCP 伺服器會提供 IP 位址和 TFTP 伺服器上 undionly.kpxesnponly.efi 二進位檔案的位置。在舊版 BIOS 案例中,iPXE 接著會向 DHCP 伺服器詢問下一個要載入的檔案,而這次伺服器會傳回 pxelinux.0 作為檔案名稱。在 UEFI 案例中,iPXE 接著會向 DHCP 伺服器詢問下一個要載入的檔案,而這次伺服器會傳回 mboot.efi 做為檔案名稱。在這兩種情況下,iPXE 是常駐的,且系統具有 HTTP 功能。因此,系統可以從 HTTP 伺服器載入其他檔案。

使用具有 IPv6 的 iPXE 和 HTTP 進行開機的範例

此範例顯示如何將 ISC DHCPv6 伺服器設定為從 IPv6 位址為 xxxx:xxxx:xxxx:xxxx::xxxx 的 TFTP 伺服器載入 iPXE 以將 ESXi 開機。

#
# ISC DHCPv6 server configuration file snippet.  This is not a complete
# configuration file; see the ISC server documentation for details on
# how to configure the DHCP server.
#
allow booting;
allow bootp;

option dhcp6.bootfile-url code 59 = string;
if exists user-class and option user-class = "iPXE" {
   # Instruct iPXE to load mboot.efi as secondary bootloader
   option dhcp6.bootfile-url "tftp://[xxxx:xxxx:xxxx:xxxx::xxxx]/mboot.efi";
} else {
   # Load the snponly.efi configuration of iPXE as initial bootloader
   option dhcp6.bootfile-url "tftp://[xxxx:xxxx:xxxx:xxxx::xxxx]/snponly.efi";
}

在機器嘗試進行 PXE 開機時,DHCP 伺服器會提供 IP 位址和 TFTP 伺服器上 snponly.efi (iPXE) 二進位檔案的位置。iPXE 接著會向 DHCP 伺服器詢問下一個要載入的檔案,而這次伺服器會傳回 mboot.efi 做為檔案名稱。iPXE 是常駐的,且系統具有 HTTP 功能。因此,系統可以從 HTTP 伺服器載入其他檔案。

使用具有 IPv4 的 UEFI HTTP 進行開機的範例

此範例顯示如何將 ISC DHCP 伺服器設定為從 Web 伺服器 www.example.com 使用 IPv4 上的原生 UEFI HTTP 以將 ESXi 開機。

#
# ISC DHCP server configuration file snippet.  This is not a complete
# configuration file; see the ISC server documentation for details on
# how to configure the DHCP server.
#
allow booting;
allow bootp;
option client-system-arch code 93 = unsigned integer 16;
class "httpclients" {
   match if substring(option vendor-class-identifier, 0, 10) = "HTTPClient";
   option vendor-class-identifier "HTTPClient";

   if option client-system-arch = 00:10 {
      # x86_64 UEFI HTTP client
      filename = http://www.example.com/esxi/mboot.efi;
   }
}

使用具有 IPv6 的 UEFI HTTP 進行開機的範例

此範例顯示如何將 ISC DHCPv6 伺服器設定為從 Web 伺服器 www.example.com 使用 IPv6 上的原生 UEFI HTTP 以將 ESXi 開機。

#
# ISC DHCPv6 server configuration file snippet.  This is not a complete
# configuration file; see the ISC server documentation for details on
# how to configure the DHCP server.
#
allow booting;
allow bootp;

option dhcp6.bootfile-url code 59 = string;
option dhcp6.user-class code 15 = { integer 16, string };
option dhcp6.vendor-class code 16 = { integer 32, integer 16, string };

if option dhcp6.client-arch-type = 00:10 {
      # x86_64 HTTP clients
      option dhcp6.vendor-class 0 10 "HTTPClient";
      option dhcp6.bootfile-url "http://www.example.com/esxi/mboot.efi";
}