使用 DHCPUtil
上一次修改主题: 2012-10-17
本主题介绍如何使用 DHCPUtil。
DHCPConfigScript.bat
DHCPUtil 不会自己配置 DHCP 服务器。它会将该责任委派给一个可根据组织需要进行更改的脚本。DHCPUtil 在计算各个选项的值之后,会将这些值传递给一个脚本,随后该脚本会采取相应的操作。
DHCPConfigScript.bat 就是一个这样的脚本,而且是 DHCPUtil 附带的脚本。(它位于 DHCPUtil 所在的位置。)此脚本使用 netsh dhcp server 命令,该命令使用 Lync Server 部署所需的选项配置 DHCP 服务器。
![]() |
---|
除非进行相应的修改,否则不能针对 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 创建定义
打开 DHCP 管理控制台。
转到相应的域。
右键单击“IPv4”。
单击“设置预定义的选项”打开“预定义的选项和值”对话框。
单击“添加”打开“选项类型”对话框。
执行以下操作:
在“名称”中,键入 SIP 服务器名称。
在“数据类型”中,单击“二进制”。
在“代码”中,键入 120。
在“说明”中,键入“SIP 服务器列表”。
单击“确定”接受并关闭对话框。
设置选项 120 的值
在导航树中的“IPv4”下,单击“服务器选项”。
右键单击“服务器选项”,然后单击“配置选项”以打开“服务器选项”对话框。
选中“120 Sip 服务器”复选框。这样便可以在“数据输入”框中编辑值。
仔细输入 DHCPUtil 生成的值。
单击“确定”接受并关闭对话框。
创建值为 MS-UC-Client 的新供应商类
再次右键单击“IPv4”,然后单击“定义供应商类...”以打开“DHCP 供应商类”对话框。
单击“添加”打开“新建类”对话框。
执行以下操作:
在“显示名称”中,键入“MSUCClient”。
在“说明”中,键入“UC 供应商类 ID”。
在“ASCII”下,单击“MS-UC-Client”。
单击“确定”接受并关闭对话框。
针对在上一过程中创建的供应商类为选项 43 中的每个子选项创建定义
右键单击“IPv4”,然后单击“设置预定义的选项”打开“预定义的选项和值”对话框。
在“选项类”中,单击“MSUCClient”。
单击“添加”打开“选项类型”对话框。
执行以下操作:(以下示例仅适用于子选项 1)
在“名称”中,键入“UCIdentifier”。
在“数据类型”中,单击“二进制”。(适用于所有五个子选项。)
在“代码”中,单击“1”。(其他子选项将具有对应的代码,例如 2、3、4 或 5。)
在“说明”中,键入“UC 标识符”。
单击“确定”接受并关闭对话框。
对所有五个子选项重复此过程。
设置每个子选项的值
在**“IPv4”下,单击“服务器选项”**。
右键单击“服务器选项”,然后单击“配置选项”以打开“服务器选项”对话框。
单击**“高级”**选项卡。
在“供应商类”框中,单击“MSUCClient”。
检查每个子选项,然后填入相应的值。
单击“确定”接受这些值并关闭对话框。
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 服务器,请运行以下命令:
![]() |
---|
如果在 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
![]() |
---|
若要禁用 DHCP 服务器,请再次使用 Set-CsRegistrarConfigurationcmdlet,并将 EnableDHCPServer 的值设为 $false。 |
配置 Microsoft BOOT 中继代理
有关详细信息,请参阅“配置 DHCP 中继代理”,网址为 https://go.microsoft.com/fwlink/?linkid=205013&clcid=0x804。
TechNet 库中的以下两个页面尤为有用:
“配置全局 DHCP 中继代理属性”,网址为 https://go.microsoft.com/fwlink/?linkid=205015&clcid=0x804
“在路由器接口上启用 DHCP 中继代理”,网址为 https://go.microsoft.com/fwlink/?linkid=205016&clcid=0x804
确保正确配置“启动阈值”和“跃点计数阈值”;否则,中继代理将丢弃数据包。
Lync Server 客户端发送的数据包将 secs 参数(客户端启动发现过程以来经过的秒数;有关详细信息,请参阅 RFC 2131)设置为 0,因此 DHCP 中继代理中的“启动阈值”也必须设置为 0。