我正在使用 isc-dhcp-server 版本 4.3(isc-dhcpd-4.3.5)作为本地IPv4LAN,我正在尝试将其配置为使用选项 dhcp-客户端标识符(DHCP 选项 61)主持人声明以识别 DHCP 客户端:
host client_host {
option dhcp-client-identifier xx:xx:xx:xx:xx:xx:xx:xx:xx:xx:xx:xx:xx:xx;
fixed-address 192.168.0.20;
}
不幸的是,DHCP 服务器似乎忽略了此选项(它在启动时不会抱怨此选项 - 因此该选项被识别并且语法正确)。当我使用硬件以太网与客户端的 MAC 地址相同,因此我确信 DHCP 服务器和 DHCP 客户端均已正确配置。
在dhcpd.conf 文件的官方 ISC DHCP 规范(这是针对版本 4.1 的,版本 4.4 的文档中也有同样的事情,所以我假设这对我正在使用的版本 4.3.5 也适用)我发现以下内容:
主持人声明通过匹配在 dhcp-client-identifier 中指定的选项与实际的 DHCP 或 BOOTP 客户端进行匹配。主持人声明与客户提供的声明一致,或者主持人声明或客户端没有提供 dhcp-client-identifier 选项,通过匹配硬件参数主持人客户端提供的网络硬件地址声明。BOOTP 客户端通常不提供dhcp 客户端标识符,因此所有可能使用 BOOTP 协议启动的客户端都必须使用硬件地址。
我也确信 DHCP 客户端确实发送了dhcp 客户端标识符在 DHCPv4 请求中——我使用 wireshark 查看了数据包内部,并验证了它符合RFC-4361。此外,根据同一 RFC,符合要求的 DHCP 服务器不能忽略此选项:
符合此规范的 DHCPv4 服务器必须使用“客户端标识符”选项来识别客户端(如果客户端发送)。
此时我假设 isc-dhcp-server 支持dhcp 客户端标识符选项(此假设基于 ISC DHCP 规范)。所引用的 ISC DHCP 规范还描述了一种符合 RFC 的行为(如上所述)。
所以我的问题是——我这里遗漏了什么?是否需要一些额外的 ISC DHCP 服务器配置?
或者也许 isc-dhcpd 不支持dhcp 客户端标识符IPv4 选项(同时它们的官方规范也是不正确的)?
编辑 也许我应该提一下,我还有一个DHCPv6与 DHCPv4 服务器并行运行。DHCPv6 服务器配置为使用相同的 DUID,并且在那里运行良好:
host client_host {
host-identifier option
dhcp6.client-id xx:xx:xx:xx:xx:xx:xx:xx:xx:xx:xx:xx:xx:xx;
fixed-address fdxx:xxxx:xxxx:xxxx::1;
}
我之所以想在 DHCPv4 配置中使用 DUID,是因为我希望 DHCP 服务器能够动态更新 IPv4 和 IPv6 网络的本地 DNS。DNS 服务器无法同时使用 MAC 地址(从 DHCPv4 服务器接收)和 DUID(从 DHCPv6 服务器接收)来识别特定客户端 - 它只接受一种形式的标识,而忽略另一种形式。
答案1
我在使用 ISC DHCP 4.4.1 时也遇到了类似的问题,我通过在 id 前面加上 0xff 来解决它,例如:
host TestHost {
option dhcp-client-identifier ff:xx:xx:xx:xx:xx:xx:xx:xx:xx:xx:xx:xx:xx:xx:xx:xx:xx:xx;
fixed-address 192.168.1.1;
}
线索就在请求的 tcpdump 输出中,其中表明客户端 ID 是hardware-type 255
。
答案2
我也遇到过这种情况,据我所知,ISC DHCP 4.1 至 4.4 不正式支持此选项。我也一直在尝试这个问题,因为我有一个从交换机到工作站的中继,这样我就可以监控和管理我的任何 VLAN。好消息是,ISC 正在移植到一个名为 Kea 的新 DHCP 软件包,该软件包旨在为您提供 IPv4 和 IPv6 中的更多选项。其中包括 DUID 支持,即代表两个 IP 版本的客户端进行的 DDNS 更新。预计 Windows 不支持。您询问的所有内容都在 Kea 中,并且一如既往;可以从 ISC 免费下载。
答案3
我也遇到过这个问题,但通过使用以下标识符解决了问题:主机 TestHost {选项 dhcp-client-identifier 00:xx:xx:xx:xx:xx:xx:xx:xx:xx:xx:xx:xx:xx:xx:xx:xx:xx;固定地址 192.168.1.1;} 如果收到的客户端 ID 是基于 ascii 的。对于 eth:将 01:xx:xx 全部放入十六进制中
答案4
我尝试使用 Mac 地址格式并且它运行良好 ISC-dhcp-4.2.2
服务器
主机 AAAA { 选项 dhcp-client-identifier 1:45:a0:24:ab:fb:9c;
<<< 1 表示硬件类型 0x01
,即 1:xx:xx:xx:xx:xx:xx
固定地址 192.168.140.23; }
客户
发送 dhcp-client-identifier 1:45:a0:24:ab:fb:9c;