Existe uma maneira oficial de detectar um servidor DHCP existente?

4

Estou planejando um novo recurso em nosso produto para oferecer suporte a uma LAN. Como a instalação será feita por pessoas relativamente não técnicas (é para barcos), eu estava pensando que seria útil detectar automaticamente se precisávamos fornecer um servidor DHCP ou não, dependendo de um deles já estar na rede. Existe uma maneira oficial de verificar se já existe um servidor DHCP (ou mais de um) na rede?

Usamos o Embedded Linux no produto.

    
por parsley72 30.04.2012 / 01:08

5 respostas

10

O fedora parece ter o seguinte pacote no repositório "dhcp_probe"

Description : dhcp_probe attempts to discover DHCP and BootP servers on a directly-attached Ethernet network. A network administrator can use this tool to locate unauthorized DHCP and BootP servers.

Parece que o man dhcp_probe tem alguns bons indicadores para a estratégia de descoberta de DHCP que podem valer a pena, mesmo que você tenha decidido criar os pacotes você mesmo.

PACKET FLAVORS
No single request packet is likely to provoke a response from every possible BootP and DHCP server. Some servers may only response to either BootP, or DHCP, but not both. Some servers may be configured to only respond to a small set of known clients. Some DHCP servers will only provide leases to a small set of known clients, but may be willing to respond (negatively) to unknown clients that request a lease renewal on an inappropriate IP address. Therefore, dhcp_probe actually sends not one, but five different flavor request packets, in the hopes of provoking responses from a wider variety of unknown servers.

$ rpm -qil dhcp_probe
Name        : dhcp_probe
Version     : 1.3.0
Release     : 8.fc15
Architecture: x86_64
Install Date: Mon 30 Apr 2012 12:20:46 AM BST
Group       : System Environment/Daemons
Size        : 133600
License     : GPLv2+ and MIT
Signature   : RSA/SHA256, Thu 28 Jul 2011 11:45:40 AM BST, Key ID 067f00b6a82ba4b7
Source RPM  : dhcp_probe-1.3.0-8.fc15.src.rpm
Build Date  : Tue 08 Feb 2011 01:58:57 PM GMT
Build Host  : x86-18.phx2.fedoraproject.org
Relocations : (not relocatable)
Packager    : Fedora Project
Vendor      : Fedora Project
URL         : http://www.net.princeton.edu/software/dhcp_probe/
Summary     : Tool for discover DHCP and BootP servers
Description :
dhcp_probe attempts to discover DHCP and BootP servers on a directly-attached
Ethernet network. A network administrator can use this tool to locate
unauthorized DHCP and BootP servers.
/etc/dhcp_probe.cf
/etc/rc.d/init.d/dhcp_probe
/usr/sbin/dhcp_probe
/usr/share/doc/dhcp_probe-1.3.0
/usr/share/doc/dhcp_probe-1.3.0/AUTHORS
/usr/share/doc/dhcp_probe-1.3.0/COPYING
/usr/share/doc/dhcp_probe-1.3.0/COPYING.GPL
/usr/share/doc/dhcp_probe-1.3.0/COPYING.LIB
/usr/share/doc/dhcp_probe-1.3.0/NEWS
/usr/share/doc/dhcp_probe-1.3.0/README
/usr/share/doc/dhcp_probe-1.3.0/TODO
/usr/share/man/man5/dhcp_probe.cf.5.gz
/usr/share/man/man8/dhcp_probe.8.gz
    
por 30.04.2012 / 01:21
8

Não vamos confundir a palavra "oficial" com o conceito de "método geralmente aceito".

Um método geralmente aceito seria emitir um pacote DHCPDiscover e procurar por uma resposta.

    
por 30.04.2012 / 01:17
4

Se você tiver o "dhcpcd" instalado, você pode usar o sinalizador "-T", para obter o modo "test", que apenas ecoa as configurações, mas na verdade não define o endereço IP e o gateway.

dhcpcd -T

e a saída:

emily ~ # dhcpcd -T wlan0
dhcpcd[6205]: version 5.2.12 starting
dhcpcd[6205]: wlan0: broadcasting for a lease
dhcpcd[6205]: wlan0: offered 192.168.2.194 from 192.168.2.1
interface=wlan0
pid=6205
reason=TEST
skip_hooks=lookup-hostname
new_broadcast_address=192.168.2.255
new_dhcp_lease_time=86400
new_dhcp_message_type=2
new_dhcp_server_identifier=192.168.2.1
new_domain_name_servers='192.168.2.1 193.189.160.13 193.189.160.23'
new_ip_address=192.168.2.194
new_network_number=192.168.2.0
new_routers=192.168.2.1
new_subnet_cidr=24
new_subnet_mask=255.255.255.0
    
por 30.04.2012 / 01:19
1

Você pode fazer o seu próprio DHCPDISCOVER para ver se alguma coisa está configurada para responder, mas se o servidor DHCP estiver bloqueado para o MACS específico, você pode não receber uma resposta.

Você poderia, em teoria, fazer uma varredura de porta UDP para UDP67 e UDP68, mas não tenho certeza se é uma ótima ideia, pois é mais provável que seja sinalizada como um comportamento possivelmente malicioso.

Em geral, produtos que não são equipamentos de rede não devem oferecer DHCP. Isso torna o trabalho de um administrador de sistemas mais difícil, especialmente se ele tiver uma tendência a ativar por padrão se perder suas configurações.

Isso é uma coisa que sempre me deixou louco com relação às antigas caixas de conversão Hawking Ethernet para USB "servidor de impressão".

    
por 30.04.2012 / 01:21
-1

Envie uma solicitação DHCP e aguarde para ver se você recebe uma oferta DHCP.

Método Cruder - configure uma NIC para que ele receba um endereço IP via DHCP e verifique após um período se recebe um endereço APIPA. Se receber um endereço APIPA, é improvável que exista um servidor DHCP conectado à rede em questão.

    
por 30.04.2012 / 01:18