是否有检测现有 DHCP 服务器的官方方法?

par*_*y72 4 embedded dhcp-server

我正在计划在我们的产品上添加一项新功能以支持 LAN。由于安装将由相对非技术人员完成(用于船只),我认为自动检测我们是否需要提供 DHCP 服务器会很有用,这取决于网络上是否已经存在。是否有一种官方方法可以检查网络上是否已经有 DHCP 服务器(或多个)?

我们在产品上使用嵌入式 Linux。

Tom*_*Tom 10

fedora 似乎在存储库“dhcp_probe”中有以下包

描述:dhcp_probe 尝试在直接连接的以太网网络上发现 DHCP 和 BootP 服务器。网络管理员可以使用此工具来定位未经授权的 DHCP 和 BootP 服务器。


看起来man dhcp_probeDHCP 发现策略有一些很好的指针,可能值得一看,即使您决定自己制作数据包。

PACKET FLAVORS
没有一个请求数据包可能会引起每个可能的 BootP 和 DHCP 服务器的响应。某些服务器可能只响应 BootP 或 DHCP,但不能同时响应两者。某些服务器可能配置为仅响应一小组已知客户端。某些 DHCP 服务器只会向一小组已知客户端提供租约,但可能愿意(消极)响应请求更新不适当 IP 地址的租约的未知客户端。因此,dhcp_probe 实际上发送的不是一个,而是五个不同风格的请求数据包,希望能引起更多未知服务器的响应。

$ 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
Run Code Online (Sandbox Code Playgroud)


joe*_*rty 8

我们不要将“官方”一词与“普遍接受的方法”的概念混淆。

一种普遍接受的方法是发出 DHCPDiscover 数据包并寻找响应。