我有一些嵌入式网络设备,允许我指定它们是否使用 DHCP。不幸的是,我们有些客户端的网络中 DNS 服务器不太好,导致这些设备出现路由问题。
我的解决方案是覆盖 DHCP 提供的 DNS 服务器并指定第三方 DNS(OpenDNS 或 Google Public DNS)。不幸的是,当设备使用 DHCP 提供的动态 IP 地址时,它会忽略指定的客户端 DNS 地址。我可以在 Windows 机器上毫无问题地执行此操作。
忽略客户端为 DHCP 提供的动态 IP 地址指定的 DNS 是否违反规范?我正在尝试确定这些自定义设备上的固件制造商是否因忽略指定的 DNS 而存在问题。
答案1
不,没有标准指定此行为。DHCP 标准指定了一种向客户端提供 DNS 服务器列表的机制,但没有指定客户端应该如何处理该列表。DNS 标准指定了一种与服务器通信的协议(以及查找权威服务器的协议),但没有指定选择默认服务器的协议。我认为 POSIX 也没有指定如何选择默认服务器(您不仅可以从 DHCP 获得本地 DNS 配置和服务器,还可以从不同的 DHCP 连接(包括 VPN 连接以及 PPP 等)获得不同的 DNS 服务器列表),即使 POSIX 有,也不要求所有设备都支持 POSIX。
所以听起来您需要联系制造商并提出功能请求,而不是错误报告。
答案2
您是否可以控制 DHCP 服务器?是否可以通过某种 MAC 前缀识别这些设备并为其提供特定的 DNS 设置?我知道 ISC-DHCPD 具有一项功能,您可以借此识别设备并对其进行不同的处理(即 IP 范围、DHCP 选项等)。
dhcpd.conf 文件中的一个简单示例可能如下所示:
class "embedded" {
match if substring(hardware,1,3) = XX:XX:XX;
}
pool {
allow members of "embedded";
... other options here ...
}
这将允许您使用不同的 DNS 服务器指定这些单元,而无需获取固件/软件修复。我不知道 Microsoft 的 DHCP 服务器是否具有任何类似的功能(如果您正在使用的话),或者您是否可以以这种身份访问 DHCP 服务器,但类似的东西可能是一种选择。