Posts: 3
Joined: Tue Jun 18, 2019 4:12 pm

Pi DHCPd not serving addresses in my defined scope

Tue Jun 18, 2019 11:14 pm

My goal is to serve dhcp addresses in place of my router's dhcp because a recent firmware update on the router reduced my subnet range from 0/22 to 0/24 and I really needed the range of 0/22.

Range -
DNS servers;;

To make connecting it to the internet for occasional updates, I configured dhcpcd to initially search for DHCP and if none it falls back to a static IP that I want for the DHCP server of; all my static & preassigned IP's will be in the - 100 range.

Everything I desire works up to this point. It auto DHCPs when connected to an internet connection. When not it auto configures my eth0 to the settings. For whatever reason though, when I connect a device to the switch and it receives its DHCP assignment, I get IP addresses in the range, starting with, and I'm honestly unsure what to check after checking all these other file configurations.

Pi OS version info:

Code: Select all

Static hostname: raspberrypi
         Icon name: computer
        Machine ID: 145e65ea566e48xxxxx2f16bc52c1dbf
           Boot ID: 58bfe4d7978e4569xxxxx284f389a2ff
  Operating System: Raspbian GNU/Linux 9 (stretch)
            Kernel: Linux 4.19.42-v7+
      Architecture: arm
Services running:

Code: Select all

[email protected]:~ $ sudo service --status-all
 [ - ]  alsa-utils
 [ + ]  avahi-daemon
 [ - ]  bluetooth
 [ - ]  console-setup.sh
 [ + ]  cron
 [ + ]  dbus
 [ + ]  dhcpcd
 [ + ]  dphys-swapfile
 [ + ]  fake-hwclock
 [ - ]  hwclock.sh
 [ + ]  isc-dhcp-server
 [ - ]  keyboard-setup.sh
 [ + ]  kmod
 [ + ]  lightdm
 [ - ]  networking
 [ - ]  nfs-common
 [ + ]  ntp
 [ - ]  paxctld
 [ - ]  plymouth
 [ - ]  plymouth-log
 [ + ]  procps
 [ + ]  raspi-config
 [ ? ]  rng-tools
 [ - ]  rpcbind
 [ - ]  rsync
 [ + ]  rsyslog
 [ - ]  selinux-autorelabel
 [ - ]  ssh
 [ - ]  sudo
 [ + ]  triggerhappy
 [ + ]  udev
 [ - ]  x11-common

My /etc/default/isc-dhcp-server file content:

Code: Select all

# Defaults for isc-dhcp-server (sourced by /etc/init.d/isc-dhcp-server)

# Path to dhcpd's config file (default: /etc/dhcp/dhcpd.conf).

# Path to dhcpd's PID file (default: /var/run/dhcpd.pid).

# Additional options to start dhcpd with.
#	Don't use options -cf or -pf here; use DHCPD_CONF/ DHCPD_PID instead

# On what interfaces should the DHCP server (dhcpd) serve DHCP requests?
#	Separate multiple interfaces with spaces, e.g. "eth0 eth1".

Interfaces file:

Code: Select all

# interfaces(5) file used by ifup(8) and ifdown(8)

# Please note that this file is written to be used with dhcpcd
# For static IP, consult /etc/dhcpcd.conf and 'man dhcpcd.conf'

# Include files from /etc/network/interfaces.d:
source-directory /etc/network/interfaces.d

auto lo
iface lo inet loopback

auto eth0

dhcpcd.conf file:

Code: Select all

# A sample configuration for dhcpcd.
# See dhcpcd.conf(5) for details.

# Allow users of this group to interact with dhcpcd via the control socket.
#controlgroup wheel

# Inform the DHCP server of our hostname for DDNS.

# Use the hardware address of the interface for the Client ID.
# or
# Use the same DUID + IAID as set in DHCPv6 for DHCPv4 ClientID as per RFC4361.
# Some non-RFC compliant DHCP servers do not reply with this set.
# In this case, comment out duid and enable clientid above.

# Persist interface configuration when dhcpcd exits.

# Rapid commit support.
# Safe to enable by default because it requires the equivalent option set
# on the server to actually work.
option rapid_commit

# A list of options to request from the DHCP server.
option domain_name_servers, domain_name, domain_search, host_name
option classless_static_routes
# Most distributions have NTP support.
option ntp_servers
# Respect the network MTU. This is applied to DHCP routes.
option interface_mtu

# A ServerID is required by RFC2131.
require dhcp_server_identifier

# Generate Stable Private IPv6 Addresses instead of hardware based ones
slaac private

# Example static IP configuration:
#interface eth0
#static ip_address=
#static ip6_address=fd51:42f8:caae:d92e::ff/64
#static routers=
#static domain_name_servers= fd51:42f8:caae:d92e::1

# It is possible to fall back to a static IP if DHCP fails:
# define static profile
profile nodhcp
static ip_address=
static routers=
static domain_name_servers=

# fallback to static profile on eth0
interface eth0 
fallback nodhcp

DCHPD.conf file:

Code: Select all

# dhcpd.conf
# Sample configuration file for ISC dhcpd

# option definitions common to all supported networks...
option domain-name "example.org";
option domain-name-servers ns1.example.org, ns2.example.org;

default-lease-time 1200;
max-lease-time 1800;

# The ddns-updates-style parameter controls whether or not the server will
# attempt to do a DNS update when a lease is confirmed. We default to the
# behavior of the version 2 packages ('none', since DHCP v2 didn't
# have support for DDNS.)
ddns-update-style none;

# If this DHCP server is the official DHCP server for the local
# network, the authoritative directive should be uncommented.

# Use this to send dhcp log messages to a different log file (you also
# have to hack syslog.conf to complete the redirection).
log-facility local7;

# No service will be given on this subnet, but declaring it helps the 
# DHCP server to understand the network topology.

subnet netmask {

# This is a very basic subnet declaration.

subnet netmask {
  option routers;
  option broadcast-address;

# This declaration allows BOOTP clients to get dynamic addresses,
# which we don't really recommend.

#subnet netmask {
#  range dynamic-bootp;
#  option broadcast-address;
#  option routers rtr-239-32-1.example.org;

# A slightly different configuration for an internal subnet.
#subnet netmask {
#  range;
#  option domain-name-servers ns1.internal.example.org;
#  option domain-name "internal.example.org";
#  option routers;
#  option broadcast-address;
#  default-lease-time 600;
#  max-lease-time 7200;

# Hosts which require special configuration options can be listed in
# host statements.   If no address is specified, the address will be
# allocated dynamically (if possible), but the host-specific information
# will still come from the host declaration.

#host passacaglia {
#  hardware ethernet 0:0:c0:5d:bd:95;
#  filename "vmunix.passacaglia";
#  server-name "toccata.example.com";

# Fixed IP addresses can also be specified for hosts.   These addresses
# should not also be listed as being available for dynamic assignment.
# Hosts for which fixed IP addresses have been specified can boot using
# BOOTP or DHCP.   Hosts for which no fixed address is specified can only
# be booted with DHCP, unless there is an address range on the subnet
# to which a BOOTP client is connected which has the dynamic-bootp flag
# set.
#host fantasia {
#  hardware ethernet 08:00:07:26:c0:a5;
#  fixed-address fantasia.example.com;

# You can declare a class of clients and then do address allocation
# based on that.   The example below shows a case where all clients
# in a certain class get addresses on the 10.17.224/24 subnet, and all
# other clients get addresses on the 10.0.29/24 subnet.

#class "foo" {
#  match if substring (option vendor-class-identifier, 0, 4) = "SUNW";

#shared-network 224-29 {
#  subnet netmask {
#    option routers rtr-224.example.org;
#  }
#  subnet netmask {
#    option routers rtr-29.example.org;
#  }
#  pool {
#    allow members of "foo";
#    range;
#  }
#  pool {
#    deny members of "foo";
#    range;
#  }

Posts: 3
Joined: Tue Jun 18, 2019 4:12 pm

Re: Pi DHCPd not serving addresses in my defined scope

Wed Jun 19, 2019 7:14 pm

I want to post the solution as I discovered it last night after posting this question.

There isn't a thing wrong with my server configuration and it is operating exactly how I asked it to operate.

ALWAYS be sure you check the device you're connecting to test with -- particularly if the interface you're using to test is using a static address.

Posts: 3376
Joined: Sat Jun 16, 2018 12:49 am
Location: Lincs U.K.

Re: Pi DHCPd not serving addresses in my defined scope

Wed Jun 19, 2019 7:47 pm

Glad you got it solved even if it was a PICNIC error.

Been there, done that, got the shirt...
Need Pi spray - these things are breeding in my house...

Return to “Networking and servers”