DHCP特定供應商vci 選項的解釋和揭祕

(Microsoft) 供應商特定 DHCP 選項的解釋和揭祕 – Ingmar Verheij

DHCP 服務器可以向客戶端發送供應商特定選項以精細地控制配置。Microsoft 客戶端開箱即可接收Microsoft Windows 特定選項,而 Microsoft DHCP 服務器能夠發送僅由 Windows 客戶端接收的 DHCP 選項。

某些應用程序使用DHCP 選項的內容來接收配置數據,例如Microsoft LyncRES Workspace Manager。由於此應用程序僅在 Microsoft Windows 上運行,因此僅將此選項發送到 Windows 客戶端是合乎邏輯的。

在本文中,我將解釋此機制的工作原理以及如何從非 Microsoft DHCP 服務器(如 Linux 或 Lucent-Alcatel VitalQIP 設備)發送 Microsoft Windows 特定的 DHCP 選項。

供應商類別

DHCP 客戶端使用供應商類別來選擇性地識別供應商和配置供應商類別的示例有:

  • 適用於Cisco Unified IP 電話 7940G的“Cisco Systems, Inc. IP 電話 CP-7940”
  • “alcatel.noe.0”代表阿爾卡特 IP 觸摸電話
  • 適用於所有 Windows 2000 客戶端(及更高版本)的“MSFT 5.0”
  • 適用於所有 Windows 98 和 Me 客戶端的“MSFT 98”
  • “MSFT”適用於所有 Windows 98、Me 和 2000 客戶端

正如您所看到的,供應商類沒有命名約定規定,但實現似乎很清楚。微軟聲稱在三個供應商類別中,“MSFT 5.0”使用最多,因爲它推翻了“MSFT” ( Windows 98 的市場份額約爲0.01%)。

 

 
微軟DHCP服務器

Microsoft DHCP 服務器中,Windows Windows 計算機的供應商類別是內置的,其他類別可以通過協議棧(IPv4 或 IPv6)的上下文菜單並選擇“定義供應商類別”來添加

Microsoft DHCP 服務器 - 供應商類別 #1Microsoft DHCP 服務器 - 供應商類別 #2

 

Microsoft Windows DHCP 客戶端

在 DHCP 請求的第一階段(即DHCP Discover) 中,客戶端在 DHCP 選項 60(或供應商類別標識符)中添加預定義的供應商類別。

對於 Windows 2000 及更高版本(Vista / 7 / 8 / 等),發送“MSFT 5.0” 。由於這是一個廣播,所有 DHCP 服務器(以及其他嗅探數據包的計算機)都知道這是一個“Microsoft Windows 2000 客戶端”,並且只應發送該供應商的 DHCP 選項。

Wireshark - DHCP 發現 - 60

PS:您的 Microsoft Windows DHCP 客戶端中的默認供應商類別可以更改以混淆您的操作系統,但它不受支持 - 請參閱此鏈接

 

DHCP 優惠

DHCP 報價圖DHCP 服務器收到  DHCP Discover後,會  向 DHCP 客戶端  返回  包含 DHCP 租約的DHCP Offer 。租約包含 IP 信息(提供的 IP、中繼代理、DHCP 服務器)、MAC 地址、選項和其他一些內容。

 

Wireshark - DHCP 優惠

有趣的是,DHCP 服務器僅返回 DHCP 客戶端通過其DHCP Discover數據包中的選項 55 請求的選項。默認情況下爲:1、3、6、15、31、33、43、44、46、47、121 和 249(有關說明,請參閱IANA)。

Wireshark - DHCP 發現 - 55

我們感興趣的 DHCP 選項是選項 43 Vendor Specific Information。如上所述,DHCP 選項的值僅發送到具有特定供應商類別(示例中爲 MSFT 5.0)的客戶端。

 

DHCP 選項 43 – 供應商特定信息

RFC2132中描述了DHCP選項43 ,它解釋了該選項的數據包需要如何發送。結構非常簡單:第一個字節包含選項代碼43 [或十六進制的 0x2B],第二個字節包含包的長度,後跟一個或多個選項。

DHCP 選項 43 圖

每個選項 i n( i1、i2 等)具有相同的基本結構:第一個字節包含選項代碼第二個字節包含包的長度,後跟選項的值。

圖中的 DHCP 選項 43

 

RFC 中沒有(明確)記錄的是每個選項都以值爲 0 (0x00) 的字節(分隔符)結尾。這意味着每個選項 i n(i1、i2 等)實際上具有以下結構:

DHCP 選項 43 - 帶分隔符 - 圖表

 

例子

以下是供應商特定 DHCP 選項圖的示例

DHCP 選項 43 示例 - 帶分隔符

在示例中,我設置了三個供應商特定選項(供應商類別爲 MSFT 5.0,適用於 Windows 2000 客戶端)。

  • Microsoft DHCP 服務器 - 預定義選項和值帶有字符串值Ingmar 的選項 10
  • 帶有字符串值Verheij 的選項 11
  • 帶有字符串值的選項 12 www.ingmarverheij.com

默認情況下,只有選項 001、002 和 003 可用於Microsoft Windows 2000 選項,但可以通過協議棧(IPv4 或 IPv6)的上下文菜單並選擇“設置預定義選項”來擴展這些選項。

 

供應商特定選項的值是通過範圍或服務器選項設置的,在本例中,我已在範圍選項中配置它們。

Microsoft DHCP 服務器 - 範圍選項

 
DHCP 優惠

DHCP 客戶端接收包含指定供應商特定選項的DHCP Offer(使用DHCP 客戶端工具):

 

dhcptest - DHCP 提供 - 43 - 詳細

收到的 DHCP 提供包含多個選項,包括子網掩碼 [1]、域名 [15]、域名服務器 [6] 和供應商特定選項[43],就像示例圖中所示的那樣。你看不到的是包含代碼[ 43]和長度[43字節]的DHCP選項數據包。Wireshark確實顯示了此信息。

Wireshark - DHCP 優惠 - 43

在兩次捕獲中可以清楚地看到,每個選項(i1、i2 等)均以 0 (0x00) 字節結尾。儘管 RFC 中沒有提及這一點,但 DHCP 客戶端需要識別選項的結尾,從而允許客戶端分隔選項。

該值作爲十六進制字節值發送。可以在此處將十六進制值轉換爲字符串,也可以在此處將字符串轉換爲十六進制。

 
 
從註冊表中讀取 DHCP 選項

您還可以從註冊表中讀取客戶端收到的供應商特定 DHCP 選項:

讀取 Dhcp 選項 - 43

我編寫了一個 PowerShell 腳本,它從註冊表中讀取收到的 DHCP 選項,併爲您格式化它們。該腳本可以在這裏找到。

 

非 Microsoft DHCP 服務器

如果您必須配置默認情況下不提供 (Microsoft) 供應商特定 DHCP 選項的非 Microsoft DHCP 服務器,則此信息尤其有價值。

 

Linux DHCP 服務器

如果您有 Linux DHCP 服務器,可以在/etc/dhcp/dhcpd.conf配置文件中設置供應商特定選項。這些選項可以在子類中設置,您可以在子類中根據供應商類標識符進行過濾。您可以在下面找到一個示例配置,其中顯示了與前面示例中相同的供應商特定選項。

dhcpd配置文件

ddns 更新樣式無;

默認租用時間 600;
最大租用時間 7200;

選項域名“domain.local”;
選項域名服務器 192.168.0.1;
選項路由器 192.168.0.1;

權威性;
日誌設施本地7;

子網 192.168.0.0 網絡掩碼 255.255.255.0 {
  範圍 192.168.0.100 192.168.0.200;
}

類“MSFT 5.0”{
   如果選項供應商類別標識符 = "MSFT 5.0" 則匹配;
   選項供應商類別標識符“MSFT 5.0”;
   選項供應商封裝選項0a:07:49:6e:67:6d:61:72:00:56:65:72:68:65:69;6a:00:77:77:77:2e:69: 6e:67:6d:61:72:76:75:72:68:65:69:6a:2e:63:6f:6d:00;
}

類“MSFT 98”{
   如果選項供應商類別標識符 =“MSFT 98”則匹配;
   選項供應商類別標識符“MSFT 98”;
   選項供應商封裝選項0a:07:49:6e:67:6d:61:72:00:56:65:72:68:65:69;6a:00:77:77:77:2e:69: 6e:67:6d:61:72:76:75:72:68:65:69:6a:2e:63:6f:6d:00;
}

類“MSFT”{
   如果選項供應商類別標識符=“MSFT”則匹配;
   選項供應商類別標識符“MSFT;
   選項供應商封裝選項0a:07:49:6e:67:6d:61:72:00:56:65:72:68:65:69;6a:00:77:77:77:2e:69: 6e:67:6d:61:72:76:75:72:68:65:69:6a:2e:63:6f:6d:00;
}

 

 

阿爾卡特朗訊 VitalQIP

由於供應商特定信息被認爲是不透明的數據類型,因此用戶必須以原始格式定義選項數據。對於 VitalQIP 設備,可以通過兩種方式提供供應商特定信息:

VitalQIP - 供應商特定選項1. DHCP 選項模板 –可以在 DHCP 選項模板 - 修改頁面上提供供應商特定信息。在“活動選項”區域中,選擇“供應商特定信息”,然後在“值”字段中輸入信息。爲了將控制器 IP 地址包含在 DHCP 選項 43 消息中,請將信息作爲單個十六進制值輸入到 QIP 中的 DHCP 選項模板:[ip hex]。要使用 DHCP 選項 43 發送多個 IP 地址,請將信息作爲單個十六進制值輸入到 QIP 中的 DHCP 選項模板:[ip hex ip hex] 而不是 [ip hex]、[ip hex]。在這種情況下,中間的逗號會導致 DHCP 解析從 QIP 傳遞的字符串時出現問題。來源cisco.com

 



2. 用戶退出腳本– 在供應商特定的 DHCP 選項模板中設置佔位符,例如 [VENDOR-SPECIFIC-OPT1],它通過用戶退出腳本 ( 
qipdhcpuserexit )被值替換。用戶出口腳本讀取託管文件(可通過DNS > 託管文件訪問),其中包含 [塊引號] 中的十六進制值。例如:

[供應商特定-OPT1]=[0a07496e676d617200566572686569;6a007777772e696e676d61727675726865696a2e636f6d00]

 

 

創建字符串

創建供應商特定字符串閱讀本文後,您現在瞭解了供應商特定的 DHCP 選項如何工作以及如何爲非 Microsoft DHCP 服務器配置它們。我可以想象您不想手動創建選項字符串(我也不想),因此創建了一個小型 .NET 應用程序來爲您執行此操作。

用法很簡單:只需添加選項,指定(或不指定)分隔符,然後單擊“生成”

4.0 ice cream sandwich - How do I change my "Vendor Class ID"? - Android Enthusiasts Stack Exchange

[dhcp client] Tuning vendor-class-identifier - dhcp option 60 | Ubiquiti Community

[Solved] Changing DHCP vendor class with systemd-networkd / Networking, Server, and Protection / Arch Linux Forums

[ubuntu] DHCP Scope 43 [Archive] - Ubuntu Forums

[ubuntu] what is the default vendor class identifier ?

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章