dwbunger78
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.

Subnet 192.168.0.0/22
Range 192.168.1.1 - 192.168.3.250
Router 192.168.0.1
WAP 192.168.0.2
Broadcast 192.168.3.255
DNS servers 8.8.8.8; 8.8.4.4;

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 192.168.0.4; all my static & preassigned IP's will be in the 192.168.0.1 - 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 192.168.0.4/22 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 10.10.0.0/22 range, starting with 10.10.0.10, 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).
DHCPDv4_CONF=/etc/dhcp/dhcpd.conf
#DHCPDv6_CONF=/etc/dhcp/dhcpd6.conf

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

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

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

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.
hostname

# Use the hardware address of the interface for the Client ID.
clientid
# 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.
#duid

# Persist interface configuration when dhcpcd exits.
persistent

# 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=192.168.0.10/24
#static ip6_address=fd51:42f8:caae:d92e::ff/64
#static routers=192.168.0.1
#static domain_name_servers=192.168.0.1 8.8.8.8 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=192.168.0.4/22
static routers=192.168.0.1
static domain_name_servers=192.168.0.4

# fallback to static profile on eth0
interface eth0 
ipv4only
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.
authoritative;

# 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 10.152.187.0 netmask 255.255.255.0 {
}

# This is a very basic subnet declaration.

subnet 192.168.0.0 netmask 255.255.252.0 {
  range 192.168.1.1 192.168.3.250;
  option routers 192.168.0.1;
  option broadcast-address 192.168.3.255;
}

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

#subnet 10.254.239.32 netmask 255.255.255.224 {
#  range dynamic-bootp 10.254.239.40 10.254.239.60;
#  option broadcast-address 10.254.239.31;
#  option routers rtr-239-32-1.example.org;
#}

# A slightly different configuration for an internal subnet.
#subnet 10.5.5.0 netmask 255.255.255.224 {
#  range 10.5.5.26 10.5.5.30;
#  option domain-name-servers ns1.internal.example.org;
#  option domain-name "internal.example.org";
#  option routers 10.5.5.1;
#  option broadcast-address 10.5.5.31;
#  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 10.17.224.0 netmask 255.255.255.0 {
#    option routers rtr-224.example.org;
#  }
#  subnet 10.0.29.0 netmask 255.255.255.0 {
#    option routers rtr-29.example.org;
#  }
#  pool {
#    allow members of "foo";
#    range 10.17.224.10 10.17.224.250;
#  }
#  pool {
#    deny members of "foo";
#    range 10.0.29.10 10.0.29.230;
#  }
#}

dwbunger78
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.

Andyroo
Posts: 3768
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”