某些DHCP客户端在启动时无法可靠地公开OS信息。如上所述,这些技术有一些知识产权。例如,Infoblox和Cisco ISE可以根据他们看到的dhcp数据包构建客户端操作系统配置文件。实际上,如果您可以向其发送多个dhcp,则Cisco ISE包括一些相当复杂的OS分类算法。
另外,您可以在“秒数”字段中使用类似Windows endian bug的启发式方法,但是依靠OS Bug是处理OS检测的一种较差的方法。
如果确实必须在没有专用供应商设备的情况下检测操作系统,则只需发出IP地址,并在发送DHCP确认后使用NMAP扫描主机。使用HTTP标头不如nmap可靠,因为任何人都可以根据需要更改UserAgent字符串。 nmap在操作系统检测方面不是100%可靠的,但是,如果您必须为所有方法选择单一方法,它的性能将与您发现的一样好。
由于某些人可能不喜欢在每个DHCP主机上进行默认的nmap扫描,因此我会将其作为服务器上的可配置选项。
针对Windows7的示例nmap OS扫描:
[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 ~]$