某些 DHCP 客户端在启动时不能可靠地公开操作系统信息。如上所述,有一些与这些技术相关的知识产权;例如,Infoblox 和 Cisco ISE 可以根据他们看到的 dhcp 数据包构建客户端操作系统配置文件。实际上,Cisco ISE 包括一些相当复杂的操作系统分类算法,如果您可以向它发送多个 dhcp 的话。
或者,您可以在“已用秒数”字段中使用类似于Windows 端序错误的启发式方法,但依赖操作系统错误是处理操作系统检测的一种糟糕方式。
如果您确实必须在没有专用供应商设备的情况下检测操作系统,只需发出 IP 地址,并在发送 DHCP Ack 后使用 NMAP 扫描主机。使用 HTTP 标头不如nmap可靠,因为任何人都可以根据需要更改 UserAgent 字符串。 nmap在操作系统检测方面不是 100% 可靠的,但是如果您必须为所有事情选择一种方法,它与您会发现的一样好。
我会将此作为服务器上的可配置选项,因为有些人可能不喜欢每个 DHCP 主机上的默认nmap扫描。
针对 Windows7 的nmap操作系统扫描示例:
[mpenning@myhost ~]$ sudo nmap -O 10.1.1.1
Starting Nmap 5.51 ( http://nmap.org ) at 2013-08-24 16:20 CDT
Nmap scan report for 10.1.1.1
Host is up (0.00078s latency).
Not shown: 985 closed ports
PORT STATE SERVICE
135/tcp open msrpc
139/tcp open netbios-ssn
445/tcp open microsoft-ds
Device type: general purpose
Running: Microsoft Windows Vista|2008|7
OS details: Microsoft Windows Vista SP0 - SP2, Server 2008, or Windows 7 Ultimate
Network Distance: 5 hops
OS detection performed. Please report any incorrect results at http://nmap.org/submit/ .
Nmap done: 1 IP address (1 host up) scanned in 5.25 seconds
[mpenning@myhost ~]$