使用 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 服务器,以便正确设置各个选项的值。如果脚本以 Cleanup 模式运行,则不需要采取进一步的操作。否则,会为选项 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 库(网址为 https://go.microsoft.com/fwlink/?linkid=205011&clcid=0x804)。

使用 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。如果指定了有效的文件路径,则运行该文件。此文件可以是脚本,也可以是可执行文件。

按此顺序将以下参数传递给脚本:

  • Mode:可能的值为 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 命令,这样就无需在 DHCPU 服务器本身上运行 DHCPUtil。

测试 DHCP 服务器配置

DHCPUtil 还可用于测试 DHCP 服务器上的配置。在本方案中,DHCPUtil 会发送 DHCP 数据包(如同 Lync Server 客户端那样),然后解析收到的数据包。如果收到适当响应,则显示如下检索到的值:

DHCPUtil -EmulateClient

请注意,这可能需要在防火墙中进行相应的排除,而且通常如果 DHCPUtil 在 DHCP 服务器上运行,则此功能不起作用。DHCPUtil 应运行在将要测试其配置的 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 供应商类 ID”。

    • 在“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 服务器可能无法提供这些选项的分支机构中)为电话提供 DHCP 选项 43 和 120。不建议将 Lync Server DHCP 服务器用于数据中心,应对此进行手动配置。

请注意 Lync Server DHCP 服务器不参与 IP 获取过程,并且可与组织中的其他 DHCP 服务器一起使用。

要在单个注册器上启用 Lync Server DHCP 服务器,请运行以下命令:

note注意:
如果在 Lync Server 上启用与运行 Lync Phone Edition 的设备不在同一子网中的 DHCP 服务器,则可能需要配置相应的 BOOTP 中继代理才能将 DHCP 数据包转发到Lync Server DHCP Server。有关如何执行此操作的详细信息,请参阅下一节。
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=0x804

TechNet 库中的以下两个页面尤为有用:

确保正确配置“启动阈值”和“跃点计数阈值”;否则,中继代理将丢弃数据包。

Lync Server 客户端发送的数据包将 secs 参数(客户端启动发现过程以来经过的秒数;有关详细信息,请参阅 RFC 2131)设置为 0,因此 DHCP 中继代理中的“启动阈值”也必须设置为 0。