Alguns clientes DHCP não divulgam com segurança as informações do SO na inicialização. Como foi mencionado acima, há alguma propriedade intelectual associada a essas técnicas; por exemplo, Infoblox e Cisco ISE podem criar perfis de SO do cliente com base nos pacotes dhcp que veem. Na verdade, o Cisco ISE inclui alguns algoritmos de classificação de SO bastante sofisticados, se você puder enviar mais do que dhcp para ele.
Como alternativa, você pode usar uma heurística como o bug do Windows no campo "segundos decorridos", mas confiar em um bug do SO é uma maneira ruim de lidar com a detecção do SO.
Se você realmente precisar detectar o sistema operacional sem um dispositivo de fornecedor dedicado, basta emitir um endereço IP e verificar o host com NMAP depois de enviar o DHCP Ack. O uso de cabeçalhos HTTP não é tão confiável quanto o nmap , porque qualquer um pode alterar a sequência de caracteres UserAgent, se desejar. O nmap não é 100% confiável na detecção do sistema operacional, mas é tão bom quanto você descobrirá se precisar escolher um método único para tudo.
Eu faria disso uma opção configurável no servidor, já que algumas pessoas podem não gostar de uma verificação nmap padrão em todos os hosts DHCP.
Exemplo de verificação do SO nmap no Windows7:
[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 ~]$