共用方式為


使用 DHCPUtil

 

上次修改主題的時間: 2012-10-17

本主題描述如何使用 DHCPUtil。

DHCPConfigScript.bat

DHCPUtil 不會自行設定 DHCP 伺服器。它會將該責任委派至指令碼,您可以變更該指令碼以符合組織需求。DHCPUtil 在計算各種選項的值後,會將這些值傳遞給指令碼,然後指令碼可採取適當的動作。

DHCPConfigScript.bat 就是這樣的指令碼,也是 DHCPUtil 隨附的指令碼。(位在與 DHCPUtil 相同的位置。) 這個指令碼會使用 netsh dhcp server 命令,以 Lync Server 部署所需的選項設定 DHCP 伺服器。

note附註:
除非您加以修改,否則除 Windows Server 作業系統隨附的 DHCP 伺服器功能以外,無法對任何 DHCP 伺服器使用 DHCPConfigScript.bat。

指令碼包含的內容如下:

netsh dhcp server delete optionvalue 120 
netsh dhcp server delete optiondef 120 
netsh dhcp server delete class MSUCClient 
if /i %1 EQU Cleanup goto :EOF 
netsh dhcp server add optiondef 120 UCSipServer Binary 0 comment="Sip Server Fqdn" 
netsh dhcp server set optionvalue 120 Binary %3 
netsh dhcp server add class MSUCClient "UC Vendor Class Id" "%2" 1 
netsh dhcp server add optiondef 1 UCIdentifier Binary 0 Vendor=MSUCClient comment="UC Identifier 
"netsh dhcp server set optionvalue 1 Binary vendor=MSUCClient %4 
netsh dhcp server add optiondef 2 URLScheme Binary 0 Vendor=MSUCClient comment="URL Scheme" 
netsh dhcp server set optionvalue 2 Binary vendor=MSUCClient %5 
netsh dhcp server add optiondef 3 WebServerFqdn Binary 0 Vendor=MSUCClient comment="Web Server Fqdn" 
netsh dhcp server set optionvalue 3 Binary vendor=MSUCClient %6 
if nt %7 == NULL (netsh dhcp server add optiondef 4 WebServerPort Binary 0 Vendor=MSUCClient comment="Web Server Port") 
if not %7 == NULL (netsh dhcp server set optionvalue 4 Binary vendor=MSUCClient %7) 
netsh dhcp server add optiondef 5 CertProvRelPath Binary 0 Vendor=MSUCClient comment="Cert Prov Relative Path" 
netsh dhcp server set optionvalue 5 Binary vendor=MSUCClient %8 

前三個命令會清除 DHCP 伺服器,以便能夠正確設定各種選項的值。如果指令碼是在清除模式下執行,則不會採取進一步動作。否則,會建立選項 120 的定義並設為提供的值。

接下來,會建立廠商類別識別碼為 MS-UC-Client (%2 一定會有此值) 的廠商。然後,指令碼會設定選項 43 的子選項 (一次一個)。您會注意到,為廠商類別建立的子選項如下:

netsh dhcp server add optiondef 3 WebServerFqdn Binary 0 Vendor=MSUCClient comment="Web Server Fqdn"

如需 netsh dhcp 的詳細資料,請參閱<部署 Lync Phone Edition>、<設定 DHCP 選項以啟用 IP 電話登入>以及 MSDN Library (https://go.microsoft.com/fwlink/?linkid=205011&clcid=0x404)。

使用 DHCPUtil 設定 DHCP 伺服器

在命令提示字元下,執行:

DHCPUtil -SipServer <FQDN of the Sip Server> [-WebServer <FQDN of the web server> | 
-CertProvUrl <Url of the Certificate Provisioning Service>] [-RunConfigScript [<Path of the script>]]

只有最後一個參數 RunConfigScript 不是 DHCPConfigScript.bat 的一部分。這個參數會使 DHCPUtil 產生選項 120 和 43 的值,然後將值傳遞給設定指令碼。如果指定 RunConfigScript 時未指定任何路徑,則會執行 DHCPConfigScript.bat。如果指定了有效的檔案路徑,則會執行該檔案。這個檔案可以是指令碼或可執行檔。

下列參數會依此順序傳遞給指令碼:

  • 模式:可能的值是 Cleanup 和 Configure

  • 廠商類別識別碼的值

  • 選項 120 的值

  • 選項 43 之子選項 1 的值

  • 選項 43 之子選項 2 的值

  • 選項 43 之子選項 3 的值

  • 選項 43 之子選項 4 的值

  • 選項 43 之子選項 5 的值

系統管理員可以使用本主題中的內容來撰寫自訂指令碼。例如,若要設定 DHCP 伺服器,需要在 DHCP 伺服器上執行下列命令:

DHCPUtil.exe -SipServer sip.contoso.com -WebServer web.contoso.com -RunConfigScript

這會以適當的參數叫用 DHCPConfigScript.bat,該指令碼接下來會叫用不同的 netsh dhcp server 命令。

您可能也希望編輯 DHCPConfigScript.bat (或撰寫不同的指令碼),以便它能在遠端 DHCP 伺服器上執行 netsh 命令,因而不需要在 DHCP 伺服器自行執行 DHCPUtil。

測試 DHCP 伺服器設定

DHCPUtil 也可用於測試 DHCP 伺服器上的設定。在此情況下,DHCPUtil 會送出 DHCP 封包,如同 Lync Server 用戶端會做的動作,然後剖析收到的封包。如果收到適當的回應,則擷取的值會顯示如下:

DHCPUtil -EmulateClient

請注意,這可能需要在防火牆中啟用適當的排除,且一般而言,在 DHCP 伺服器上執行時將無法運作。它應該在要測試設定之 DHCP 伺服器所服務的電腦上執行。

若要啟用排除,請從系統管理員命令提示字元執行下列命令:

netsh advfirewall firewall add rule name="DHCPClientIn"  dir=in action=allow localport=68 protocol=udp
netsh advfirewall firewall add rule name="DHCPClientOut"  dir=out action=allow localport=68 protocol=udp

完成後,請執行下列命令 (從提升權限的命令提示字元) 以移除排除:

netsh advfirewall firewall delete rule name="DHCPClientIn"
netsh advfirewall firewall delete rule name="DHCPClientOut"

Output: Starting Discovery
Sending Packet (Size: 280, Network Adapter: 192.168.0.244, Attempt Type: Broadcast only)
--Begin Packet--
DHCP: INFORM (xid=D2FFB17A)
DHCP: Op Code (op) = 1
DHCP: Hardware Type (htype) = 6
DHCP: Hops (hops) = 0
DHCP: Transaction ID (xid) = 3539972474
DHCP: Seconds (secs) = 0
DHCP: Flags (flags) = 0000
DHCP: Client IP Address (ciaddr) = 192.168.0.244
DHCP: Your IP Address (yiaddr) = 0.0.0.0
DHCP: Server IP Address (siaddr) = 0.0.0.0
DHCP: Relay IP Address (giaddr) = 0.0.0.0
DHCP: Client HW Address (chaddr) = 122222222222
DHCP: Server Host Name (sname) = 
DHCP: Boot File Name (file) = 
DHCP: Magic Cookie = 99.130.83.99
DHCP: Option Field
DHCP: DHCP MESSAGE TYPE( 53) = (Length: 1) DHCP INFORM
DHCP: Server Identifier( 54) = (Length: 0) 0.0.0.0
DHCP: Client Identifier( 61) = (Length: 7) """"" (01122222222222)
DHCP: SIP Server( 120) = (Length: 0) enc:0 ()
DHCP: Host Name( 12) = (Length: 6) Client
DHCP: Vendor Identifier( 60) = (Length: 12) MS-UC-Client
DHCP: Param Req List( 55) = (Length: 2) 120 43
DHCP: Vendor Info( 43) = (Length: 0) ()
DHCP: End of this option field
--End Packet--
Received Packet
Sender:192.168.0.238:67, Size:365
--Begin Packet--
DHCP: ACK (xid=D2FFB17A)
DHCP: Op Code (op) = 1
DHCP: Hardware Type (htype) = 6
DHCP: Hops (hops) = 0
DHCP: Transaction ID (xid) = 3539972474
DHCP: Seconds (secs) = 0
DHCP: Flags (flags) = 0000
DHCP: Client IP Address (ciaddr) = 192.168.0.244
DHCP: Your IP Address (yiaddr) = 0.0.0.0
DHCP: Server IP Address (siaddr) = 0.0.0.0
DHCP: Relay IP Address (giaddr) = 0.0.0.0
DHCP: Client HW Address (chaddr) = 122222222222
DHCP: Server Host Name (sname) = 
DHCP: Boot File Name (file) = 
DHCP: Magic Cookie = 99.130.83.99
DHCP: Option Field
DHCP: DHCP MESSAGE TYPE( 53) = (Length: 1) DHCP ACK
DHCP: Server Identifier( 54) = (Length: 4) 192.168.0.238
DHCP: Client Identifier( 61) = (Length: 0) ()
DHCP: SIP Server( 120) = (Length: 18) enc:0 sip.contoso.com 
(0003736970076578616D706C6503636F6D00)
DHCP: Host Name( 12) = (Length: 0) 
DHCP: Vendor Identifier( 60) = (Length: 0) 
DHCP: Param Req List( 55) = (Length: 0) 0 0
DHCP: Vendor Info( 43) = (Length: 87) MS-UC-
Clienthttps web.contoso.com
443/CertProv/CertProvisioningService.svcÜ NAP 
(010C4D532D55432D436C69656E7402056874747073030F7765622E6578616D706C652E636F6D040334343305252F4365727450726F762F4365727450726F766973696F6E696E67536572766963652E737663DC034E4150)
DHCP: End of this option field
--End Packet--
Result: Success
DHCP Server : 192.168.0.238
Sip Server : sip.contoso.com
CertProv Url : https://web.contoso.com:443/CertProv/CertProvisioningService.svc

有成功結果時,輸出中會顯示回應的 DHCP 伺服器、SIP 伺服器的值,以及憑證佈建服務 URL。

手動設定 DHCP 伺服器

取得各種選項的值 (使用 DHCPUtil 所產生) 之後,您需要使用 netsh dhcp server 命令,手動執行指令碼所執行的相同工作。

建立選項 120 的定義

  1. 開啟 DHCP 管理主控台。

  2. 移至適當的網域。

  3. 以滑鼠右鍵按一下 [IPv4]。

  4. 按一下 [設定預先定義的選項],開啟 [預先定義的選項和值] 對話方塊。

  5. 按一下 [新增],開啟 [選項類型] 對話方塊。

  6. 請執行下列步驟:

    • [名稱] 中,輸入 SIP 伺服器名稱。

    • [資料類型] 中,按一下 [二進位]

    • [代碼] 中,輸入 [120]

    • [描述] 中,輸入 [SIP 伺服器清單]

  7. 按一下 [確定] 以接受並關閉對話方塊。

預先定義的標準選項

設定選項 120 的值

  1. 在導覽樹狀目錄中的 [IPv4] 下方,按一下 [伺服器選項]

  2. 以滑鼠右鍵按一下 [伺服器選項],並按一下 [設定選項] 以開啟 [伺服器選項] 對話方塊。

  3. 選取 [120 Sip 伺服器] 核取方塊。這可讓您編輯 [資料輸入] 方塊中的值。

  4. 仔細輸入 DHCPUtil 所產生的值。

  5. 按一下 [確定] 以接受並關閉對話方塊。

伺服器選項

建立具有值 MS-UC-Client 的新廠商類別

  1. 再次以滑鼠右鍵按一下 [IPv4],並按一下 [定義廠商類別...] 以開啟 [DHCP 廠商類別] 對話方塊。

  2. 按一下 [新增],開啟 [新增類別] 對話方塊。

  3. 請執行下列步驟:

    • [顯示名稱] 中,輸入 [MSUCClient]

    • [描述] 中,輸入 [UC 廠商類別識別碼]

    • [ASCII] 下,按一下 [MS-UC-Client]

  4. 按一下 [確定] 以接受並關閉對話方塊。

新增類別

為上一個程序中所建立的廠商類別,建立選項 43 之每個子選項的定義

  1. 以滑鼠右鍵按一下 [IPv4],並按一下 [設定預先定義的選項],開啟 [預先定義的選項和值] 對話方塊。

  2. [選項類別] 中,按一下 [MSUCClient]

  3. 按一下 [新增],開啟 [選項類型] 對話方塊。

  4. 請執行下列步驟:(下列範例只適用於子選項 1)

    • [名稱] 中,輸入 [UCIdentifier]

    • [資料類型] 中,按一下 [二進位]。(這適用於所有五個子選項)。

    • [代碼] 中,按一下 [1] (其他子選項將會有對應的代碼,例如 2、3、4 或 5)。

    • [描述] 中,輸入 [UC 識別碼]

  5. 按一下 [確定] 以接受並關閉對話方塊。

  6. 針對所有五個子選項重複此程序。

選項類型

設定每個子選項的值

  1. [IPv4] 下,按一下 [伺服器選項]

  2. 以滑鼠右鍵按一下 [伺服器選項],並按一下 [設定選項],開啟 [伺服器選項] 對話方塊。

  3. 按一下 [進階] 索引標籤。

  4. [廠商類別] 方塊中,按一下 [MSUCClient]

  5. 核取每個子選項,並填入適當的值。

  6. 按一下 [確定] 以接受值並關閉對話方塊。

伺服器選項

現在已完成 DHCP 伺服器的手動設定。您可以使用 DHCPUtil –EmulateClient 測試設定。

從 DHCP 伺服器清除 Lync Server 相關設定

使用 DHCPUtil 命令 DHCPUtil –CleanDHCPConfig,從 DHCP 伺服器清除 Lync Server 設定資訊。

這個指令應該在 DHCP 伺服器上執行,且要求 DHCPConfigScript.bat 必須位在與 DHCPUtil 相同的目錄中。如同 RunConfigScript 的情況,系統管理員可以修改 DHCPConfigScript.bat,以便發出 netsh 命令至遠端 DHCP 伺服器。如此就不需要在 DHCP 伺服器上執行 DHCPUtil。

若要手動清除設定,可以使用 DHCP 伺服器管理主控台。需要有選項 120 的值,以及選項 43 的新廠商類別和各種子選項 (對應至廠商 MS-UC-Client),以清除設定。

啟用 Lync Server DHCP 伺服器

例如,在啟動載入期間,您在分公司可使用 Lync Server、DHCP 伺服器,來提供 DHCP 選項 43 與 120 給電話,因分公司的本機 DHCP 伺服器可能無法提供這些選項。建議您不要在資料中心使用 Lync Server DHCP 伺服器,因其必須手動設定。

請注意,Lync Server、DHCP 伺服器不會參與 IP 擷取程序,且能與您組織中的其他 DHCP 伺服器一起使用。

若要在單一登錄器上啟用 Lync Server、DHCP 伺服器,請執行下列命令:

note附註:
如果您在 Lync Server 啟用 DHCP 伺服器,而其所在的子網路與執行 Lync Phone Edition 的裝置不同,則您可能需要設定合適的 BOOTP 轉接代理,以將 DHCP 封包轉送到 Lync Server DHCP 伺服器。如需執行此動作的詳細資訊,請參閱下一節。  
Set-CSRegistrarConfiguration -Identity <Service Identity of the Registrar> -EnableDHCPServer $true

如果這個登錄器的服務層級登錄器設定不存在,則一併執行此 Cmdlet:

New-CSRegistrarConfiguration -Identity <Service Identity of the Registrar> -EnableDHCPServer $true
note附註:
若要停用 DHCP 伺服器,請再次使用 Set-CsRegistrarConfigurationcmdlet,並將 EnableDHCPServer 的值設定為 $false。

設定 Microsoft BOOT 轉接代理

如需詳細資訊,請參閱<設定 DHCP 轉接代理>,網址為 https://go.microsoft.com/fwlink/?linkid=205013&clcid=0x404

TechNet Library 中的下列兩個頁面特別實用:

確認 [開機閾值] 和 [躍點數目閾值] 都已正確設定,否則轉接代理會捨棄封包。

Lync Server 用戶端所傳送的封包已將 secs 參數 (用戶端開始探索程序後的累計秒數;如需詳細資訊,請參閱 RFC 2131) 設為 0,因此 DHCP 轉接代理中的 [開機閾值] 必須設為 0。