命令行程序测试DHCP服务


44

是否有一个简单的类似于ping的命令来测试DHCP服务是否正在网络上运行?...在Linux上

Answers:


10

即使您不使用Nagios监控服务器,也可以grep check_dhcp二进制文件或从源代码对其进行编译,然后使用该检查来测试DHCP服务器。例如

./check_dhcp -v -s <dhcp_server_address> -r <expected_ip_address> -m <mac_address_touse>

37

根据此答案,假设您已安装nmap(sudo apt install nmap):

sudo nmap --script broadcast-dhcp-discover

-e $interface如果您具有多个网络接口,请添加该选项。(例如:nmap --script broadcast-dhcp-discover -e eth0

样本输出:

Starting Nmap 7.01 ( https://nmap.org ) at 2017-09-27 17:40 CEST
Pre-scan script results:
| broadcast-dhcp-discover: 
|   Response 1 of 1: 
|     IP Offered: 192.168.81.94
|     DHCP Message Type: DHCPOFFER
|     Server Identifier: 192.168.81.2
|     IP Address Lease Time: 5m00s
|     Subnet Mask: 255.255.255.0
|     Router: 192.168.81.2
|     Domain Name Server: 192.168.81.2
|     Domain Name: example.lan
|     NTP Servers: 192.168.81.10, 192.168.81.2
|     NetBIOS Name Server: 192.168.81.10
|_    NetBIOS Node Type: 8
WARNING: No targets were specified, so 0 hosts scanned.
Nmap done: 0 IP addresses (0 hosts up) scanned in 0.66 seconds

或使用nmap v。6在另一个网络上的此输出:

Starting Nmap 6.00 ( http://nmap.org ) at 2017-09-27 17:42 CEST
Pre-scan script results:
| broadcast-dhcp-discover: 
|   IP Offered: 192.168.4.101
|   DHCP Message Type: DHCPOFFER
|   Server Identifier: 192.168.4.1
|   IP Address Lease Time: 7 days, 0:00:00
|   Subnet Mask: 255.255.255.0
|   Time Offset: 7200
|   Router: 192.168.4.1
|   Domain Name Server: 208.91.112.53, 208.91.112.52
|   Renewal Time Value: 3 days, 12:00:00
|_  Rebinding Time Value: 6 days, 3:00:00
WARNING: No targets were specified, so 0 hosts scanned.
Nmap done: 0 IP addresses (0 hosts up) scanned in 1.15 seconds

找不到我的DHCP服务器。-我的PC一定有问题...以太网有效,但事实并非如此。
Jasen

请注意,此脚本使用固定的MAC地址(DE:AD:CO:DE:CA:FE),因此如果您的DHCP服务器配置了白名单,则该脚本将不起作用。
鲍勃

@Bob:谢谢。很高兴知道
mivk

5

dhcpdump 非常适合在网络上嗅探和显示DHCP数据包。

例如

# dhcpdump -i eth0
---------------------------------------------------------------------------

  TIME: 2015-11-27 11:41:37.379
    IP: 0.0.0.0 (0:11:b9:5:0:b8) > 255.255.255.255 (ff:ff:ff:ff:ff:ff)
    OP: 1 (BOOTPREQUEST)
 HTYPE: 1 (Ethernet)
  HLEN: 6
  HOPS: 0
   XID: abce9327
  SECS: 0
 FLAGS: 0
CIADDR: 0.0.0.0
YIADDR: 0.0.0.0
SIADDR: 0.0.0.0
GIADDR: 0.0.0.0
CHADDR: 00:11:b9:05:00:b8:00:00:00:00:00:00:00:00:00:00
 SNAME: .
 FNAME: .
OPTION:  53 (  1) DHCP message type         1 (DHCPDISCOVER)
OPTION:  57 (  2) Maximum DHCP message size 576
OPTION:  55 (  4) Parameter Request List      1 (Subnet mask)
                          3 (Routers)
                         28 (Broadcast address)
                          6 (DNS server)

---------------------------------------------------------------------------

您可以将其与其他工具结合使用以进行DHCP请求,或者仅用于监视PC /设备查询DHCP。


2
也可通过macOS使用brew install dhcpdump
fifi finance

这似乎仅在网络上存在实际的dhcp通信时才起作用。
mivk

@mivk你是认真的吗?
肯·夏普

2
@KenSharp为什么?是。仅当网络上的客户端请求dhcp地址时,dhcpdump才会显示某些内容。如果您不想等待,也不想自己发送dhcp请求,但是只看到哪一台计算机将在有请求的情况下回答什么,那么这不是解决方案。
mivk

@mivk为什么?因为发帖人就是这么说的。
邓肯X辛普森



4

为什么不仅仅发出DHCP请求?

dhclient

对于详细输出,请使用:

dhclient -v


14
可能是因为这将使您的系统使用 DHCP服务器分配的IP,这在尝试例如查找网络中是否存在恶意DHCP服务器时不是您想要的IP。
ThiefMaster 2012年

6
-n选项在这里有帮助吗?
akostadinov

1
-n在Ubuntu 14 LTS上的ISC DHCP客户端v4.2.4上,选项似乎已损坏?
Josip Rodin

我认为-n您没有做。
Jasen

describeshell.com/explain?cmd=dhclient+-n:“不要配置任何接口。与-w标志结合使用时,这很有用。”
mwfearnley


1

在Debian-Ubuntu系统上:

dhcpd -f

提供良好的反馈并测试配置。

在RH系统上,请尝试:

/etc/rc.d/init.d/dhcpd configtest

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.