用于测试 DHCP 服务的命令行程序

puf*_*ish 66 dhcp linux ubuntu

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

miv*_*ivk 76

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

sudo nmap --script broadcast-dhcp-discover
Run Code Online (Sandbox Code Playgroud)

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

或者这个输出在不同的网络上,使用 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
Run Code Online (Sandbox Code Playgroud)

  • 请注意,[此脚本](https://github.com/nmap/nmap/blob/master/scripts/broadcast-dhcp-discover.nse) 使用固定的 MAC 地址 (`DE:AD:CO:DE:CA: FE`),因此如果您的 DHCP 服务器配置了白名单,它将无法工作。 (2认同)

san*_*doz 14

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

./check_dhcp -v -s <dhcp_server_address> -r <expected_ip_address> -m <mac_address_touse>
Run Code Online (Sandbox Code Playgroud)


Pau*_*l M 12

或者您可以dhcpcd在测试模式下尝试:

dhcpcd -T eth0
Run Code Online (Sandbox Code Playgroud)


Cra*_*een 9

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)

---------------------------------------------------------------------------
Run Code Online (Sandbox Code Playgroud)

您可以将它与其他工具结合使用来执行 DHCP 请求,或者仅使用它来查看 PC/设备查询 DHCP。

  • 也可通过“brew install dhcpdump”用于 macOS。 (2认同)
  • @KenSharp 为什么?是的。dhcpdump 只会在网络上的客户端请求 dhcp 地址时显示一些内容。如果您不想等待并且不想自己发送 dhcp 请求,而只想查看如果有请求,哪台机器会回答什么,那么这不是解决方案。 (2认同)

Sir*_*rex 6

为什么不直接发出 DHCP 请求?

dhclient
Run Code Online (Sandbox Code Playgroud)

对于详细输出使用:

dhclient -v

  • 可能是因为这将使您的系统*使用* DHCP 服务器分配的IP,这在例如试图找出他的网络中是否存在流氓DHCP 服务器时并不是人们想要的。 (18认同)
  • -n 选项在这里有帮助吗? (6认同)
  • 我不认为“-n”会做你认为的那样。 (2认同)

Vla*_*eev 6

我前段时间写了一个 DHCP 测试客户端程序,适用于 Windows 和 POSIX:

https://github.com/Cyber​​Shadow/dhcptest


小智 5

有一个程序叫dhcping(只有一个p)