1. 程式人生 > >PXE服務和Cisco路由器上的DHCP配置

PXE服務和Cisco路由器上的DHCP配置

預啟動執行環境(Preboot eXecution Environment,PXE,也被稱為預執行環境)提供了一種使用網路介面(Network Interface)啟動計算機的機制,這種機制讓計算機的啟動可以不依賴本地資料儲存裝置(如硬碟)或本地已安裝的作業系統。

PXE及其協議概述

PXE當初是作為Intel的有線管理體系的一部分,Intel 和 Systemsoft於1999年9月20日公佈其規格(版本2.1)。通過使用像網際協議(IP)、使用者資料報協議(UDP)、動態主機設定協定(DHCP)、小型檔案傳輸協議(TFTP)等幾種網路協議和全域性唯一識別符號(GUID)、通用網路驅動介面(UNDI)、通用唯一識別碼(UUID)的概念並通過對客戶機(通過PXE自檢的電腦)韌體擴充套件預設的API來實現目的。

PXE 協議大致上結合了DHCP和TFTP,雖然都有在兩者上面有改進。DHCP用於查詢合適的啟動伺服器,TFTP用於下載初始載入程式和附加檔案。為了開始一個PXE自檢會話,PXE韌體廣播一個帶有明確的PXE選項DHCPDISCOVER包(擴充套件DHCPDISCOVER)到67/UDP埠(DHCP伺服器埠)。PXE選項是PXE韌體有PXE能力的鑑定,但是會被一般的DHCP服務忽略。當韌體受到從這樣的服務受到DHCPOFFER包時,它會通過要求其提供配置資訊來自我配置。

搭建PXE網路啟動的服務

當經常需要系統恢復或系統安裝時,搭建PXE網路啟動服務是一個不錯的選擇。如何搭建PXE網路服務,在這裡就不詳細贅述,具體參考:

實際上,PXE網路啟動服務就是DHCP伺服器給客戶系統分配IP地址以及客戶系統通過TFTP獲取伺服器上的映象檔案的過程。因此,建立好TFTP服務後,DHCP伺服器還要告知無盤啟動的系統TFTP伺服器的IP地址映象檔案的名稱

DHCP作為引導啟動協議bootp的升級版,仍然相容boop協議,而bootp協議在設計之初就是為了使無盤啟動的系統分配到ip並獲得tftp伺服器的映象檔案。bootp協議包的next-serverfilename欄位就是告知客戶系統TFTP映象服務的地址和映象名稱的過程。

Cisco路由器上PXE網路啟動的DHCP配置

當前小編的公網環境已經支援PXE網路啟動,只是小編的網路是一段使用了NAPT的內網,IP地址由Cisco路由器DHCP分配。因此,若要使用公網的PXE服務,需要在本地的DHCP伺服器上引導PXE服務的映象和地址。下面是Cisco路由器的相關配置:

ip dhcp pool vlan-name
network net-address netmask
bootfile filename
next-server tftp-address
default-router gateaway 

用wireshark抓DHCP Reply的包,就會發現next-server和bootfile相關欄位的內容。

Troubleshooting

使用PXE啟動時,發現有些裝置會出現這樣的錯誤:”PXE-E51 No DHCP or proxy DHCP offers were found or received” or “No proxy DHCP offers”,而使用筆記本連線在該裝置所在的埠下時,能夠正常啟動。 這是因為一些網絡卡直到 MAC 層軟體驅動被實際載入之後才會啟動鏈路,而交換裝置為了避免環路運行了STP協議,一個正常的交換介面從down到up要經過:Down,listening,learning,fowarding幾個狀態,一共耗時為30~50秒,從而決定此埠是blocking還是fowarding的,也是交換機的防止環路的機制。因此在dhcp過程中會出現超時現象。

解決這個問題的辦法是將連線host的交換機埠設定為portfast狀態,使得鏈路up時交換機埠直接進入forwarding狀態,從而避免超時。基本配置方法如下:

Sw1(config)#spanning-tree portfast default %(所有介面啟用)全域性下用

一般用在接入層的交換機上。

Sw1(config-if)#spanning-tree portfast %單獨啟用特定介面
Sw1(config-if)#spanning-tree portfast disable %(某個埠禁用,通常是連線另一臺交換機的埠)

關於portfast的詳細資訊參考如下連線: