Is there a simple ping-like command to test whether a DHCP service is running on a network? ...on Linux
9 Answers
Based on this answer, assuming you have installed nmap (sudo apt install nmap
):
sudo nmap --script broadcast-dhcp-discover
Add the -e $interface
option if you have more than one network interface. (For example: nmap --script broadcast-dhcp-discover -e eth0
)
Sample output:
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
Or this output on a different network, with 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

- 4,004
- 3
- 37
- 32
-
this didn't find my DHCP server.- must be something wrong with my pc... ethernet works, just not that. – Jasen Nov 22 '17 at 23:27
-
4Note that [this script](https://github.com/nmap/nmap/blob/master/scripts/broadcast-dhcp-discover.nse) uses a fixed MAC address (`DE:AD:CO:DE:CA:FE`) and therefore will not work if your DHCP server is configured with a whitelist. – Bob Oct 08 '19 at 05:27
-
1@Bob An option has been added. `--script-args mac=XX:XX:XX:XX:XX:XX`. It hasn't been released yet though. – Aleksandr Dubinsky Aug 14 '20 at 08:25
Even if you don't use a Nagios monitoring server, you can grep the check_dhcp binary or compile it from source and use the check to test a DHCP-Server. E.g.
./check_dhcp -v -s <dhcp_server_address> -r <expected_ip_address> -m <mac_address_touse>

- 518
- 1
- 4
- 7
-
1
-
Could you please expand on why should this command detect DHCP servers on your network and what kind of output should we expect when someone will be detected? – Sopalajo de Arrierez May 29 '20 at 19:30
-
a dhcp server needs to see a packet on the network from a host requesting a dhcp configuration message. therefore we need to mimic a dhcp request,, and this tool will do that and print the response, which will be an ip address, netwmask, default router, and optionally dns resolvers, ntp servers etc. – Paul M Jun 22 '20 at 14:28
-
not all distros seem to have the dhcpcd program, so you'll have to try the dhclient program in test mode, as discussed elsewhere on this page. – Paul M Dec 11 '20 at 14:03
dhcpdump
is good for sniffing and displaying DHCP packets on the network.
E.g.
# 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)
---------------------------------------------------------------------------
You can use it in conjunction with another tool to do DHCP requests, or just use it to watch PCs/devices query DHCP.

- 780
- 7
- 20
-
2
-
1This seems to only only work if there is actual dhcp traffic on the network. – mivk Sep 27 '17 at 15:51
-
3@KenSharp Why? Yes. dhcpdump will only show something when a client on the network requests a dhcp address. If you don't want to wait and don't want to send a dhcp request yourself but only see which machine would answer what IF there were a request, then this is not the solution. – mivk Feb 26 '18 at 15:49
Why not just make a DHCP request?
dhclient
For verbose output use:
dhclient -v
-
24Probably because that will make your system *use* the IP assigned by the DHCP server which is not what one wants when e.g. trying to find out if there are rogue DHCP servers in his network. – ThiefMaster Jun 09 '12 at 18:54
-
6
-
1Option `-n` seems to be broken on ISC DHCP Client v4.2.4 on Ubuntu 14 LTS? – Josip Rodin Apr 15 '16 at 14:33
-
2
-
https://explainshell.com/explain?cmd=dhclient+-n: "Do not configure any interfaces. This is most likely to be useful in combination with the -w flag." – mwfearnley Jan 28 '19 at 12:22
I wrote a DHCP test client program a while ago, works on Windows and POSIX:

- 1,737
- 5
- 20
- 34
-
Written in D... It seems possible (with `ldc2`) to get static binaries with `ldc2 -link-defaultlib-shared=false -static -L=-lphobos2-ldc -L=-lz dhcptest.d` – Gert van den Berg Oct 22 '18 at 07:27
On Debian-Ubuntu systems:
dhcpd -f
gives good feedback and tests the configuration.
On RH systems try:
/etc/rc.d/init.d/dhcpd configtest

- 490
- 4
- 9
-
That test is run on the dhcp server to check its configuration, it doesn't tell you if a device on the network will actually see a working server – Paul M May 30 '20 at 21:44